diff --git a/Telegram-iOS/Info.plist b/Telegram-iOS/Info.plist index 4cd5288838..9d42ba6330 100644 --- a/Telegram-iOS/Info.plist +++ b/Telegram-iOS/Info.plist @@ -86,88 +86,88 @@ - CFBundleIcons~ipad - - CFBundleAlternateIcons - - Black - - CFBundleIconFiles - - BlackIconIpad - BlackIconLargeIpad - - UIPrerenderedIcon - - - BlackClassic - - CFBundleIconFiles - - BlackClassicIconIpad - BlackClassicIconLargeIpad - - UIPrerenderedIcon - - - BlackFilled - - CFBundleIconFiles - - BlackFilledIconIpad - BlackFilledIconLargeIpad - - UIPrerenderedIcon - - - Blue - - CFBundleIconFiles - - BlueIconIpad - BlueIconLargeIpad - - UIPrerenderedIcon - - - BlueClassic - - CFBundleIconFiles - - BlueClassicIconIpad - BlueClassicIconLargeIpad - - UIPrerenderedIcon - - - BlueFilled - - CFBundleIconFiles - - BlueFilledIconIpad - BlueFilledIconLargeIpad - - UIPrerenderedIcon - - - WhiteFilled - - CFBundleIconFiles - - WhiteFilledIcon - - UIPrerenderedIcon - - - - CFBundlePrimaryIcon - - CFBundleIconName - AppIconLLC - UIPrerenderedIcon - - - + CFBundleIcons~ipad + + CFBundleAlternateIcons + + Black + + CFBundleIconFiles + + BlackIconIpad + BlackIconLargeIpad + + UIPrerenderedIcon + + + BlackClassic + + CFBundleIconFiles + + BlackClassicIconIpad + BlackClassicIconLargeIpad + + UIPrerenderedIcon + + + BlackFilled + + CFBundleIconFiles + + BlackFilledIconIpad + BlackFilledIconLargeIpad + + UIPrerenderedIcon + + + Blue + + CFBundleIconFiles + + BlueIconIpad + BlueIconLargeIpad + + UIPrerenderedIcon + + + BlueClassic + + CFBundleIconFiles + + BlueClassicIconIpad + BlueClassicIconLargeIpad + + UIPrerenderedIcon + + + BlueFilled + + CFBundleIconFiles + + BlueFilledIconIpad + BlueFilledIconLargeIpad + + UIPrerenderedIcon + + + WhiteFilled + + CFBundleIconFiles + + WhiteFilledIcon + + UIPrerenderedIcon + + + + CFBundlePrimaryIcon + + CFBundleIconName + AppIconLLC + UIPrerenderedIcon + + + CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion @@ -280,6 +280,7 @@ NSUserActivityTypes INSendMessageIntent + RemindAboutChatIntent UIAppFonts diff --git a/Telegram-iOS/en.lproj/Localizable.strings b/Telegram-iOS/en.lproj/Localizable.strings index ef8337e795..471ae87449 100644 --- a/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram-iOS/en.lproj/Localizable.strings @@ -4454,3 +4454,7 @@ Any member of this group will be able to see messages in the channel."; "CreateGroup.ErrorLocatedGroupsTooMuch" = "Sorry, you have too many location-based groups already. Please delete one of your existing ones first."; "GroupInfo.LabelOwner" = "owner"; + +"Activity.RemindAboutGroup" = "Send message to %@"; +"Activity.RemindAboutUser" = "Send message to %@"; +"Activity.RemindAboutChannel" = "Read %@"; diff --git a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift index 4ed1bd9129..ad36131c21 100644 --- a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift +++ b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift @@ -1262,3174 +1262,3183 @@ public final class PresentationStrings { public var SettingsSearch_Synonyms_Support: String { return self._s[1004]! } public var GroupInfo_GroupHistoryHidden: String { return self._s[1005]! } public var SocksProxySetup_Secret: String { return self._s[1006]! } - public var Channel_BanList_RestrictedTitle: String { return self._s[1008]! } - public var Conversation_Location: String { return self._s[1009]! } + public func Activity_RemindAboutChannel(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1007]!, self._r[1007]!, [_0]) + } + public var Channel_BanList_RestrictedTitle: String { return self._s[1009]! } + public var Conversation_Location: String { return self._s[1010]! } public func AutoDownloadSettings_UpToFor(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1010]!, self._r[1010]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1011]!, self._r[1011]!, [_1, _2]) } - public var ChatSettings_AutoDownloadPhotos: String { return self._s[1012]! } - public var SettingsSearch_Synonyms_Privacy_Title: String { return self._s[1013]! } - public var Notifications_PermissionsText: String { return self._s[1014]! } - public var SettingsSearch_Synonyms_Data_SaveIncomingPhotos: String { return self._s[1015]! } - public var Call_Flip: String { return self._s[1016]! } - public var SocksProxySetup_ProxyStatusConnecting: String { return self._s[1017]! } - public var Channel_EditAdmin_PermissionPinMessages: String { return self._s[1019]! } - public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[1021]! } - public var Passport_DeletePassportConfirmation: String { return self._s[1023]! } - public var Login_InvalidCodeError: String { return self._s[1024]! } - public var StickerPacksSettings_FeaturedPacks: String { return self._s[1025]! } + public var ChatSettings_AutoDownloadPhotos: String { return self._s[1013]! } + public var SettingsSearch_Synonyms_Privacy_Title: String { return self._s[1014]! } + public var Notifications_PermissionsText: String { return self._s[1015]! } + public var SettingsSearch_Synonyms_Data_SaveIncomingPhotos: String { return self._s[1016]! } + public var Call_Flip: String { return self._s[1017]! } + public var SocksProxySetup_ProxyStatusConnecting: String { return self._s[1018]! } + public var Channel_EditAdmin_PermissionPinMessages: String { return self._s[1020]! } + public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[1022]! } + public var Passport_DeletePassportConfirmation: String { return self._s[1024]! } + public var Login_InvalidCodeError: String { return self._s[1025]! } + public var StickerPacksSettings_FeaturedPacks: String { return self._s[1026]! } public func ChatList_DeleteSecretChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1026]!, self._r[1026]!, [_0]) - } - public func GroupInfo_InvitationLinkAcceptChannel(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1027]!, self._r[1027]!, [_0]) } - public var Call_CallInProgressTitle: String { return self._s[1028]! } - public var Month_ShortSeptember: String { return self._s[1029]! } - public var Watch_ChannelInfo_Title: String { return self._s[1030]! } - public var ChatList_DeleteSavedMessagesConfirmation: String { return self._s[1033]! } - public var DialogList_PasscodeLockHelp: String { return self._s[1034]! } - public var Notifications_Badge_IncludePublicGroups: String { return self._s[1035]! } - public var Channel_AdminLogFilter_EventsTitle: String { return self._s[1036]! } - public var PhotoEditor_CropReset: String { return self._s[1037]! } - public var Group_Username_CreatePrivateLinkHelp: String { return self._s[1039]! } - public var Channel_Management_LabelEditor: String { return self._s[1040]! } - public var Passport_Identity_LatinNameHelp: String { return self._s[1042]! } - public var PhotoEditor_HighlightsTool: String { return self._s[1043]! } - public var UserInfo_Title: String { return self._s[1044]! } - public var ChatList_HideAction: String { return self._s[1045]! } - public var AccessDenied_Title: String { return self._s[1046]! } - public var DialogList_SearchLabel: String { return self._s[1047]! } - public var Group_Setup_HistoryHidden: String { return self._s[1048]! } - public var TwoStepAuth_PasswordChangeSuccess: String { return self._s[1049]! } - public var State_Updating: String { return self._s[1051]! } - public var Contacts_TabTitle: String { return self._s[1052]! } - public var Notifications_Badge_CountUnreadMessages: String { return self._s[1054]! } - public var GroupInfo_GroupHistory: String { return self._s[1055]! } - public var Conversation_UnsupportedMediaPlaceholder: String { return self._s[1056]! } - public var Wallpaper_SetColor: String { return self._s[1057]! } - public var CheckoutInfo_ShippingInfoCountry: String { return self._s[1058]! } - public var SettingsSearch_Synonyms_SavedMessages: String { return self._s[1059]! } - public var Passport_Identity_OneOfTypeDriversLicense: String { return self._s[1060]! } - public var Contacts_NotRegisteredSection: String { return self._s[1061]! } + public func GroupInfo_InvitationLinkAcceptChannel(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1028]!, self._r[1028]!, [_0]) + } + public var Call_CallInProgressTitle: String { return self._s[1029]! } + public var Month_ShortSeptember: String { return self._s[1030]! } + public var Watch_ChannelInfo_Title: String { return self._s[1031]! } + public var ChatList_DeleteSavedMessagesConfirmation: String { return self._s[1034]! } + public var DialogList_PasscodeLockHelp: String { return self._s[1035]! } + public var Notifications_Badge_IncludePublicGroups: String { return self._s[1036]! } + public var Channel_AdminLogFilter_EventsTitle: String { return self._s[1037]! } + public var PhotoEditor_CropReset: String { return self._s[1038]! } + public var Group_Username_CreatePrivateLinkHelp: String { return self._s[1040]! } + public var Channel_Management_LabelEditor: String { return self._s[1041]! } + public var Passport_Identity_LatinNameHelp: String { return self._s[1043]! } + public var PhotoEditor_HighlightsTool: String { return self._s[1044]! } + public var UserInfo_Title: String { return self._s[1045]! } + public var ChatList_HideAction: String { return self._s[1046]! } + public var AccessDenied_Title: String { return self._s[1047]! } + public var DialogList_SearchLabel: String { return self._s[1048]! } + public var Group_Setup_HistoryHidden: String { return self._s[1049]! } + public var TwoStepAuth_PasswordChangeSuccess: String { return self._s[1050]! } + public var State_Updating: String { return self._s[1052]! } + public var Contacts_TabTitle: String { return self._s[1053]! } + public var Notifications_Badge_CountUnreadMessages: String { return self._s[1055]! } + public var GroupInfo_GroupHistory: String { return self._s[1056]! } + public var Conversation_UnsupportedMediaPlaceholder: String { return self._s[1057]! } + public var Wallpaper_SetColor: String { return self._s[1058]! } + public var CheckoutInfo_ShippingInfoCountry: String { return self._s[1059]! } + public var SettingsSearch_Synonyms_SavedMessages: String { return self._s[1060]! } + public var Passport_Identity_OneOfTypeDriversLicense: String { return self._s[1061]! } + public var Contacts_NotRegisteredSection: String { return self._s[1062]! } public func Time_PreciseDate_m4(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1062]!, self._r[1062]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1063]!, self._r[1063]!, [_1, _2, _3]) } - public var Paint_Clear: String { return self._s[1063]! } - public var StickerPacksSettings_ArchivedMasks: String { return self._s[1064]! } - public var SocksProxySetup_Connecting: String { return self._s[1065]! } - public var ExplicitContent_AlertChannel: String { return self._s[1066]! } - public var CreatePoll_AllOptionsAdded: String { return self._s[1067]! } - public var Conversation_Contact: String { return self._s[1068]! } - public var Login_CodeExpired: String { return self._s[1069]! } - public var Passport_DiscardMessageAction: String { return self._s[1070]! } - public var Channel_AdminLog_MessagePreviousDescription: String { return self._s[1071]! } - public var Channel_AdminLog_EmptyMessageText: String { return self._s[1072]! } - public var SettingsSearch_Synonyms_Data_NetworkUsage: String { return self._s[1073]! } - public var Month_ShortApril: String { return self._s[1074]! } - public var AuthSessions_CurrentSession: String { return self._s[1075]! } - public var WallpaperPreview_CropTopText: String { return self._s[1079]! } - public var PrivacySettings_DeleteAccountIfAwayFor: String { return self._s[1080]! } - public var CheckoutInfo_ShippingInfoTitle: String { return self._s[1081]! } - public var Channel_Setup_TypePrivate: String { return self._s[1083]! } - public var Forward_ChannelReadOnly: String { return self._s[1086]! } - public var PhotoEditor_CurvesBlue: String { return self._s[1087]! } - public var AddContact_SharedContactException: String { return self._s[1088]! } - public var UserInfo_BotPrivacy: String { return self._s[1089]! } - public var Notification_PassportValueEmail: String { return self._s[1090]! } - public var EmptyGroupInfo_Subtitle: String { return self._s[1091]! } - public var GroupPermission_NewTitle: String { return self._s[1092]! } - public var CallFeedback_ReasonDropped: String { return self._s[1093]! } - public var GroupInfo_Permissions_AddException: String { return self._s[1094]! } - public var Channel_SignMessages_Help: String { return self._s[1096]! } - public var Undo_ChatDeleted: String { return self._s[1098]! } - public var Conversation_ChatBackground: String { return self._s[1099]! } - public var ChannelMembers_WhoCanAddMembers_Admins: String { return self._s[1100]! } - public var FastTwoStepSetup_EmailPlaceholder: String { return self._s[1101]! } - public var Passport_Language_pt: String { return self._s[1102]! } - public var NotificationsSound_Popcorn: String { return self._s[1105]! } - public var AutoNightTheme_Disabled: String { return self._s[1106]! } - public var BlockedUsers_LeavePrefix: String { return self._s[1107]! } - public var WallpaperPreview_CustomColorTopText: String { return self._s[1108]! } - public var Contacts_PermissionsSuppressWarningText: String { return self._s[1109]! } - public var WallpaperSearch_ColorBlue: String { return self._s[1110]! } + public var Paint_Clear: String { return self._s[1064]! } + public var StickerPacksSettings_ArchivedMasks: String { return self._s[1065]! } + public var SocksProxySetup_Connecting: String { return self._s[1066]! } + public var ExplicitContent_AlertChannel: String { return self._s[1067]! } + public var CreatePoll_AllOptionsAdded: String { return self._s[1068]! } + public var Conversation_Contact: String { return self._s[1069]! } + public var Login_CodeExpired: String { return self._s[1070]! } + public var Passport_DiscardMessageAction: String { return self._s[1071]! } + public var Channel_AdminLog_MessagePreviousDescription: String { return self._s[1072]! } + public var Channel_AdminLog_EmptyMessageText: String { return self._s[1073]! } + public var SettingsSearch_Synonyms_Data_NetworkUsage: String { return self._s[1074]! } + public var Month_ShortApril: String { return self._s[1075]! } + public var AuthSessions_CurrentSession: String { return self._s[1076]! } + public var WallpaperPreview_CropTopText: String { return self._s[1080]! } + public var PrivacySettings_DeleteAccountIfAwayFor: String { return self._s[1081]! } + public var CheckoutInfo_ShippingInfoTitle: String { return self._s[1082]! } + public var Channel_Setup_TypePrivate: String { return self._s[1084]! } + public var Forward_ChannelReadOnly: String { return self._s[1087]! } + public var PhotoEditor_CurvesBlue: String { return self._s[1088]! } + public var AddContact_SharedContactException: String { return self._s[1089]! } + public var UserInfo_BotPrivacy: String { return self._s[1090]! } + public var Notification_PassportValueEmail: String { return self._s[1091]! } + public var EmptyGroupInfo_Subtitle: String { return self._s[1092]! } + public var GroupPermission_NewTitle: String { return self._s[1093]! } + public var CallFeedback_ReasonDropped: String { return self._s[1094]! } + public var GroupInfo_Permissions_AddException: String { return self._s[1095]! } + public var Channel_SignMessages_Help: String { return self._s[1097]! } + public var Undo_ChatDeleted: String { return self._s[1099]! } + public var Conversation_ChatBackground: String { return self._s[1100]! } + public var ChannelMembers_WhoCanAddMembers_Admins: String { return self._s[1101]! } + public var FastTwoStepSetup_EmailPlaceholder: String { return self._s[1102]! } + public var Passport_Language_pt: String { return self._s[1103]! } + public var NotificationsSound_Popcorn: String { return self._s[1106]! } + public var AutoNightTheme_Disabled: String { return self._s[1107]! } + public var BlockedUsers_LeavePrefix: String { return self._s[1108]! } + public var WallpaperPreview_CustomColorTopText: String { return self._s[1109]! } + public var Contacts_PermissionsSuppressWarningText: String { return self._s[1110]! } + public var WallpaperSearch_ColorBlue: String { return self._s[1111]! } public func CancelResetAccount_TextSMS(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1111]!, self._r[1111]!, [_0]) + return formatWithArgumentRanges(self._s[1112]!, self._r[1112]!, [_0]) } - public var CheckoutInfo_ErrorNameInvalid: String { return self._s[1112]! } - public var SocksProxySetup_UseForCalls: String { return self._s[1113]! } - public var Passport_DeleteDocumentConfirmation: String { return self._s[1115]! } + public var CheckoutInfo_ErrorNameInvalid: String { return self._s[1113]! } + public var SocksProxySetup_UseForCalls: String { return self._s[1114]! } + public var Passport_DeleteDocumentConfirmation: String { return self._s[1116]! } public func Conversation_Megabytes(_ _0: Float) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1116]!, self._r[1116]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[1117]!, self._r[1117]!, ["\(_0)"]) } - public var SocksProxySetup_Hostname: String { return self._s[1119]! } - public var ChatSettings_AutoDownloadSettings_OffForAll: String { return self._s[1120]! } - public var Compose_NewEncryptedChat: String { return self._s[1121]! } - public var Login_CodeFloodError: String { return self._s[1122]! } - public var Calls_TabTitle: String { return self._s[1123]! } - public var Privacy_ProfilePhoto: String { return self._s[1124]! } - public var Passport_Language_he: String { return self._s[1125]! } - public var GroupPermission_Title: String { return self._s[1126]! } + public var SocksProxySetup_Hostname: String { return self._s[1120]! } + public var ChatSettings_AutoDownloadSettings_OffForAll: String { return self._s[1121]! } + public var Compose_NewEncryptedChat: String { return self._s[1122]! } + public var Login_CodeFloodError: String { return self._s[1123]! } + public var Calls_TabTitle: String { return self._s[1124]! } + public var Privacy_ProfilePhoto: String { return self._s[1125]! } + public var Passport_Language_he: String { return self._s[1126]! } + public var GroupPermission_Title: String { return self._s[1127]! } public func Channel_AdminLog_MessageGroupPreHistoryHidden(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1127]!, self._r[1127]!, [_0]) + return formatWithArgumentRanges(self._s[1128]!, self._r[1128]!, [_0]) } - public var GroupPermission_NoChangeInfo: String { return self._s[1128]! } - public var ChatList_DeleteForCurrentUser: String { return self._s[1129]! } - public var Tour_Text1: String { return self._s[1130]! } - public var Channel_EditAdmin_TransferOwnership: String { return self._s[1131]! } - public var Month_ShortFebruary: String { return self._s[1132]! } - public var TwoStepAuth_EmailSkip: String { return self._s[1133]! } - public var NotificationsSound_Glass: String { return self._s[1134]! } - public var Appearance_ThemeNightBlue: String { return self._s[1135]! } - public var CheckoutInfo_Pay: String { return self._s[1136]! } - public var Invite_LargeRecipientsCountWarning: String { return self._s[1138]! } - public var Call_CallAgain: String { return self._s[1140]! } - public var AttachmentMenu_SendAsFile: String { return self._s[1141]! } - public var AccessDenied_MicrophoneRestricted: String { return self._s[1142]! } - public var Passport_InvalidPasswordError: String { return self._s[1143]! } - public var Watch_Message_Game: String { return self._s[1144]! } - public var Stickers_Install: String { return self._s[1145]! } - public var PrivacyLastSeenSettings_NeverShareWith: String { return self._s[1146]! } - public var Passport_Identity_ResidenceCountry: String { return self._s[1148]! } - public var Notifications_GroupNotificationsHelp: String { return self._s[1149]! } - public var AuthSessions_OtherSessions: String { return self._s[1150]! } - public var Channel_Username_Help: String { return self._s[1151]! } - public var Camera_Title: String { return self._s[1152]! } - public var GroupInfo_SetGroupPhotoDelete: String { return self._s[1154]! } - public var Privacy_ProfilePhoto_NeverShareWith_Title: String { return self._s[1155]! } - public var Channel_AdminLog_SendPolls: String { return self._s[1156]! } - public var Channel_AdminLog_TitleAllEvents: String { return self._s[1157]! } - public var Channel_EditAdmin_PermissionInviteMembers: String { return self._s[1158]! } - public var Contacts_MemberSearchSectionTitleGroup: String { return self._s[1159]! } - public var Conversation_RestrictedStickers: String { return self._s[1160]! } - public var Notifications_ExceptionsResetToDefaults: String { return self._s[1162]! } - public var UserInfo_TelegramCall: String { return self._s[1164]! } - public var TwoStepAuth_SetupResendEmailCode: String { return self._s[1165]! } - public var CreatePoll_OptionsHeader: String { return self._s[1166]! } - public var SettingsSearch_Synonyms_Data_CallsUseLessData: String { return self._s[1167]! } - public var ArchivedChats_IntroTitle1: String { return self._s[1168]! } - public var Privacy_GroupsAndChannels_AlwaysAllow_Title: String { return self._s[1169]! } - public var Passport_Identity_EditPersonalDetails: String { return self._s[1170]! } + public var GroupPermission_NoChangeInfo: String { return self._s[1129]! } + public var ChatList_DeleteForCurrentUser: String { return self._s[1130]! } + public var Tour_Text1: String { return self._s[1131]! } + public var Channel_EditAdmin_TransferOwnership: String { return self._s[1132]! } + public var Month_ShortFebruary: String { return self._s[1133]! } + public var TwoStepAuth_EmailSkip: String { return self._s[1134]! } + public var NotificationsSound_Glass: String { return self._s[1135]! } + public var Appearance_ThemeNightBlue: String { return self._s[1136]! } + public var CheckoutInfo_Pay: String { return self._s[1137]! } + public var Invite_LargeRecipientsCountWarning: String { return self._s[1139]! } + public var Call_CallAgain: String { return self._s[1141]! } + public var AttachmentMenu_SendAsFile: String { return self._s[1142]! } + public var AccessDenied_MicrophoneRestricted: String { return self._s[1143]! } + public var Passport_InvalidPasswordError: String { return self._s[1144]! } + public var Watch_Message_Game: String { return self._s[1145]! } + public var Stickers_Install: String { return self._s[1146]! } + public var PrivacyLastSeenSettings_NeverShareWith: String { return self._s[1147]! } + public var Passport_Identity_ResidenceCountry: String { return self._s[1149]! } + public var Notifications_GroupNotificationsHelp: String { return self._s[1150]! } + public var AuthSessions_OtherSessions: String { return self._s[1151]! } + public var Channel_Username_Help: String { return self._s[1152]! } + public var Camera_Title: String { return self._s[1153]! } + public var GroupInfo_SetGroupPhotoDelete: String { return self._s[1155]! } + public var Privacy_ProfilePhoto_NeverShareWith_Title: String { return self._s[1156]! } + public var Channel_AdminLog_SendPolls: String { return self._s[1157]! } + public var Channel_AdminLog_TitleAllEvents: String { return self._s[1158]! } + public var Channel_EditAdmin_PermissionInviteMembers: String { return self._s[1159]! } + public var Contacts_MemberSearchSectionTitleGroup: String { return self._s[1160]! } + public var Conversation_RestrictedStickers: String { return self._s[1161]! } + public var Notifications_ExceptionsResetToDefaults: String { return self._s[1163]! } + public var UserInfo_TelegramCall: String { return self._s[1165]! } + public var TwoStepAuth_SetupResendEmailCode: String { return self._s[1166]! } + public var CreatePoll_OptionsHeader: String { return self._s[1167]! } + public var SettingsSearch_Synonyms_Data_CallsUseLessData: String { return self._s[1168]! } + public var ArchivedChats_IntroTitle1: String { return self._s[1169]! } + public var Privacy_GroupsAndChannels_AlwaysAllow_Title: String { return self._s[1170]! } + public var Passport_Identity_EditPersonalDetails: String { return self._s[1171]! } public func Time_PreciseDate_m1(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1171]!, self._r[1171]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1172]!, self._r[1172]!, [_1, _2, _3]) } - public var Settings_SaveEditedPhotos: String { return self._s[1172]! } - public var TwoStepAuth_ConfirmationTitle: String { return self._s[1173]! } - public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[1174]! } - public var Conversation_MessageDialogRetry: String { return self._s[1175]! } - public var Conversation_DiscardVoiceMessageAction: String { return self._s[1176]! } - public var Permissions_PeopleNearbyTitle_v0: String { return self._s[1177]! } - public var Group_Setup_TypeHeader: String { return self._s[1178]! } - public var Paint_RecentStickers: String { return self._s[1179]! } - public var PhotoEditor_GrainTool: String { return self._s[1180]! } - public var CheckoutInfo_ShippingInfoState: String { return self._s[1181]! } - public var EmptyGroupInfo_Line4: String { return self._s[1182]! } - public var Watch_AuthRequired: String { return self._s[1184]! } + public var Settings_SaveEditedPhotos: String { return self._s[1173]! } + public var TwoStepAuth_ConfirmationTitle: String { return self._s[1174]! } + public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[1175]! } + public var Conversation_MessageDialogRetry: String { return self._s[1176]! } + public var Conversation_DiscardVoiceMessageAction: String { return self._s[1177]! } + public var Permissions_PeopleNearbyTitle_v0: String { return self._s[1178]! } + public var Group_Setup_TypeHeader: String { return self._s[1179]! } + public var Paint_RecentStickers: String { return self._s[1180]! } + public var PhotoEditor_GrainTool: String { return self._s[1181]! } + public var CheckoutInfo_ShippingInfoState: String { return self._s[1182]! } + public var EmptyGroupInfo_Line4: String { return self._s[1183]! } + public var Watch_AuthRequired: String { return self._s[1185]! } public func Passport_Email_UseTelegramEmail(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1185]!, self._r[1185]!, [_0]) + return formatWithArgumentRanges(self._s[1186]!, self._r[1186]!, [_0]) } - public var Conversation_EncryptedDescriptionTitle: String { return self._s[1186]! } - public var ChannelIntro_Text: String { return self._s[1187]! } - public var DialogList_DeleteBotConfirmation: String { return self._s[1188]! } - public var GroupPermission_NoSendMedia: String { return self._s[1189]! } - public var Calls_AddTab: String { return self._s[1190]! } - public var Message_ReplyActionButtonShowReceipt: String { return self._s[1191]! } - public var Channel_AdminLog_EmptyFilterText: String { return self._s[1192]! } - public var Notification_MessageLifetime1d: String { return self._s[1193]! } - public var Notifications_ChannelNotificationsExceptionsHelp: String { return self._s[1194]! } - public var Channel_BanUser_PermissionsHeader: String { return self._s[1195]! } - public var Passport_Identity_GenderFemale: String { return self._s[1196]! } - public var BlockedUsers_BlockTitle: String { return self._s[1197]! } + public var Conversation_EncryptedDescriptionTitle: String { return self._s[1187]! } + public var ChannelIntro_Text: String { return self._s[1188]! } + public var DialogList_DeleteBotConfirmation: String { return self._s[1189]! } + public var GroupPermission_NoSendMedia: String { return self._s[1190]! } + public var Calls_AddTab: String { return self._s[1191]! } + public var Message_ReplyActionButtonShowReceipt: String { return self._s[1192]! } + public var Channel_AdminLog_EmptyFilterText: String { return self._s[1193]! } + public var Notification_MessageLifetime1d: String { return self._s[1194]! } + public var Notifications_ChannelNotificationsExceptionsHelp: String { return self._s[1195]! } + public var Channel_BanUser_PermissionsHeader: String { return self._s[1196]! } + public var Passport_Identity_GenderFemale: String { return self._s[1197]! } + public var BlockedUsers_BlockTitle: String { return self._s[1198]! } public func PUSH_CHANNEL_MESSAGE_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1198]!, self._r[1198]!, [_1]) + return formatWithArgumentRanges(self._s[1199]!, self._r[1199]!, [_1]) } - public var Weekday_Yesterday: String { return self._s[1199]! } - public var WallpaperSearch_ColorBlack: String { return self._s[1200]! } - public var ChatList_ArchiveAction: String { return self._s[1201]! } - public var AutoNightTheme_Scheduled: String { return self._s[1202]! } + public var Weekday_Yesterday: String { return self._s[1200]! } + public var WallpaperSearch_ColorBlack: String { return self._s[1201]! } + public var ChatList_ArchiveAction: String { return self._s[1202]! } + public var AutoNightTheme_Scheduled: String { return self._s[1203]! } public func Login_PhoneGenericEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String, _ _6: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1203]!, self._r[1203]!, [_1, _2, _3, _4, _5, _6]) + return formatWithArgumentRanges(self._s[1204]!, self._r[1204]!, [_1, _2, _3, _4, _5, _6]) } - public var PrivacyPolicy_DeclineDeleteNow: String { return self._s[1204]! } + public var PrivacyPolicy_DeclineDeleteNow: String { return self._s[1205]! } public func PUSH_CHAT_JOINED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1205]!, self._r[1205]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1206]!, self._r[1206]!, [_1, _2]) } - public var CreatePoll_Create: String { return self._s[1206]! } - public var Channel_Members_AddBannedErrorAdmin: String { return self._s[1207]! } + public var CreatePoll_Create: String { return self._s[1207]! } + public var Channel_Members_AddBannedErrorAdmin: String { return self._s[1208]! } public func Notification_CallFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1208]!, self._r[1208]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1209]!, self._r[1209]!, [_1, _2]) } - public var Checkout_ErrorProviderAccountInvalid: String { return self._s[1209]! } - public var Notifications_InAppNotificationsSounds: String { return self._s[1211]! } + public var Checkout_ErrorProviderAccountInvalid: String { return self._s[1210]! } + public var Notifications_InAppNotificationsSounds: String { return self._s[1212]! } public func PUSH_PINNED_GAME_SCORE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1212]!, self._r[1212]!, [_1]) + return formatWithArgumentRanges(self._s[1213]!, self._r[1213]!, [_1]) } - public var Preview_OpenInInstagram: String { return self._s[1213]! } - public var Notification_MessageLifetimeRemovedOutgoing: String { return self._s[1214]! } + public var Preview_OpenInInstagram: String { return self._s[1214]! } + public var Notification_MessageLifetimeRemovedOutgoing: String { return self._s[1215]! } public func PUSH_CHAT_ADD_MEMBER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1215]!, self._r[1215]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1216]!, self._r[1216]!, [_1, _2, _3]) } public func Passport_PrivacyPolicy(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1216]!, self._r[1216]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1217]!, self._r[1217]!, [_1, _2]) } - public var Channel_AdminLog_InfoPanelAlertTitle: String { return self._s[1217]! } - public var ArchivedChats_IntroText3: String { return self._s[1218]! } - public var ChatList_UndoArchiveHiddenText: String { return self._s[1219]! } - public var NetworkUsageSettings_TotalSection: String { return self._s[1220]! } - public var Channel_Setup_TypePrivateHelp: String { return self._s[1221]! } + public var Channel_AdminLog_InfoPanelAlertTitle: String { return self._s[1218]! } + public var ArchivedChats_IntroText3: String { return self._s[1219]! } + public var ChatList_UndoArchiveHiddenText: String { return self._s[1220]! } + public var NetworkUsageSettings_TotalSection: String { return self._s[1221]! } + public var Channel_Setup_TypePrivateHelp: String { return self._s[1222]! } public func PUSH_CHAT_MESSAGE_POLL(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1222]!, self._r[1222]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1223]!, self._r[1223]!, [_1, _2, _3]) } - public var Privacy_GroupsAndChannels_NeverAllow_Placeholder: String { return self._s[1224]! } - public var FastTwoStepSetup_HintSection: String { return self._s[1225]! } - public var Wallpaper_PhotoLibrary: String { return self._s[1226]! } - public var TwoStepAuth_SetupResendEmailCodeAlert: String { return self._s[1227]! } - public var Gif_NoGifsFound: String { return self._s[1228]! } - public var Watch_LastSeen_WithinAMonth: String { return self._s[1229]! } - public var GroupInfo_ActionPromote: String { return self._s[1230]! } - public var PasscodeSettings_SimplePasscode: String { return self._s[1231]! } - public var GroupInfo_Permissions_Title: String { return self._s[1232]! } - public var Permissions_ContactsText_v0: String { return self._s[1233]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedPublicGroups: String { return self._s[1234]! } - public var PrivacySettings_DataSettingsHelp: String { return self._s[1237]! } - public var Passport_FieldEmailHelp: String { return self._s[1238]! } - public var Passport_Identity_GenderPlaceholder: String { return self._s[1239]! } - public var Weekday_ShortSaturday: String { return self._s[1240]! } - public var ContactInfo_PhoneLabelMain: String { return self._s[1241]! } - public var Watch_Conversation_UserInfo: String { return self._s[1242]! } - public var CheckoutInfo_ShippingInfoCityPlaceholder: String { return self._s[1243]! } - public var PrivacyLastSeenSettings_Title: String { return self._s[1244]! } - public var Conversation_ShareBotLocationConfirmation: String { return self._s[1245]! } - public var PhotoEditor_VignetteTool: String { return self._s[1246]! } - public var Passport_Address_Street1Placeholder: String { return self._s[1247]! } - public var Passport_Language_et: String { return self._s[1248]! } - public var AppUpgrade_Running: String { return self._s[1249]! } - public var Channel_DiscussionGroup_Info: String { return self._s[1251]! } - public var Passport_Language_bg: String { return self._s[1252]! } - public var Stickers_NoStickersFound: String { return self._s[1254]! } + public var Privacy_GroupsAndChannels_NeverAllow_Placeholder: String { return self._s[1225]! } + public var FastTwoStepSetup_HintSection: String { return self._s[1226]! } + public var Wallpaper_PhotoLibrary: String { return self._s[1227]! } + public var TwoStepAuth_SetupResendEmailCodeAlert: String { return self._s[1228]! } + public var Gif_NoGifsFound: String { return self._s[1229]! } + public var Watch_LastSeen_WithinAMonth: String { return self._s[1230]! } + public var GroupInfo_ActionPromote: String { return self._s[1231]! } + public var PasscodeSettings_SimplePasscode: String { return self._s[1232]! } + public var GroupInfo_Permissions_Title: String { return self._s[1233]! } + public var Permissions_ContactsText_v0: String { return self._s[1234]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedPublicGroups: String { return self._s[1235]! } + public var PrivacySettings_DataSettingsHelp: String { return self._s[1238]! } + public var Passport_FieldEmailHelp: String { return self._s[1239]! } + public func Activity_RemindAboutUser(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1240]!, self._r[1240]!, [_0]) + } + public var Passport_Identity_GenderPlaceholder: String { return self._s[1241]! } + public var Weekday_ShortSaturday: String { return self._s[1242]! } + public var ContactInfo_PhoneLabelMain: String { return self._s[1243]! } + public var Watch_Conversation_UserInfo: String { return self._s[1244]! } + public var CheckoutInfo_ShippingInfoCityPlaceholder: String { return self._s[1245]! } + public var PrivacyLastSeenSettings_Title: String { return self._s[1246]! } + public var Conversation_ShareBotLocationConfirmation: String { return self._s[1247]! } + public var PhotoEditor_VignetteTool: String { return self._s[1248]! } + public var Passport_Address_Street1Placeholder: String { return self._s[1249]! } + public var Passport_Language_et: String { return self._s[1250]! } + public var AppUpgrade_Running: String { return self._s[1251]! } + public var Channel_DiscussionGroup_Info: String { return self._s[1253]! } + public var Passport_Language_bg: String { return self._s[1254]! } + public var Stickers_NoStickersFound: String { return self._s[1256]! } public func PUSH_CHANNEL_MESSAGE_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1256]!, self._r[1256]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1258]!, self._r[1258]!, [_1, _2]) } - public var Settings_About: String { return self._s[1257]! } + public var Settings_About: String { return self._s[1259]! } public func Channel_AdminLog_MessageRestricted(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1258]!, self._r[1258]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[1260]!, self._r[1260]!, [_0, _1, _2]) } - public var KeyCommand_NewMessage: String { return self._s[1260]! } - public var Group_ErrorAddBlocked: String { return self._s[1261]! } + public var KeyCommand_NewMessage: String { return self._s[1262]! } + public var Group_ErrorAddBlocked: String { return self._s[1263]! } public func Message_PaymentSent(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1262]!, self._r[1262]!, [_0]) + return formatWithArgumentRanges(self._s[1264]!, self._r[1264]!, [_0]) } - public var Map_LocationTitle: String { return self._s[1263]! } - public var ReportGroupLocation_Title: String { return self._s[1264]! } - public var CallSettings_UseLessDataLongDescription: String { return self._s[1265]! } - public var Cache_ClearProgress: String { return self._s[1266]! } + public var Map_LocationTitle: String { return self._s[1265]! } + public var ReportGroupLocation_Title: String { return self._s[1266]! } + public var CallSettings_UseLessDataLongDescription: String { return self._s[1267]! } + public var Cache_ClearProgress: String { return self._s[1268]! } public func Channel_Management_ErrorNotMember(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1267]!, self._r[1267]!, [_0]) + return formatWithArgumentRanges(self._s[1269]!, self._r[1269]!, [_0]) } - public var GroupRemoved_AddToGroup: String { return self._s[1268]! } - public var Passport_UpdateRequiredError: String { return self._s[1269]! } + public var GroupRemoved_AddToGroup: String { return self._s[1270]! } + public var Passport_UpdateRequiredError: String { return self._s[1271]! } public func PUSH_MESSAGE_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1270]!, self._r[1270]!, [_1]) + return formatWithArgumentRanges(self._s[1272]!, self._r[1272]!, [_1]) } - public var Notifications_PermissionsSuppressWarningText: String { return self._s[1272]! } - public var Passport_Identity_MainPageHelp: String { return self._s[1273]! } - public var Conversation_StatusKickedFromGroup: String { return self._s[1274]! } - public var Passport_Language_ka: String { return self._s[1275]! } - public var Call_Decline: String { return self._s[1276]! } - public var SocksProxySetup_ProxyEnabled: String { return self._s[1277]! } + public var Notifications_PermissionsSuppressWarningText: String { return self._s[1274]! } + public var Passport_Identity_MainPageHelp: String { return self._s[1275]! } + public var Conversation_StatusKickedFromGroup: String { return self._s[1276]! } + public var Passport_Language_ka: String { return self._s[1277]! } + public var Call_Decline: String { return self._s[1278]! } + public var SocksProxySetup_ProxyEnabled: String { return self._s[1279]! } public func AuthCode_Alert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1280]!, self._r[1280]!, [_0]) + return formatWithArgumentRanges(self._s[1282]!, self._r[1282]!, [_0]) } - public var CallFeedback_Send: String { return self._s[1281]! } + public var CallFeedback_Send: String { return self._s[1283]! } public func Channel_AdminLog_MessagePromotedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1282]!, self._r[1282]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1284]!, self._r[1284]!, [_1, _2]) } - public var Passport_Phone_UseTelegramNumberHelp: String { return self._s[1283]! } - public var SettingsSearch_Synonyms_Data_Title: String { return self._s[1285]! } - public var Passport_DeletePassport: String { return self._s[1286]! } - public var Appearance_AppIconFilled: String { return self._s[1287]! } - public var Privacy_Calls_P2PAlways: String { return self._s[1288]! } - public var Month_ShortDecember: String { return self._s[1289]! } - public var Channel_AdminLog_CanEditMessages: String { return self._s[1291]! } + public var Passport_Phone_UseTelegramNumberHelp: String { return self._s[1285]! } + public var SettingsSearch_Synonyms_Data_Title: String { return self._s[1287]! } + public var Passport_DeletePassport: String { return self._s[1288]! } + public var Appearance_AppIconFilled: String { return self._s[1289]! } + public var Privacy_Calls_P2PAlways: String { return self._s[1290]! } + public var Month_ShortDecember: String { return self._s[1291]! } + public var Channel_AdminLog_CanEditMessages: String { return self._s[1293]! } public func Contacts_AccessDeniedHelpLandscape(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1292]!, self._r[1292]!, [_0]) + return formatWithArgumentRanges(self._s[1294]!, self._r[1294]!, [_0]) } - public var Channel_Stickers_Searching: String { return self._s[1293]! } - public var Conversation_EncryptedDescription1: String { return self._s[1294]! } - public var Conversation_EncryptedDescription2: String { return self._s[1295]! } - public var PasscodeSettings_PasscodeOptions: String { return self._s[1296]! } - public var Conversation_EncryptedDescription3: String { return self._s[1297]! } - public var PhotoEditor_SharpenTool: String { return self._s[1298]! } + public var Channel_Stickers_Searching: String { return self._s[1295]! } + public var Conversation_EncryptedDescription1: String { return self._s[1296]! } + public var Conversation_EncryptedDescription2: String { return self._s[1297]! } + public var PasscodeSettings_PasscodeOptions: String { return self._s[1298]! } + public var Conversation_EncryptedDescription3: String { return self._s[1299]! } + public var PhotoEditor_SharpenTool: String { return self._s[1300]! } public func Conversation_AddNameToContacts(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1299]!, self._r[1299]!, [_0]) + return formatWithArgumentRanges(self._s[1301]!, self._r[1301]!, [_0]) } - public var Conversation_EncryptedDescription4: String { return self._s[1301]! } - public var Channel_Members_AddMembers: String { return self._s[1302]! } - public var Wallpaper_Search: String { return self._s[1303]! } - public var Weekday_Friday: String { return self._s[1304]! } - public var Privacy_ContactsSync: String { return self._s[1305]! } - public var SettingsSearch_Synonyms_Privacy_Data_ContactsReset: String { return self._s[1306]! } - public var ApplyLanguage_ChangeLanguageAction: String { return self._s[1307]! } + public var Conversation_EncryptedDescription4: String { return self._s[1303]! } + public var Channel_Members_AddMembers: String { return self._s[1304]! } + public var Wallpaper_Search: String { return self._s[1305]! } + public var Weekday_Friday: String { return self._s[1306]! } + public var Privacy_ContactsSync: String { return self._s[1307]! } + public var SettingsSearch_Synonyms_Privacy_Data_ContactsReset: String { return self._s[1308]! } + public var ApplyLanguage_ChangeLanguageAction: String { return self._s[1309]! } public func Channel_Management_RestrictedBy(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1308]!, self._r[1308]!, [_0]) + return formatWithArgumentRanges(self._s[1310]!, self._r[1310]!, [_0]) } - public var GroupInfo_Permissions_Removed: String { return self._s[1309]! } - public var Passport_Identity_GenderMale: String { return self._s[1310]! } + public var GroupInfo_Permissions_Removed: String { return self._s[1311]! } + public var Passport_Identity_GenderMale: String { return self._s[1312]! } public func Call_StatusBar(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1311]!, self._r[1311]!, [_0]) + return formatWithArgumentRanges(self._s[1313]!, self._r[1313]!, [_0]) } - public var Notifications_PermissionsKeepDisabled: String { return self._s[1312]! } - public var Conversation_JumpToDate: String { return self._s[1313]! } - public var Contacts_GlobalSearch: String { return self._s[1314]! } - public var AutoDownloadSettings_ResetHelp: String { return self._s[1315]! } - public var SettingsSearch_Synonyms_FAQ: String { return self._s[1316]! } - public var Profile_MessageLifetime1d: String { return self._s[1317]! } + public var Notifications_PermissionsKeepDisabled: String { return self._s[1314]! } + public var Conversation_JumpToDate: String { return self._s[1315]! } + public var Contacts_GlobalSearch: String { return self._s[1316]! } + public var AutoDownloadSettings_ResetHelp: String { return self._s[1317]! } + public var SettingsSearch_Synonyms_FAQ: String { return self._s[1318]! } + public var Profile_MessageLifetime1d: String { return self._s[1319]! } public func MESSAGE_INVOICE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1318]!, self._r[1318]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1320]!, self._r[1320]!, [_1, _2]) } - public var StickerPack_BuiltinPackName: String { return self._s[1321]! } + public var StickerPack_BuiltinPackName: String { return self._s[1323]! } public func PUSH_CHAT_MESSAGE_AUDIO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1322]!, self._r[1322]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1324]!, self._r[1324]!, [_1, _2]) } - public var Passport_InfoTitle: String { return self._s[1324]! } - public var Notifications_PermissionsUnreachableText: String { return self._s[1325]! } + public var Passport_InfoTitle: String { return self._s[1326]! } + public var Notifications_PermissionsUnreachableText: String { return self._s[1327]! } public func NetworkUsageSettings_CellularUsageSince(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1329]!, self._r[1329]!, [_0]) + return formatWithArgumentRanges(self._s[1331]!, self._r[1331]!, [_0]) } public func PUSH_CHAT_MESSAGE_GEO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1330]!, self._r[1330]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1332]!, self._r[1332]!, [_1, _2]) } - public var Passport_Address_TypePassportRegistrationUploadScan: String { return self._s[1331]! } - public var Profile_BotInfo: String { return self._s[1332]! } - public var Watch_Compose_CreateMessage: String { return self._s[1333]! } - public var AutoDownloadSettings_VoiceMessagesInfo: String { return self._s[1334]! } - public var Month_ShortNovember: String { return self._s[1335]! } - public var Conversation_ScamWarning: String { return self._s[1336]! } - public var Wallpaper_SetCustomBackground: String { return self._s[1337]! } - public var Passport_Identity_TranslationsHelp: String { return self._s[1338]! } - public var NotificationsSound_Chime: String { return self._s[1339]! } - public var Passport_Language_ko: String { return self._s[1341]! } - public var InviteText_URL: String { return self._s[1342]! } - public var TextFormat_Monospace: String { return self._s[1343]! } + public var Passport_Address_TypePassportRegistrationUploadScan: String { return self._s[1333]! } + public var Profile_BotInfo: String { return self._s[1334]! } + public var Watch_Compose_CreateMessage: String { return self._s[1335]! } + public var AutoDownloadSettings_VoiceMessagesInfo: String { return self._s[1336]! } + public var Month_ShortNovember: String { return self._s[1337]! } + public var Conversation_ScamWarning: String { return self._s[1338]! } + public var Wallpaper_SetCustomBackground: String { return self._s[1339]! } + public var Passport_Identity_TranslationsHelp: String { return self._s[1340]! } + public var NotificationsSound_Chime: String { return self._s[1341]! } + public var Passport_Language_ko: String { return self._s[1343]! } + public var InviteText_URL: String { return self._s[1344]! } + public var TextFormat_Monospace: String { return self._s[1345]! } public func Time_PreciseDate_m11(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1344]!, self._r[1344]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1346]!, self._r[1346]!, [_1, _2, _3]) } public func Login_WillSendSms(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1345]!, self._r[1345]!, [_0]) + return formatWithArgumentRanges(self._s[1347]!, self._r[1347]!, [_0]) } public func Watch_Time_ShortWeekdayAt(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1346]!, self._r[1346]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1348]!, self._r[1348]!, [_1, _2]) } - public var Passport_InfoLearnMore: String { return self._s[1348]! } - public var TwoStepAuth_EmailPlaceholder: String { return self._s[1349]! } - public var Passport_Identity_AddIdentityCard: String { return self._s[1350]! } - public var Your_card_has_expired: String { return self._s[1351]! } - public var StickerPacksSettings_StickerPacksSection: String { return self._s[1352]! } - public var GroupInfo_InviteLink_Help: String { return self._s[1353]! } - public var Conversation_Report: String { return self._s[1357]! } - public var Notifications_MessageNotificationsSound: String { return self._s[1358]! } - public var Notification_MessageLifetime1m: String { return self._s[1359]! } - public var Privacy_ContactsTitle: String { return self._s[1360]! } - public var Conversation_ShareMyContactInfo: String { return self._s[1361]! } - public var ChannelMembers_WhoCanAddMembersAdminsHelp: String { return self._s[1362]! } - public var Channel_Members_Title: String { return self._s[1363]! } - public var Map_OpenInWaze: String { return self._s[1364]! } - public var Login_PhoneBannedError: String { return self._s[1365]! } + public var Passport_InfoLearnMore: String { return self._s[1350]! } + public var TwoStepAuth_EmailPlaceholder: String { return self._s[1351]! } + public var Passport_Identity_AddIdentityCard: String { return self._s[1352]! } + public var Your_card_has_expired: String { return self._s[1353]! } + public var StickerPacksSettings_StickerPacksSection: String { return self._s[1354]! } + public var GroupInfo_InviteLink_Help: String { return self._s[1355]! } + public var Conversation_Report: String { return self._s[1359]! } + public var Notifications_MessageNotificationsSound: String { return self._s[1360]! } + public var Notification_MessageLifetime1m: String { return self._s[1361]! } + public var Privacy_ContactsTitle: String { return self._s[1362]! } + public var Conversation_ShareMyContactInfo: String { return self._s[1363]! } + public var ChannelMembers_WhoCanAddMembersAdminsHelp: String { return self._s[1364]! } + public var Channel_Members_Title: String { return self._s[1365]! } + public var Map_OpenInWaze: String { return self._s[1366]! } + public var Login_PhoneBannedError: String { return self._s[1367]! } public func LiveLocationUpdated_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1366]!, self._r[1366]!, [_0]) + return formatWithArgumentRanges(self._s[1368]!, self._r[1368]!, [_0]) } - public var Group_Management_AddModeratorHelp: String { return self._s[1367]! } - public var AutoDownloadSettings_WifiTitle: String { return self._s[1368]! } - public var Common_OK: String { return self._s[1369]! } - public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[1370]! } - public var Cache_Music: String { return self._s[1371]! } - public var SettingsSearch_Synonyms_EditProfile_PhoneNumber: String { return self._s[1372]! } - public var PasscodeSettings_UnlockWithTouchId: String { return self._s[1373]! } - public var TwoStepAuth_HintPlaceholder: String { return self._s[1374]! } + public var Group_Management_AddModeratorHelp: String { return self._s[1369]! } + public var AutoDownloadSettings_WifiTitle: String { return self._s[1370]! } + public var Common_OK: String { return self._s[1371]! } + public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[1372]! } + public var Cache_Music: String { return self._s[1373]! } + public var SettingsSearch_Synonyms_EditProfile_PhoneNumber: String { return self._s[1374]! } + public var PasscodeSettings_UnlockWithTouchId: String { return self._s[1375]! } + public var TwoStepAuth_HintPlaceholder: String { return self._s[1376]! } public func PUSH_PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1375]!, self._r[1375]!, [_1]) + return formatWithArgumentRanges(self._s[1377]!, self._r[1377]!, [_1]) } public func Passport_RequestHeader(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1376]!, self._r[1376]!, [_0]) + return formatWithArgumentRanges(self._s[1378]!, self._r[1378]!, [_0]) } - public var Watch_MessageView_ViewOnPhone: String { return self._s[1378]! } - public var Privacy_Calls_CustomShareHelp: String { return self._s[1379]! } - public var ChangePhoneNumberNumber_Title: String { return self._s[1381]! } - public var State_ConnectingToProxyInfo: String { return self._s[1382]! } - public var Message_VideoMessage: String { return self._s[1384]! } - public var ChannelInfo_DeleteChannel: String { return self._s[1385]! } - public var ContactInfo_PhoneLabelOther: String { return self._s[1386]! } - public var Channel_EditAdmin_CannotEdit: String { return self._s[1387]! } - public var Passport_DeleteAddressConfirmation: String { return self._s[1388]! } - public var WallpaperPreview_SwipeBottomText: String { return self._s[1389]! } - public var Activity_RecordingAudio: String { return self._s[1390]! } - public var SettingsSearch_Synonyms_Watch: String { return self._s[1391]! } - public var PasscodeSettings_TryAgainIn1Minute: String { return self._s[1392]! } + public var Watch_MessageView_ViewOnPhone: String { return self._s[1380]! } + public var Privacy_Calls_CustomShareHelp: String { return self._s[1381]! } + public var ChangePhoneNumberNumber_Title: String { return self._s[1383]! } + public var State_ConnectingToProxyInfo: String { return self._s[1384]! } + public var Message_VideoMessage: String { return self._s[1386]! } + public var ChannelInfo_DeleteChannel: String { return self._s[1387]! } + public var ContactInfo_PhoneLabelOther: String { return self._s[1388]! } + public var Channel_EditAdmin_CannotEdit: String { return self._s[1389]! } + public var Passport_DeleteAddressConfirmation: String { return self._s[1390]! } + public var WallpaperPreview_SwipeBottomText: String { return self._s[1391]! } + public var Activity_RecordingAudio: String { return self._s[1392]! } + public var SettingsSearch_Synonyms_Watch: String { return self._s[1393]! } + public var PasscodeSettings_TryAgainIn1Minute: String { return self._s[1394]! } public func Notification_ChangedGroupName(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1394]!, self._r[1394]!, [_0, _1]) + return formatWithArgumentRanges(self._s[1396]!, self._r[1396]!, [_0, _1]) } public func EmptyGroupInfo_Line1(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1398]!, self._r[1398]!, [_0]) + return formatWithArgumentRanges(self._s[1400]!, self._r[1400]!, [_0]) } - public var Conversation_ApplyLocalization: String { return self._s[1399]! } - public var UserInfo_AddPhone: String { return self._s[1400]! } - public var Map_ShareLiveLocationHelp: String { return self._s[1401]! } + public var Conversation_ApplyLocalization: String { return self._s[1401]! } + public var UserInfo_AddPhone: String { return self._s[1402]! } + public var Map_ShareLiveLocationHelp: String { return self._s[1403]! } public func Passport_Identity_NativeNameGenericHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1402]!, self._r[1402]!, [_0]) + return formatWithArgumentRanges(self._s[1404]!, self._r[1404]!, [_0]) } - public var Passport_Scans: String { return self._s[1404]! } - public var BlockedUsers_Unblock: String { return self._s[1405]! } + public var Passport_Scans: String { return self._s[1406]! } + public var BlockedUsers_Unblock: String { return self._s[1407]! } public func PUSH_ENCRYPTION_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1406]!, self._r[1406]!, [_1]) + return formatWithArgumentRanges(self._s[1408]!, self._r[1408]!, [_1]) } - public var Channel_Management_LabelCreator: String { return self._s[1407]! } - public var Conversation_ReportSpamAndLeave: String { return self._s[1408]! } - public var SettingsSearch_Synonyms_EditProfile_Bio: String { return self._s[1409]! } - public var ChatList_UndoArchiveMultipleTitle: String { return self._s[1410]! } - public var Passport_Identity_NativeNameGenericTitle: String { return self._s[1411]! } + public var Channel_Management_LabelCreator: String { return self._s[1409]! } + public var Conversation_ReportSpamAndLeave: String { return self._s[1410]! } + public var SettingsSearch_Synonyms_EditProfile_Bio: String { return self._s[1411]! } + public var ChatList_UndoArchiveMultipleTitle: String { return self._s[1412]! } + public var Passport_Identity_NativeNameGenericTitle: String { return self._s[1413]! } public func Login_EmailPhoneBody(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1412]!, self._r[1412]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[1414]!, self._r[1414]!, [_0, _1, _2]) } - public var Login_PhoneNumberHelp: String { return self._s[1413]! } - public var LastSeen_ALongTimeAgo: String { return self._s[1414]! } - public var Channel_AdminLog_CanPinMessages: String { return self._s[1415]! } - public var ChannelIntro_CreateChannel: String { return self._s[1416]! } - public var Conversation_UnreadMessages: String { return self._s[1417]! } - public var SettingsSearch_Synonyms_Stickers_ArchivedPacks: String { return self._s[1418]! } - public var Channel_AdminLog_EmptyText: String { return self._s[1419]! } - public var Notification_GroupActivated: String { return self._s[1420]! } - public var NotificationSettings_ContactJoinedInfo: String { return self._s[1421]! } + public var Login_PhoneNumberHelp: String { return self._s[1415]! } + public var LastSeen_ALongTimeAgo: String { return self._s[1416]! } + public var Channel_AdminLog_CanPinMessages: String { return self._s[1417]! } + public var ChannelIntro_CreateChannel: String { return self._s[1418]! } + public var Conversation_UnreadMessages: String { return self._s[1419]! } + public var SettingsSearch_Synonyms_Stickers_ArchivedPacks: String { return self._s[1420]! } + public var Channel_AdminLog_EmptyText: String { return self._s[1421]! } + public var Notification_GroupActivated: String { return self._s[1422]! } + public var NotificationSettings_ContactJoinedInfo: String { return self._s[1423]! } public func Notification_PinnedContactMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1422]!, self._r[1422]!, [_0]) + return formatWithArgumentRanges(self._s[1424]!, self._r[1424]!, [_0]) } public func DownloadingStatus(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1423]!, self._r[1423]!, [_0, _1]) + return formatWithArgumentRanges(self._s[1425]!, self._r[1425]!, [_0, _1]) } - public var GroupInfo_ConvertToSupergroup: String { return self._s[1425]! } + public var GroupInfo_ConvertToSupergroup: String { return self._s[1427]! } public func PrivacyPolicy_AgeVerificationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1426]!, self._r[1426]!, [_0]) + return formatWithArgumentRanges(self._s[1428]!, self._r[1428]!, [_0]) } - public var Undo_DeletedChannel: String { return self._s[1427]! } - public var CallFeedback_AddComment: String { return self._s[1428]! } + public var Undo_DeletedChannel: String { return self._s[1429]! } + public var CallFeedback_AddComment: String { return self._s[1430]! } public func Conversation_OpenBotLinkAllowMessages(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1429]!, self._r[1429]!, [_0]) - } - public var Document_TargetConfirmationFormat: String { return self._s[1430]! } - public func Call_StatusOngoing(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1431]!, self._r[1431]!, [_0]) } - public var LogoutOptions_SetPasscodeTitle: String { return self._s[1432]! } + public var Document_TargetConfirmationFormat: String { return self._s[1432]! } + public func Call_StatusOngoing(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1433]!, self._r[1433]!, [_0]) + } + public var LogoutOptions_SetPasscodeTitle: String { return self._s[1434]! } public func PUSH_CHAT_MESSAGE_GAME_SCORE(_ _1: String, _ _2: String, _ _3: String, _ _4: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1433]!, self._r[1433]!, [_1, _2, _3, _4]) + return formatWithArgumentRanges(self._s[1435]!, self._r[1435]!, [_1, _2, _3, _4]) } - public var Contacts_SortByName: String { return self._s[1434]! } - public var SettingsSearch_Synonyms_Privacy_Forwards: String { return self._s[1435]! } + public var Contacts_SortByName: String { return self._s[1436]! } + public var SettingsSearch_Synonyms_Privacy_Forwards: String { return self._s[1437]! } public func CHAT_MESSAGE_INVOICE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1437]!, self._r[1437]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1439]!, self._r[1439]!, [_1, _2, _3]) } - public var Notification_Exceptions_RemoveFromExceptions: String { return self._s[1438]! } - public var Conversation_ClearSelfHistory: String { return self._s[1439]! } - public var Checkout_NewCard_PostcodePlaceholder: String { return self._s[1440]! } - public var PasscodeSettings_DoNotMatch: String { return self._s[1441]! } - public var Stickers_SuggestNone: String { return self._s[1442]! } - public var ChatSettings_Cache: String { return self._s[1443]! } - public var Settings_SaveIncomingPhotos: String { return self._s[1444]! } - public var Media_ShareThisPhoto: String { return self._s[1445]! } - public var InfoPlist_NSContactsUsageDescription: String { return self._s[1446]! } - public var Conversation_ContextMenuCopyLink: String { return self._s[1447]! } - public var PrivacyPolicy_AgeVerificationTitle: String { return self._s[1448]! } - public var SettingsSearch_Synonyms_Stickers_Masks: String { return self._s[1449]! } - public var TwoStepAuth_SetupPasswordEnterPasswordNew: String { return self._s[1450]! } - public var Permissions_CellularDataTitle_v0: String { return self._s[1451]! } - public var WallpaperSearch_ColorWhite: String { return self._s[1453]! } - public var Channel_AdminLog_DefaultRestrictionsUpdated: String { return self._s[1454]! } - public var Conversation_ErrorInaccessibleMessage: String { return self._s[1455]! } - public var Map_OpenIn: String { return self._s[1456]! } + public var Notification_Exceptions_RemoveFromExceptions: String { return self._s[1440]! } + public var Conversation_ClearSelfHistory: String { return self._s[1441]! } + public var Checkout_NewCard_PostcodePlaceholder: String { return self._s[1442]! } + public var PasscodeSettings_DoNotMatch: String { return self._s[1443]! } + public var Stickers_SuggestNone: String { return self._s[1444]! } + public var ChatSettings_Cache: String { return self._s[1445]! } + public var Settings_SaveIncomingPhotos: String { return self._s[1446]! } + public var Media_ShareThisPhoto: String { return self._s[1447]! } + public var InfoPlist_NSContactsUsageDescription: String { return self._s[1448]! } + public var Conversation_ContextMenuCopyLink: String { return self._s[1449]! } + public var PrivacyPolicy_AgeVerificationTitle: String { return self._s[1450]! } + public var SettingsSearch_Synonyms_Stickers_Masks: String { return self._s[1451]! } + public var TwoStepAuth_SetupPasswordEnterPasswordNew: String { return self._s[1452]! } + public var Permissions_CellularDataTitle_v0: String { return self._s[1453]! } + public var WallpaperSearch_ColorWhite: String { return self._s[1455]! } + public var Channel_AdminLog_DefaultRestrictionsUpdated: String { return self._s[1456]! } + public var Conversation_ErrorInaccessibleMessage: String { return self._s[1457]! } + public var Map_OpenIn: String { return self._s[1458]! } public func PUSH_PHONE_CALL_MISSED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1459]!, self._r[1459]!, [_1]) + return formatWithArgumentRanges(self._s[1461]!, self._r[1461]!, [_1]) } public func ChannelInfo_AddParticipantConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1460]!, self._r[1460]!, [_0]) + return formatWithArgumentRanges(self._s[1462]!, self._r[1462]!, [_0]) } - public var MessagePoll_LabelClosed: String { return self._s[1461]! } - public var GroupPermission_PermissionGloballyDisabled: String { return self._s[1463]! } - public var Passport_Identity_MiddleNamePlaceholder: String { return self._s[1464]! } - public var UserInfo_FirstNamePlaceholder: String { return self._s[1465]! } - public var PrivacyLastSeenSettings_WhoCanSeeMyTimestamp: String { return self._s[1466]! } - public var Login_SelectCountry_Title: String { return self._s[1467]! } - public var Channel_EditAdmin_PermissionBanUsers: String { return self._s[1468]! } + public var MessagePoll_LabelClosed: String { return self._s[1463]! } + public var GroupPermission_PermissionGloballyDisabled: String { return self._s[1465]! } + public var Passport_Identity_MiddleNamePlaceholder: String { return self._s[1466]! } + public var UserInfo_FirstNamePlaceholder: String { return self._s[1467]! } + public var PrivacyLastSeenSettings_WhoCanSeeMyTimestamp: String { return self._s[1468]! } + public var Login_SelectCountry_Title: String { return self._s[1469]! } + public var Channel_EditAdmin_PermissionBanUsers: String { return self._s[1470]! } public func Conversation_OpenBotLinkLogin(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1469]!, self._r[1469]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1471]!, self._r[1471]!, [_1, _2]) } - public var Channel_AdminLog_ChangeInfo: String { return self._s[1470]! } - public var Watch_Suggestion_BRB: String { return self._s[1471]! } - public var Passport_Identity_EditIdentityCard: String { return self._s[1472]! } - public var Contacts_PermissionsTitle: String { return self._s[1473]! } - public var Conversation_RestrictedInline: String { return self._s[1474]! } - public var StickerPack_ViewPack: String { return self._s[1476]! } + public var Channel_AdminLog_ChangeInfo: String { return self._s[1472]! } + public var Watch_Suggestion_BRB: String { return self._s[1473]! } + public var Passport_Identity_EditIdentityCard: String { return self._s[1474]! } + public var Contacts_PermissionsTitle: String { return self._s[1475]! } + public var Conversation_RestrictedInline: String { return self._s[1476]! } + public var StickerPack_ViewPack: String { return self._s[1478]! } public func Update_AppVersion(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1477]!, self._r[1477]!, [_0]) + return formatWithArgumentRanges(self._s[1479]!, self._r[1479]!, [_0]) } - public var Compose_NewChannel: String { return self._s[1479]! } - public var ChatSettings_AutoDownloadSettings_TypePhoto: String { return self._s[1482]! } - public var Conversation_ReportSpamGroupConfirmation: String { return self._s[1484]! } - public var Channel_Info_Stickers: String { return self._s[1485]! } - public var AutoNightTheme_PreferredTheme: String { return self._s[1486]! } - public var PrivacyPolicy_AgeVerificationAgree: String { return self._s[1487]! } - public var Passport_DeletePersonalDetails: String { return self._s[1488]! } - public var LogoutOptions_AddAccountTitle: String { return self._s[1489]! } - public var Channel_DiscussionGroupInfo: String { return self._s[1490]! } - public var Conversation_SearchNoResults: String { return self._s[1492]! } - public var MessagePoll_LabelAnonymous: String { return self._s[1493]! } - public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[1494]! } - public var Login_Code: String { return self._s[1495]! } - public var Watch_Suggestion_WhatsUp: String { return self._s[1496]! } - public var Weekday_ShortThursday: String { return self._s[1497]! } - public var Resolve_ErrorNotFound: String { return self._s[1499]! } - public var LastSeen_Offline: String { return self._s[1500]! } - public var PeopleNearby_NoMembers: String { return self._s[1501]! } - public var GroupPermission_AddMembersNotAvailable: String { return self._s[1502]! } - public var Privacy_Calls_AlwaysAllow_Title: String { return self._s[1503]! } - public var GroupInfo_Title: String { return self._s[1504]! } - public var NotificationsSound_Note: String { return self._s[1505]! } - public var Conversation_EditingMessagePanelTitle: String { return self._s[1506]! } - public var Watch_Message_Poll: String { return self._s[1507]! } - public var Privacy_Calls: String { return self._s[1508]! } - public var Month_ShortAugust: String { return self._s[1509]! } - public var TwoStepAuth_SetPasswordHelp: String { return self._s[1510]! } - public var Notifications_Reset: String { return self._s[1511]! } - public var Conversation_Pin: String { return self._s[1512]! } - public var Passport_Language_lv: String { return self._s[1513]! } - public var Permissions_PeopleNearbyAllowInSettings_v0: String { return self._s[1514]! } - public var BlockedUsers_Info: String { return self._s[1515]! } - public var SettingsSearch_Synonyms_Data_AutoplayVideos: String { return self._s[1517]! } - public var Watch_Conversation_Unblock: String { return self._s[1519]! } + public var Compose_NewChannel: String { return self._s[1481]! } + public var ChatSettings_AutoDownloadSettings_TypePhoto: String { return self._s[1484]! } + public var Conversation_ReportSpamGroupConfirmation: String { return self._s[1486]! } + public var Channel_Info_Stickers: String { return self._s[1487]! } + public var AutoNightTheme_PreferredTheme: String { return self._s[1488]! } + public var PrivacyPolicy_AgeVerificationAgree: String { return self._s[1489]! } + public var Passport_DeletePersonalDetails: String { return self._s[1490]! } + public var LogoutOptions_AddAccountTitle: String { return self._s[1491]! } + public var Channel_DiscussionGroupInfo: String { return self._s[1492]! } + public var Conversation_SearchNoResults: String { return self._s[1494]! } + public var MessagePoll_LabelAnonymous: String { return self._s[1495]! } + public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[1496]! } + public var Login_Code: String { return self._s[1497]! } + public var Watch_Suggestion_WhatsUp: String { return self._s[1498]! } + public var Weekday_ShortThursday: String { return self._s[1499]! } + public var Resolve_ErrorNotFound: String { return self._s[1501]! } + public var LastSeen_Offline: String { return self._s[1502]! } + public var PeopleNearby_NoMembers: String { return self._s[1503]! } + public var GroupPermission_AddMembersNotAvailable: String { return self._s[1504]! } + public var Privacy_Calls_AlwaysAllow_Title: String { return self._s[1505]! } + public var GroupInfo_Title: String { return self._s[1506]! } + public var NotificationsSound_Note: String { return self._s[1507]! } + public var Conversation_EditingMessagePanelTitle: String { return self._s[1508]! } + public var Watch_Message_Poll: String { return self._s[1509]! } + public var Privacy_Calls: String { return self._s[1510]! } + public var Month_ShortAugust: String { return self._s[1511]! } + public var TwoStepAuth_SetPasswordHelp: String { return self._s[1512]! } + public var Notifications_Reset: String { return self._s[1513]! } + public var Conversation_Pin: String { return self._s[1514]! } + public var Passport_Language_lv: String { return self._s[1515]! } + public var Permissions_PeopleNearbyAllowInSettings_v0: String { return self._s[1516]! } + public var BlockedUsers_Info: String { return self._s[1517]! } + public var SettingsSearch_Synonyms_Data_AutoplayVideos: String { return self._s[1519]! } + public var Watch_Conversation_Unblock: String { return self._s[1521]! } public func Time_MonthOfYear_m9(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1520]!, self._r[1520]!, [_0]) + return formatWithArgumentRanges(self._s[1522]!, self._r[1522]!, [_0]) } - public var CloudStorage_Title: String { return self._s[1521]! } - public var GroupInfo_DeleteAndExitConfirmation: String { return self._s[1522]! } + public var CloudStorage_Title: String { return self._s[1523]! } + public var GroupInfo_DeleteAndExitConfirmation: String { return self._s[1524]! } public func NetworkUsageSettings_WifiUsageSince(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1523]!, self._r[1523]!, [_0]) + return formatWithArgumentRanges(self._s[1525]!, self._r[1525]!, [_0]) } - public var Channel_AdminLogFilter_AdminsTitle: String { return self._s[1524]! } - public var Watch_Suggestion_OnMyWay: String { return self._s[1525]! } - public var TwoStepAuth_RecoveryEmailTitle: String { return self._s[1526]! } - public var Passport_Address_EditBankStatement: String { return self._s[1527]! } + public var Channel_AdminLogFilter_AdminsTitle: String { return self._s[1526]! } + public var Watch_Suggestion_OnMyWay: String { return self._s[1527]! } + public var TwoStepAuth_RecoveryEmailTitle: String { return self._s[1528]! } + public var Passport_Address_EditBankStatement: String { return self._s[1529]! } public func Channel_AdminLog_MessageChangedUnlinkedGroup(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1528]!, self._r[1528]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1530]!, self._r[1530]!, [_1, _2]) } - public var ChatSettings_DownloadInBackgroundInfo: String { return self._s[1529]! } - public var ShareMenu_Comment: String { return self._s[1530]! } - public var Permissions_ContactsTitle_v0: String { return self._s[1531]! } - public var Notifications_PermissionsTitle: String { return self._s[1532]! } - public var GroupPermission_NoSendLinks: String { return self._s[1533]! } - public var Privacy_Forwards_NeverAllow_Title: String { return self._s[1534]! } - public var Settings_Support: String { return self._s[1535]! } - public var Notifications_ChannelNotificationsSound: String { return self._s[1536]! } - public var SettingsSearch_Synonyms_Data_AutoDownloadReset: String { return self._s[1537]! } - public var Privacy_Forwards_Preview: String { return self._s[1538]! } - public var GroupPermission_ApplyAlertAction: String { return self._s[1539]! } - public var Watch_Stickers_StickerPacks: String { return self._s[1540]! } - public var Common_Select: String { return self._s[1542]! } - public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[1543]! } - public var WallpaperSearch_ColorGray: String { return self._s[1545]! } - public var ChatAdmins_AllMembersAreAdminsOffHelp: String { return self._s[1546]! } - public var PasscodeSettings_AutoLock_IfAwayFor_5hours: String { return self._s[1547]! } - public var Appearance_PreviewReplyAuthor: String { return self._s[1548]! } - public var TwoStepAuth_RecoveryTitle: String { return self._s[1549]! } - public var Widget_AuthRequired: String { return self._s[1550]! } - public var Camera_FlashOn: String { return self._s[1551]! } - public var Channel_Stickers_NotFoundHelp: String { return self._s[1552]! } - public var Watch_Suggestion_OK: String { return self._s[1553]! } + public var ChatSettings_DownloadInBackgroundInfo: String { return self._s[1531]! } + public var ShareMenu_Comment: String { return self._s[1532]! } + public var Permissions_ContactsTitle_v0: String { return self._s[1533]! } + public var Notifications_PermissionsTitle: String { return self._s[1534]! } + public var GroupPermission_NoSendLinks: String { return self._s[1535]! } + public var Privacy_Forwards_NeverAllow_Title: String { return self._s[1536]! } + public var Settings_Support: String { return self._s[1537]! } + public var Notifications_ChannelNotificationsSound: String { return self._s[1538]! } + public var SettingsSearch_Synonyms_Data_AutoDownloadReset: String { return self._s[1539]! } + public var Privacy_Forwards_Preview: String { return self._s[1540]! } + public var GroupPermission_ApplyAlertAction: String { return self._s[1541]! } + public var Watch_Stickers_StickerPacks: String { return self._s[1542]! } + public var Common_Select: String { return self._s[1544]! } + public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[1545]! } + public var WallpaperSearch_ColorGray: String { return self._s[1547]! } + public var ChatAdmins_AllMembersAreAdminsOffHelp: String { return self._s[1548]! } + public var PasscodeSettings_AutoLock_IfAwayFor_5hours: String { return self._s[1549]! } + public var Appearance_PreviewReplyAuthor: String { return self._s[1550]! } + public var TwoStepAuth_RecoveryTitle: String { return self._s[1551]! } + public var Widget_AuthRequired: String { return self._s[1552]! } + public var Camera_FlashOn: String { return self._s[1553]! } + public var Channel_Stickers_NotFoundHelp: String { return self._s[1554]! } + public var Watch_Suggestion_OK: String { return self._s[1555]! } public func Username_LinkHint(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1555]!, self._r[1555]!, [_0]) - } - public func Notification_PinnedLiveLocationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1557]!, self._r[1557]!, [_0]) } - public var DialogList_AdLabel: String { return self._s[1558]! } - public var WatchRemote_NotificationText: String { return self._s[1559]! } - public var SettingsSearch_Synonyms_Notifications_MessageNotificationsAlert: String { return self._s[1560]! } - public var Conversation_ReportSpam: String { return self._s[1561]! } - public var SettingsSearch_Synonyms_Privacy_Data_TopPeers: String { return self._s[1562]! } - public var Settings_LogoutConfirmationTitle: String { return self._s[1564]! } - public var PhoneLabel_Title: String { return self._s[1565]! } - public var Passport_Address_EditRentalAgreement: String { return self._s[1566]! } - public var Settings_ChangePhoneNumber: String { return self._s[1567]! } - public var Notifications_ExceptionsTitle: String { return self._s[1568]! } - public var Notifications_AlertTones: String { return self._s[1569]! } - public var Call_ReportIncludeLogDescription: String { return self._s[1570]! } - public var SettingsSearch_Synonyms_Notifications_ResetAllNotifications: String { return self._s[1571]! } - public var AutoDownloadSettings_PrivateChats: String { return self._s[1572]! } - public var TwoStepAuth_AddHintTitle: String { return self._s[1574]! } - public var ReportPeer_ReasonOther: String { return self._s[1575]! } - public var KeyCommand_ScrollDown: String { return self._s[1577]! } + public func Notification_PinnedLiveLocationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1559]!, self._r[1559]!, [_0]) + } + public var DialogList_AdLabel: String { return self._s[1560]! } + public var WatchRemote_NotificationText: String { return self._s[1561]! } + public var SettingsSearch_Synonyms_Notifications_MessageNotificationsAlert: String { return self._s[1562]! } + public var Conversation_ReportSpam: String { return self._s[1563]! } + public var SettingsSearch_Synonyms_Privacy_Data_TopPeers: String { return self._s[1564]! } + public var Settings_LogoutConfirmationTitle: String { return self._s[1566]! } + public var PhoneLabel_Title: String { return self._s[1567]! } + public var Passport_Address_EditRentalAgreement: String { return self._s[1568]! } + public var Settings_ChangePhoneNumber: String { return self._s[1569]! } + public var Notifications_ExceptionsTitle: String { return self._s[1570]! } + public var Notifications_AlertTones: String { return self._s[1571]! } + public var Call_ReportIncludeLogDescription: String { return self._s[1572]! } + public var SettingsSearch_Synonyms_Notifications_ResetAllNotifications: String { return self._s[1573]! } + public var AutoDownloadSettings_PrivateChats: String { return self._s[1574]! } + public var TwoStepAuth_AddHintTitle: String { return self._s[1576]! } + public var ReportPeer_ReasonOther: String { return self._s[1577]! } + public var KeyCommand_ScrollDown: String { return self._s[1579]! } public func Login_BannedPhoneSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1578]!, self._r[1578]!, [_0]) + return formatWithArgumentRanges(self._s[1580]!, self._r[1580]!, [_0]) } - public var NetworkUsageSettings_MediaVideoDataSection: String { return self._s[1579]! } - public var ChannelInfo_DeleteGroupConfirmation: String { return self._s[1580]! } - public var AuthSessions_LogOut: String { return self._s[1581]! } - public var Passport_Identity_TypeInternalPassport: String { return self._s[1582]! } - public var ChatSettings_AutoDownloadVoiceMessages: String { return self._s[1583]! } - public var Passport_Phone_Title: String { return self._s[1584]! } - public var Settings_PhoneNumber: String { return self._s[1585]! } - public var NotificationsSound_Alert: String { return self._s[1586]! } - public var WebSearch_SearchNoResults: String { return self._s[1587]! } - public var Privacy_ProfilePhoto_AlwaysShareWith_Title: String { return self._s[1589]! } - public var LogoutOptions_AlternativeOptionsSection: String { return self._s[1590]! } - public var SettingsSearch_Synonyms_Passport: String { return self._s[1591]! } - public var PhotoEditor_CurvesTool: String { return self._s[1592]! } - public var Checkout_PaymentMethod: String { return self._s[1594]! } + public var NetworkUsageSettings_MediaVideoDataSection: String { return self._s[1581]! } + public var ChannelInfo_DeleteGroupConfirmation: String { return self._s[1582]! } + public var AuthSessions_LogOut: String { return self._s[1583]! } + public var Passport_Identity_TypeInternalPassport: String { return self._s[1584]! } + public var ChatSettings_AutoDownloadVoiceMessages: String { return self._s[1585]! } + public var Passport_Phone_Title: String { return self._s[1586]! } + public var Settings_PhoneNumber: String { return self._s[1587]! } + public var NotificationsSound_Alert: String { return self._s[1588]! } + public var WebSearch_SearchNoResults: String { return self._s[1589]! } + public var Privacy_ProfilePhoto_AlwaysShareWith_Title: String { return self._s[1591]! } + public var LogoutOptions_AlternativeOptionsSection: String { return self._s[1592]! } + public var SettingsSearch_Synonyms_Passport: String { return self._s[1593]! } + public var PhotoEditor_CurvesTool: String { return self._s[1594]! } + public var Checkout_PaymentMethod: String { return self._s[1596]! } public func PUSH_CHAT_ADD_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1595]!, self._r[1595]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1597]!, self._r[1597]!, [_1, _2]) } - public var Contacts_AccessDeniedError: String { return self._s[1596]! } - public var Camera_PhotoMode: String { return self._s[1599]! } - public var Passport_Address_AddUtilityBill: String { return self._s[1600]! } - public var CallSettings_OnMobile: String { return self._s[1601]! } - public var Tour_Text2: String { return self._s[1602]! } + public var Contacts_AccessDeniedError: String { return self._s[1598]! } + public var Camera_PhotoMode: String { return self._s[1601]! } + public var Passport_Address_AddUtilityBill: String { return self._s[1602]! } + public var CallSettings_OnMobile: String { return self._s[1603]! } + public var Tour_Text2: String { return self._s[1604]! } public func PUSH_CHAT_MESSAGE_ROUND(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1603]!, self._r[1603]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1605]!, self._r[1605]!, [_1, _2]) } - public var DialogList_EncryptionProcessing: String { return self._s[1605]! } - public var Permissions_Skip: String { return self._s[1606]! } - public var SecretImage_Title: String { return self._s[1607]! } - public var Watch_MessageView_Title: String { return self._s[1608]! } - public var Channel_DiscussionGroupAdd: String { return self._s[1609]! } - public var AttachmentMenu_Poll: String { return self._s[1610]! } + public var DialogList_EncryptionProcessing: String { return self._s[1607]! } + public var Permissions_Skip: String { return self._s[1608]! } + public var SecretImage_Title: String { return self._s[1609]! } + public var Watch_MessageView_Title: String { return self._s[1610]! } + public var Channel_DiscussionGroupAdd: String { return self._s[1611]! } + public var AttachmentMenu_Poll: String { return self._s[1612]! } public func Notification_GroupInviter(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1611]!, self._r[1611]!, [_0]) + return formatWithArgumentRanges(self._s[1613]!, self._r[1613]!, [_0]) } public func Channel_DiscussionGroup_PrivateChannelLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1612]!, self._r[1612]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1614]!, self._r[1614]!, [_1, _2]) } - public var Notification_CallCanceled: String { return self._s[1613]! } - public var WallpaperPreview_Title: String { return self._s[1614]! } - public var Privacy_PaymentsClear_PaymentInfo: String { return self._s[1615]! } - public var Settings_ProxyConnecting: String { return self._s[1616]! } - public var Settings_CheckPhoneNumberText: String { return self._s[1618]! } - public var Profile_MessageLifetime5s: String { return self._s[1619]! } - public var Username_InvalidCharacters: String { return self._s[1620]! } - public var WallpaperPreview_CropBottomText: String { return self._s[1621]! } - public var AutoDownloadSettings_LimitBySize: String { return self._s[1622]! } - public var Settings_AddAccount: String { return self._s[1623]! } - public var Notification_CreatedChannel: String { return self._s[1626]! } + public var Notification_CallCanceled: String { return self._s[1615]! } + public var WallpaperPreview_Title: String { return self._s[1616]! } + public var Privacy_PaymentsClear_PaymentInfo: String { return self._s[1617]! } + public var Settings_ProxyConnecting: String { return self._s[1618]! } + public var Settings_CheckPhoneNumberText: String { return self._s[1620]! } + public var Profile_MessageLifetime5s: String { return self._s[1621]! } + public var Username_InvalidCharacters: String { return self._s[1622]! } + public var WallpaperPreview_CropBottomText: String { return self._s[1623]! } + public var AutoDownloadSettings_LimitBySize: String { return self._s[1624]! } + public var Settings_AddAccount: String { return self._s[1625]! } + public var Notification_CreatedChannel: String { return self._s[1628]! } public func PUSH_CHAT_DELETE_MEMBER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1627]!, self._r[1627]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1629]!, self._r[1629]!, [_1, _2, _3]) } - public var Passcode_AppLockedAlert: String { return self._s[1629]! } - public var Contacts_TopSection: String { return self._s[1630]! } + public var Passcode_AppLockedAlert: String { return self._s[1631]! } + public var Contacts_TopSection: String { return self._s[1632]! } public func Time_MonthOfYear_m6(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1631]!, self._r[1631]!, [_0]) + return formatWithArgumentRanges(self._s[1633]!, self._r[1633]!, [_0]) } - public var ReportPeer_ReasonSpam: String { return self._s[1632]! } - public var UserInfo_TapToCall: String { return self._s[1633]! } - public var Conversation_ForwardAuthorHiddenTooltip: String { return self._s[1635]! } - public var AutoDownloadSettings_DataUsageCustom: String { return self._s[1636]! } - public var Common_Search: String { return self._s[1637]! } + public var ReportPeer_ReasonSpam: String { return self._s[1634]! } + public var UserInfo_TapToCall: String { return self._s[1635]! } + public var Conversation_ForwardAuthorHiddenTooltip: String { return self._s[1637]! } + public var AutoDownloadSettings_DataUsageCustom: String { return self._s[1638]! } + public var Common_Search: String { return self._s[1639]! } public func Channel_AdminLog_MessageChangedGroupGeoLocation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1638]!, self._r[1638]!, [_0]) + return formatWithArgumentRanges(self._s[1640]!, self._r[1640]!, [_0]) } - public var AuthSessions_IncompleteAttemptsInfo: String { return self._s[1639]! } - public var Message_InvoiceLabel: String { return self._s[1640]! } - public var Conversation_InputTextPlaceholder: String { return self._s[1641]! } - public var NetworkUsageSettings_MediaImageDataSection: String { return self._s[1642]! } + public var AuthSessions_IncompleteAttemptsInfo: String { return self._s[1641]! } + public var Message_InvoiceLabel: String { return self._s[1642]! } + public var Conversation_InputTextPlaceholder: String { return self._s[1643]! } + public var NetworkUsageSettings_MediaImageDataSection: String { return self._s[1644]! } public func Passport_Address_UploadOneOfScan(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1643]!, self._r[1643]!, [_0]) + return formatWithArgumentRanges(self._s[1645]!, self._r[1645]!, [_0]) } - public var Conversation_Info: String { return self._s[1644]! } - public var Login_InfoDeletePhoto: String { return self._s[1645]! } - public var Passport_Language_vi: String { return self._s[1647]! } - public var UserInfo_ScamUserWarning: String { return self._s[1648]! } - public var Conversation_Search: String { return self._s[1649]! } - public var DialogList_DeleteBotConversationConfirmation: String { return self._s[1650]! } - public var ReportPeer_ReasonPornography: String { return self._s[1651]! } - public var AutoDownloadSettings_PhotosTitle: String { return self._s[1652]! } - public var Conversation_SendMessageErrorGroupRestricted: String { return self._s[1653]! } - public var Map_LiveLocationGroupDescription: String { return self._s[1654]! } - public var Channel_Setup_TypeHeader: String { return self._s[1655]! } - public var AuthSessions_LoggedIn: String { return self._s[1656]! } - public var Privacy_Forwards_AlwaysAllow_Title: String { return self._s[1657]! } - public var Login_SmsRequestState3: String { return self._s[1658]! } - public var Passport_Address_EditUtilityBill: String { return self._s[1659]! } - public var Appearance_ReduceMotionInfo: String { return self._s[1660]! } - public var Channel_Edit_LinkItem: String { return self._s[1661]! } - public var Privacy_Calls_P2PNever: String { return self._s[1662]! } - public var Conversation_AddToReadingList: String { return self._s[1664]! } - public var Message_Animation: String { return self._s[1665]! } - public var Conversation_DefaultRestrictedMedia: String { return self._s[1666]! } - public var Map_Unknown: String { return self._s[1667]! } - public var AutoDownloadSettings_LastDelimeter: String { return self._s[1668]! } + public var Conversation_Info: String { return self._s[1646]! } + public var Login_InfoDeletePhoto: String { return self._s[1647]! } + public var Passport_Language_vi: String { return self._s[1649]! } + public var UserInfo_ScamUserWarning: String { return self._s[1650]! } + public var Conversation_Search: String { return self._s[1651]! } + public var DialogList_DeleteBotConversationConfirmation: String { return self._s[1652]! } + public var ReportPeer_ReasonPornography: String { return self._s[1653]! } + public var AutoDownloadSettings_PhotosTitle: String { return self._s[1654]! } + public var Conversation_SendMessageErrorGroupRestricted: String { return self._s[1655]! } + public var Map_LiveLocationGroupDescription: String { return self._s[1656]! } + public var Channel_Setup_TypeHeader: String { return self._s[1657]! } + public var AuthSessions_LoggedIn: String { return self._s[1658]! } + public var Privacy_Forwards_AlwaysAllow_Title: String { return self._s[1659]! } + public var Login_SmsRequestState3: String { return self._s[1660]! } + public var Passport_Address_EditUtilityBill: String { return self._s[1661]! } + public var Appearance_ReduceMotionInfo: String { return self._s[1662]! } + public var Channel_Edit_LinkItem: String { return self._s[1663]! } + public var Privacy_Calls_P2PNever: String { return self._s[1664]! } + public var Conversation_AddToReadingList: String { return self._s[1666]! } + public var Message_Animation: String { return self._s[1667]! } + public var Conversation_DefaultRestrictedMedia: String { return self._s[1668]! } + public var Map_Unknown: String { return self._s[1669]! } + public var AutoDownloadSettings_LastDelimeter: String { return self._s[1670]! } public func PUSH_PINNED_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1669]!, self._r[1669]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1671]!, self._r[1671]!, [_1, _2]) } public func Passport_FieldOneOf_Or(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1670]!, self._r[1670]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1672]!, self._r[1672]!, [_1, _2]) } - public var Call_StatusRequesting: String { return self._s[1671]! } - public var Conversation_SecretChatContextBotAlert: String { return self._s[1672]! } - public var SocksProxySetup_ProxyStatusChecking: String { return self._s[1673]! } + public var Call_StatusRequesting: String { return self._s[1673]! } + public var Conversation_SecretChatContextBotAlert: String { return self._s[1674]! } + public var SocksProxySetup_ProxyStatusChecking: String { return self._s[1675]! } public func PUSH_CHAT_MESSAGE_DOC(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1674]!, self._r[1674]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1676]!, self._r[1676]!, [_1, _2]) } public func Notification_PinnedLocationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1675]!, self._r[1675]!, [_0]) + return formatWithArgumentRanges(self._s[1677]!, self._r[1677]!, [_0]) } - public var Update_Skip: String { return self._s[1676]! } - public var Group_Username_RemoveExistingUsernamesInfo: String { return self._s[1677]! } - public var Message_PinnedPollMessage: String { return self._s[1678]! } - public var BlockedUsers_Title: String { return self._s[1679]! } + public var Update_Skip: String { return self._s[1678]! } + public var Group_Username_RemoveExistingUsernamesInfo: String { return self._s[1679]! } + public var Message_PinnedPollMessage: String { return self._s[1680]! } + public var BlockedUsers_Title: String { return self._s[1681]! } public func PUSH_CHANNEL_MESSAGE_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1680]!, self._r[1680]!, [_1]) + return formatWithArgumentRanges(self._s[1682]!, self._r[1682]!, [_1]) } - public var Username_CheckingUsername: String { return self._s[1681]! } - public var NotificationsSound_Bell: String { return self._s[1682]! } - public var Conversation_SendMessageErrorFlood: String { return self._s[1683]! } - public var Weekday_Monday: String { return self._s[1684]! } - public var SettingsSearch_Synonyms_Notifications_DisplayNamesOnLockScreen: String { return self._s[1685]! } - public var ChannelMembers_ChannelAdminsTitle: String { return self._s[1686]! } - public var ChatSettings_Groups: String { return self._s[1687]! } - public var Your_card_was_declined: String { return self._s[1688]! } - public var TwoStepAuth_EnterPasswordHelp: String { return self._s[1690]! } - public var ChatList_Unmute: String { return self._s[1691]! } - public var PhotoEditor_CurvesAll: String { return self._s[1692]! } - public var Weekday_ShortTuesday: String { return self._s[1693]! } - public var DialogList_Read: String { return self._s[1694]! } - public var Appearance_AppIconClassic: String { return self._s[1695]! } - public var ChannelMembers_WhoCanAddMembers_AllMembers: String { return self._s[1696]! } - public var Passport_Identity_Gender: String { return self._s[1697]! } + public var Username_CheckingUsername: String { return self._s[1683]! } + public var NotificationsSound_Bell: String { return self._s[1684]! } + public var Conversation_SendMessageErrorFlood: String { return self._s[1685]! } + public var Weekday_Monday: String { return self._s[1686]! } + public var SettingsSearch_Synonyms_Notifications_DisplayNamesOnLockScreen: String { return self._s[1687]! } + public var ChannelMembers_ChannelAdminsTitle: String { return self._s[1688]! } + public var ChatSettings_Groups: String { return self._s[1689]! } + public var Your_card_was_declined: String { return self._s[1690]! } + public var TwoStepAuth_EnterPasswordHelp: String { return self._s[1692]! } + public var ChatList_Unmute: String { return self._s[1693]! } + public var PhotoEditor_CurvesAll: String { return self._s[1694]! } + public var Weekday_ShortTuesday: String { return self._s[1695]! } + public var DialogList_Read: String { return self._s[1696]! } + public var Appearance_AppIconClassic: String { return self._s[1697]! } + public var ChannelMembers_WhoCanAddMembers_AllMembers: String { return self._s[1698]! } + public var Passport_Identity_Gender: String { return self._s[1699]! } public func Target_ShareGameConfirmationPrivate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1698]!, self._r[1698]!, [_0]) + return formatWithArgumentRanges(self._s[1700]!, self._r[1700]!, [_0]) } - public var Target_SelectGroup: String { return self._s[1699]! } + public var Target_SelectGroup: String { return self._s[1701]! } public func DialogList_EncryptedChatStartedIncoming(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1701]!, self._r[1701]!, [_0]) + return formatWithArgumentRanges(self._s[1703]!, self._r[1703]!, [_0]) } - public var Passport_Language_en: String { return self._s[1702]! } - public var AutoDownloadSettings_AutodownloadPhotos: String { return self._s[1703]! } - public var Channel_Username_CreatePublicLinkHelp: String { return self._s[1704]! } - public var Login_CancelPhoneVerificationContinue: String { return self._s[1705]! } - public var Checkout_NewCard_PaymentCard: String { return self._s[1707]! } - public var Login_InfoHelp: String { return self._s[1708]! } - public var Contacts_PermissionsSuppressWarningTitle: String { return self._s[1709]! } - public var SettingsSearch_Synonyms_Stickers_FeaturedPacks: String { return self._s[1710]! } + public var Passport_Language_en: String { return self._s[1704]! } + public var AutoDownloadSettings_AutodownloadPhotos: String { return self._s[1705]! } + public var Channel_Username_CreatePublicLinkHelp: String { return self._s[1706]! } + public var Login_CancelPhoneVerificationContinue: String { return self._s[1707]! } + public var Checkout_NewCard_PaymentCard: String { return self._s[1709]! } + public var Login_InfoHelp: String { return self._s[1710]! } + public var Contacts_PermissionsSuppressWarningTitle: String { return self._s[1711]! } + public var SettingsSearch_Synonyms_Stickers_FeaturedPacks: String { return self._s[1712]! } public func Channel_AdminLog_MessageChangedLinkedChannel(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1711]!, self._r[1711]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1713]!, self._r[1713]!, [_1, _2]) } - public var SocksProxySetup_AddProxy: String { return self._s[1714]! } - public var CreatePoll_Title: String { return self._s[1715]! } - public var SettingsSearch_Synonyms_Privacy_Data_SecretChatLinkPreview: String { return self._s[1716]! } - public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[1717]! } - public var UserInfo_GroupsInCommon: String { return self._s[1718]! } - public var Call_AudioRouteHide: String { return self._s[1719]! } - public var ContactInfo_PhoneLabelMobile: String { return self._s[1721]! } + public var SocksProxySetup_AddProxy: String { return self._s[1716]! } + public var CreatePoll_Title: String { return self._s[1717]! } + public var SettingsSearch_Synonyms_Privacy_Data_SecretChatLinkPreview: String { return self._s[1718]! } + public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[1719]! } + public var UserInfo_GroupsInCommon: String { return self._s[1720]! } + public var Call_AudioRouteHide: String { return self._s[1721]! } + public var ContactInfo_PhoneLabelMobile: String { return self._s[1723]! } public func ChatList_LeaveGroupConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1722]!, self._r[1722]!, [_0]) + return formatWithArgumentRanges(self._s[1724]!, self._r[1724]!, [_0]) } - public var TextFormat_Bold: String { return self._s[1723]! } - public var FastTwoStepSetup_EmailSection: String { return self._s[1724]! } - public var Notifications_Title: String { return self._s[1725]! } - public var Group_Username_InvalidTooShort: String { return self._s[1726]! } - public var Channel_ErrorAddTooMuch: String { return self._s[1727]! } + public var TextFormat_Bold: String { return self._s[1725]! } + public var FastTwoStepSetup_EmailSection: String { return self._s[1726]! } + public var Notifications_Title: String { return self._s[1727]! } + public var Group_Username_InvalidTooShort: String { return self._s[1728]! } + public var Channel_ErrorAddTooMuch: String { return self._s[1729]! } public func DialogList_MultipleTypingSuffix(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1728]!, self._r[1728]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[1730]!, self._r[1730]!, ["\(_0)"]) } - public var Stickers_SuggestAdded: String { return self._s[1730]! } - public var Login_CountryCode: String { return self._s[1731]! } - public var ChatSettings_AutoPlayVideos: String { return self._s[1732]! } - public var Map_GetDirections: String { return self._s[1733]! } - public var Login_PhoneFloodError: String { return self._s[1734]! } + public var Stickers_SuggestAdded: String { return self._s[1732]! } + public var Login_CountryCode: String { return self._s[1733]! } + public var ChatSettings_AutoPlayVideos: String { return self._s[1734]! } + public var Map_GetDirections: String { return self._s[1735]! } + public var Login_PhoneFloodError: String { return self._s[1736]! } public func Time_MonthOfYear_m3(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1735]!, self._r[1735]!, [_0]) + return formatWithArgumentRanges(self._s[1737]!, self._r[1737]!, [_0]) } - public var Settings_SetUsername: String { return self._s[1737]! } - public var Group_Location_ChangeLocation: String { return self._s[1738]! } - public var Notification_GroupInviterSelf: String { return self._s[1739]! } - public var InstantPage_TapToOpenLink: String { return self._s[1740]! } + public var Settings_SetUsername: String { return self._s[1739]! } + public var Group_Location_ChangeLocation: String { return self._s[1740]! } + public var Notification_GroupInviterSelf: String { return self._s[1741]! } + public var InstantPage_TapToOpenLink: String { return self._s[1742]! } public func Notification_ChannelInviter(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1741]!, self._r[1741]!, [_0]) + return formatWithArgumentRanges(self._s[1743]!, self._r[1743]!, [_0]) } - public var Watch_Suggestion_TalkLater: String { return self._s[1742]! } - public var SecretChat_Title: String { return self._s[1743]! } - public var Group_UpgradeNoticeText1: String { return self._s[1744]! } - public var AuthSessions_Title: String { return self._s[1745]! } + public var Watch_Suggestion_TalkLater: String { return self._s[1744]! } + public var SecretChat_Title: String { return self._s[1745]! } + public var Group_UpgradeNoticeText1: String { return self._s[1746]! } + public var AuthSessions_Title: String { return self._s[1747]! } public func TextFormat_AddLinkText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1746]!, self._r[1746]!, [_0]) + return formatWithArgumentRanges(self._s[1748]!, self._r[1748]!, [_0]) } - public var PhotoEditor_CropAuto: String { return self._s[1747]! } - public var Channel_About_Title: String { return self._s[1748]! } - public var FastTwoStepSetup_EmailHelp: String { return self._s[1749]! } + public var PhotoEditor_CropAuto: String { return self._s[1749]! } + public var Channel_About_Title: String { return self._s[1750]! } + public var FastTwoStepSetup_EmailHelp: String { return self._s[1751]! } public func Conversation_Bytes(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1751]!, self._r[1751]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[1753]!, self._r[1753]!, ["\(_0)"]) } - public var Conversation_PinMessageAlert_OnlyPin: String { return self._s[1753]! } - public var Group_Setup_HistoryVisibleHelp: String { return self._s[1754]! } + public var Conversation_PinMessageAlert_OnlyPin: String { return self._s[1755]! } + public var Group_Setup_HistoryVisibleHelp: String { return self._s[1756]! } public func PUSH_MESSAGE_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1755]!, self._r[1755]!, [_1]) + return formatWithArgumentRanges(self._s[1757]!, self._r[1757]!, [_1]) } public func SharedMedia_SearchNoResultsDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1757]!, self._r[1757]!, [_0]) + return formatWithArgumentRanges(self._s[1759]!, self._r[1759]!, [_0]) } public func TwoStepAuth_RecoveryEmailUnavailable(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1758]!, self._r[1758]!, [_0]) + return formatWithArgumentRanges(self._s[1760]!, self._r[1760]!, [_0]) } - public var Privacy_PaymentsClearInfoHelp: String { return self._s[1759]! } - public var Presence_online: String { return self._s[1761]! } - public var PasscodeSettings_Title: String { return self._s[1762]! } - public var Passport_Identity_ExpiryDatePlaceholder: String { return self._s[1763]! } - public var Web_OpenExternal: String { return self._s[1764]! } - public var AutoDownloadSettings_AutoDownload: String { return self._s[1766]! } - public var Channel_OwnershipTransfer_EnterPasswordText: String { return self._s[1767]! } - public var LocalGroup_Title: String { return self._s[1768]! } + public var Privacy_PaymentsClearInfoHelp: String { return self._s[1761]! } + public var Presence_online: String { return self._s[1763]! } + public var PasscodeSettings_Title: String { return self._s[1764]! } + public var Passport_Identity_ExpiryDatePlaceholder: String { return self._s[1765]! } + public var Web_OpenExternal: String { return self._s[1766]! } + public var AutoDownloadSettings_AutoDownload: String { return self._s[1768]! } + public var Channel_OwnershipTransfer_EnterPasswordText: String { return self._s[1769]! } + public var LocalGroup_Title: String { return self._s[1770]! } public func AutoNightTheme_AutomaticHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1769]!, self._r[1769]!, [_0]) + return formatWithArgumentRanges(self._s[1771]!, self._r[1771]!, [_0]) } - public var FastTwoStepSetup_PasswordConfirmationPlaceholder: String { return self._s[1770]! } - public var Map_YouAreHere: String { return self._s[1771]! } + public var FastTwoStepSetup_PasswordConfirmationPlaceholder: String { return self._s[1772]! } + public var Map_YouAreHere: String { return self._s[1773]! } public func AuthSessions_Message(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1772]!, self._r[1772]!, [_0]) + return formatWithArgumentRanges(self._s[1774]!, self._r[1774]!, [_0]) } public func ChatList_DeleteChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1773]!, self._r[1773]!, [_0]) + return formatWithArgumentRanges(self._s[1775]!, self._r[1775]!, [_0]) } - public var PrivacyLastSeenSettings_AlwaysShareWith: String { return self._s[1774]! } - public var Target_InviteToGroupErrorAlreadyInvited: String { return self._s[1775]! } + public var PrivacyLastSeenSettings_AlwaysShareWith: String { return self._s[1776]! } + public var Target_InviteToGroupErrorAlreadyInvited: String { return self._s[1777]! } public func AuthSessions_AppUnofficial(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1776]!, self._r[1776]!, [_0]) + return formatWithArgumentRanges(self._s[1778]!, self._r[1778]!, [_0]) } public func DialogList_LiveLocationSharingTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1777]!, self._r[1777]!, [_0]) + return formatWithArgumentRanges(self._s[1779]!, self._r[1779]!, [_0]) } - public var SocksProxySetup_Username: String { return self._s[1778]! } - public var Bot_Start: String { return self._s[1779]! } + public var SocksProxySetup_Username: String { return self._s[1780]! } + public var Bot_Start: String { return self._s[1781]! } public func Channel_AdminLog_EmptyFilterQueryText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1780]!, self._r[1780]!, [_0]) + return formatWithArgumentRanges(self._s[1782]!, self._r[1782]!, [_0]) } public func Channel_AdminLog_MessagePinned(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1781]!, self._r[1781]!, [_0]) + return formatWithArgumentRanges(self._s[1783]!, self._r[1783]!, [_0]) } - public var Contacts_SortByPresence: String { return self._s[1782]! } - public var Conversation_DiscardVoiceMessageTitle: String { return self._s[1784]! } + public var Contacts_SortByPresence: String { return self._s[1784]! } + public var Conversation_DiscardVoiceMessageTitle: String { return self._s[1786]! } public func PUSH_CHAT_CREATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1785]!, self._r[1785]!, [_1, _2]) - } - public func PrivacySettings_LastSeenContactsMinus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1786]!, self._r[1786]!, [_0]) - } - public func Channel_AdminLog_MessageChangedLinkedGroup(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1787]!, self._r[1787]!, [_1, _2]) } - public var Passport_Email_EnterOtherEmail: String { return self._s[1788]! } - public var Login_InfoAvatarPhoto: String { return self._s[1789]! } - public var Privacy_PaymentsClear_ShippingInfo: String { return self._s[1790]! } - public var Tour_Title4: String { return self._s[1791]! } - public var Passport_Identity_Translation: String { return self._s[1792]! } - public var SettingsSearch_Synonyms_Notifications_ContactJoined: String { return self._s[1793]! } - public var Login_TermsOfServiceLabel: String { return self._s[1795]! } - public var Passport_Language_it: String { return self._s[1796]! } - public var KeyCommand_JumpToNextUnreadChat: String { return self._s[1797]! } - public var Passport_Identity_SelfieHelp: String { return self._s[1798]! } - public var Conversation_ClearAll: String { return self._s[1800]! } - public var Channel_OwnershipTransfer_Title: String { return self._s[1802]! } - public var TwoStepAuth_FloodError: String { return self._s[1803]! } + public func PrivacySettings_LastSeenContactsMinus(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1788]!, self._r[1788]!, [_0]) + } + public func Channel_AdminLog_MessageChangedLinkedGroup(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1789]!, self._r[1789]!, [_1, _2]) + } + public var Passport_Email_EnterOtherEmail: String { return self._s[1790]! } + public var Login_InfoAvatarPhoto: String { return self._s[1791]! } + public var Privacy_PaymentsClear_ShippingInfo: String { return self._s[1792]! } + public var Tour_Title4: String { return self._s[1793]! } + public var Passport_Identity_Translation: String { return self._s[1794]! } + public var SettingsSearch_Synonyms_Notifications_ContactJoined: String { return self._s[1795]! } + public var Login_TermsOfServiceLabel: String { return self._s[1797]! } + public var Passport_Language_it: String { return self._s[1798]! } + public var KeyCommand_JumpToNextUnreadChat: String { return self._s[1799]! } + public var Passport_Identity_SelfieHelp: String { return self._s[1800]! } + public var Conversation_ClearAll: String { return self._s[1802]! } + public var Channel_OwnershipTransfer_Title: String { return self._s[1804]! } + public var TwoStepAuth_FloodError: String { return self._s[1805]! } public func PUSH_CHANNEL_MESSAGE_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1804]!, self._r[1804]!, [_1]) + return formatWithArgumentRanges(self._s[1806]!, self._r[1806]!, [_1]) } - public var Paint_Delete: String { return self._s[1805]! } - public var Privacy_AddNewPeer: String { return self._s[1806]! } - public var LogoutOptions_SetPasscodeText: String { return self._s[1807]! } + public var Paint_Delete: String { return self._s[1807]! } + public var Privacy_AddNewPeer: String { return self._s[1808]! } + public var LogoutOptions_SetPasscodeText: String { return self._s[1809]! } public func Passport_AcceptHelp(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1808]!, self._r[1808]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1810]!, self._r[1810]!, [_1, _2]) } - public var Message_PinnedAudioMessage: String { return self._s[1809]! } + public var Message_PinnedAudioMessage: String { return self._s[1811]! } public func Watch_Time_ShortTodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1810]!, self._r[1810]!, [_0]) + return formatWithArgumentRanges(self._s[1812]!, self._r[1812]!, [_0]) } - public var Notification_Mute1hMin: String { return self._s[1811]! } - public var Notifications_GroupNotificationsSound: String { return self._s[1812]! } - public var SocksProxySetup_ShareProxyList: String { return self._s[1813]! } - public var Conversation_MessageEditedLabel: String { return self._s[1814]! } - public var Notification_Exceptions_AlwaysOff: String { return self._s[1815]! } - public var Notification_Exceptions_NewException_MessagePreviewHeader: String { return self._s[1816]! } + public var Notification_Mute1hMin: String { return self._s[1813]! } + public var Notifications_GroupNotificationsSound: String { return self._s[1814]! } + public var SocksProxySetup_ShareProxyList: String { return self._s[1815]! } + public var Conversation_MessageEditedLabel: String { return self._s[1816]! } + public var Notification_Exceptions_AlwaysOff: String { return self._s[1817]! } + public var Notification_Exceptions_NewException_MessagePreviewHeader: String { return self._s[1818]! } public func Channel_AdminLog_MessageAdmin(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1817]!, self._r[1817]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[1819]!, self._r[1819]!, [_0, _1, _2]) } - public var NetworkUsageSettings_ResetStats: String { return self._s[1818]! } + public var NetworkUsageSettings_ResetStats: String { return self._s[1820]! } public func PUSH_MESSAGE_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1819]!, self._r[1819]!, [_1]) + return formatWithArgumentRanges(self._s[1821]!, self._r[1821]!, [_1]) } - public var AccessDenied_LocationTracking: String { return self._s[1820]! } - public var Month_GenOctober: String { return self._s[1821]! } - public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[1822]! } - public var EnterPasscode_EnterPasscode: String { return self._s[1823]! } - public var MediaPicker_TimerTooltip: String { return self._s[1825]! } - public var SharedMedia_TitleAll: String { return self._s[1826]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsExceptions: String { return self._s[1829]! } - public var Conversation_RestrictedMedia: String { return self._s[1830]! } - public var AccessDenied_PhotosRestricted: String { return self._s[1831]! } - public var Privacy_Forwards_WhoCanForward: String { return self._s[1833]! } - public var ChangePhoneNumberCode_Called: String { return self._s[1834]! } + public var AccessDenied_LocationTracking: String { return self._s[1822]! } + public var Month_GenOctober: String { return self._s[1823]! } + public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[1824]! } + public var EnterPasscode_EnterPasscode: String { return self._s[1825]! } + public var MediaPicker_TimerTooltip: String { return self._s[1827]! } + public var SharedMedia_TitleAll: String { return self._s[1828]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsExceptions: String { return self._s[1831]! } + public var Conversation_RestrictedMedia: String { return self._s[1832]! } + public var AccessDenied_PhotosRestricted: String { return self._s[1833]! } + public var Privacy_Forwards_WhoCanForward: String { return self._s[1835]! } + public var ChangePhoneNumberCode_Called: String { return self._s[1836]! } public func Notification_PinnedDocumentMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1835]!, self._r[1835]!, [_0]) + return formatWithArgumentRanges(self._s[1837]!, self._r[1837]!, [_0]) } - public var Conversation_SavedMessages: String { return self._s[1838]! } - public var Your_cards_expiration_month_is_invalid: String { return self._s[1840]! } - public var FastTwoStepSetup_PasswordPlaceholder: String { return self._s[1841]! } + public var Conversation_SavedMessages: String { return self._s[1840]! } + public var Your_cards_expiration_month_is_invalid: String { return self._s[1842]! } + public var FastTwoStepSetup_PasswordPlaceholder: String { return self._s[1843]! } public func Target_ShareGameConfirmationGroup(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1843]!, self._r[1843]!, [_0]) + return formatWithArgumentRanges(self._s[1845]!, self._r[1845]!, [_0]) } - public var ReportPeer_AlertSuccess: String { return self._s[1844]! } - public var PhotoEditor_CropAspectRatioOriginal: String { return self._s[1845]! } + public var ReportPeer_AlertSuccess: String { return self._s[1846]! } + public var PhotoEditor_CropAspectRatioOriginal: String { return self._s[1847]! } public func InstantPage_RelatedArticleAuthorAndDateTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1846]!, self._r[1846]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1848]!, self._r[1848]!, [_1, _2]) } - public var Checkout_PasswordEntry_Title: String { return self._s[1847]! } - public var PhotoEditor_FadeTool: String { return self._s[1848]! } - public var Privacy_ContactsReset: String { return self._s[1849]! } + public var Checkout_PasswordEntry_Title: String { return self._s[1849]! } + public var PhotoEditor_FadeTool: String { return self._s[1850]! } + public var Privacy_ContactsReset: String { return self._s[1851]! } public func Channel_AdminLog_MessageRestrictedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1851]!, self._r[1851]!, [_0]) + return formatWithArgumentRanges(self._s[1853]!, self._r[1853]!, [_0]) } - public var Message_PinnedVideoMessage: String { return self._s[1852]! } - public var ChatList_Mute: String { return self._s[1853]! } - public var Permissions_CellularDataText_v0: String { return self._s[1854]! } - public var ShareMenu_SelectChats: String { return self._s[1856]! } - public var MusicPlayer_VoiceNote: String { return self._s[1857]! } - public var Conversation_RestrictedText: String { return self._s[1858]! } - public var SettingsSearch_Synonyms_Privacy_Data_DeleteDrafts: String { return self._s[1859]! } - public var TwoStepAuth_DisableSuccess: String { return self._s[1860]! } - public var Cache_Videos: String { return self._s[1861]! } - public var PrivacySettings_PhoneNumber: String { return self._s[1862]! } - public var FeatureDisabled_Oops: String { return self._s[1864]! } - public var Passport_Address_PostcodePlaceholder: String { return self._s[1865]! } + public var Message_PinnedVideoMessage: String { return self._s[1854]! } + public var ChatList_Mute: String { return self._s[1855]! } + public var Permissions_CellularDataText_v0: String { return self._s[1856]! } + public var ShareMenu_SelectChats: String { return self._s[1858]! } + public var MusicPlayer_VoiceNote: String { return self._s[1859]! } + public var Conversation_RestrictedText: String { return self._s[1860]! } + public var SettingsSearch_Synonyms_Privacy_Data_DeleteDrafts: String { return self._s[1861]! } + public var TwoStepAuth_DisableSuccess: String { return self._s[1862]! } + public var Cache_Videos: String { return self._s[1863]! } + public var PrivacySettings_PhoneNumber: String { return self._s[1864]! } + public var FeatureDisabled_Oops: String { return self._s[1866]! } + public var Passport_Address_PostcodePlaceholder: String { return self._s[1867]! } public func AddContact_StatusSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1866]!, self._r[1866]!, [_0]) + return formatWithArgumentRanges(self._s[1868]!, self._r[1868]!, [_0]) } - public var Stickers_GroupStickersHelp: String { return self._s[1867]! } - public var GroupPermission_NoSendPolls: String { return self._s[1868]! } - public var Message_VideoExpired: String { return self._s[1870]! } - public var Notifications_Badge: String { return self._s[1871]! } - public var GroupInfo_GroupHistoryVisible: String { return self._s[1872]! } - public var CreatePoll_OptionPlaceholder: String { return self._s[1873]! } - public var Username_InvalidTooShort: String { return self._s[1874]! } - public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[1875]! } - public var Channel_AdminLog_PinMessages: String { return self._s[1876]! } - public var ArchivedChats_IntroTitle3: String { return self._s[1877]! } + public var Stickers_GroupStickersHelp: String { return self._s[1869]! } + public var GroupPermission_NoSendPolls: String { return self._s[1870]! } + public var Message_VideoExpired: String { return self._s[1872]! } + public var Notifications_Badge: String { return self._s[1873]! } + public var GroupInfo_GroupHistoryVisible: String { return self._s[1874]! } + public var CreatePoll_OptionPlaceholder: String { return self._s[1875]! } + public var Username_InvalidTooShort: String { return self._s[1876]! } + public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[1877]! } + public var Channel_AdminLog_PinMessages: String { return self._s[1878]! } + public var ArchivedChats_IntroTitle3: String { return self._s[1879]! } public func Notification_MessageLifetimeRemoved(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1878]!, self._r[1878]!, [_1]) + return formatWithArgumentRanges(self._s[1880]!, self._r[1880]!, [_1]) } - public var Permissions_SiriAllowInSettings_v0: String { return self._s[1879]! } - public var Conversation_DefaultRestrictedText: String { return self._s[1880]! } - public var SharedMedia_CategoryDocs: String { return self._s[1883]! } + public var Permissions_SiriAllowInSettings_v0: String { return self._s[1881]! } + public var Conversation_DefaultRestrictedText: String { return self._s[1882]! } + public var SharedMedia_CategoryDocs: String { return self._s[1885]! } public func PUSH_MESSAGE_CONTACT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1884]!, self._r[1884]!, [_1]) + return formatWithArgumentRanges(self._s[1886]!, self._r[1886]!, [_1]) } - public var Privacy_Forwards_NeverLink: String { return self._s[1886]! } + public var Privacy_Forwards_NeverLink: String { return self._s[1888]! } public func Notification_MessageLifetimeChangedOutgoing(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1887]!, self._r[1887]!, [_1]) + return formatWithArgumentRanges(self._s[1889]!, self._r[1889]!, [_1]) } - public var CheckoutInfo_ErrorShippingNotAvailable: String { return self._s[1888]! } + public var CheckoutInfo_ErrorShippingNotAvailable: String { return self._s[1890]! } public func Time_MonthOfYear_m12(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1889]!, self._r[1889]!, [_0]) + return formatWithArgumentRanges(self._s[1891]!, self._r[1891]!, [_0]) } - public var ChatSettings_PrivateChats: String { return self._s[1890]! } - public var SettingsSearch_Synonyms_EditProfile_Logout: String { return self._s[1891]! } - public var Conversation_PrivateMessageLinkCopied: String { return self._s[1892]! } - public var Channel_UpdatePhotoItem: String { return self._s[1893]! } - public var GroupInfo_LeftStatus: String { return self._s[1894]! } - public var Watch_MessageView_Forward: String { return self._s[1896]! } - public var ReportPeer_ReasonChildAbuse: String { return self._s[1897]! } - public var Cache_ClearEmpty: String { return self._s[1899]! } - public var Localization_LanguageName: String { return self._s[1900]! } - public var WebSearch_GIFs: String { return self._s[1901]! } - public var Notifications_DisplayNamesOnLockScreenInfoWithLink: String { return self._s[1902]! } - public var Username_InvalidStartsWithNumber: String { return self._s[1903]! } - public var Common_Back: String { return self._s[1904]! } - public var Passport_Identity_DateOfBirthPlaceholder: String { return self._s[1905]! } + public var ChatSettings_PrivateChats: String { return self._s[1892]! } + public var SettingsSearch_Synonyms_EditProfile_Logout: String { return self._s[1893]! } + public var Conversation_PrivateMessageLinkCopied: String { return self._s[1894]! } + public var Channel_UpdatePhotoItem: String { return self._s[1895]! } + public var GroupInfo_LeftStatus: String { return self._s[1896]! } + public var Watch_MessageView_Forward: String { return self._s[1898]! } + public var ReportPeer_ReasonChildAbuse: String { return self._s[1899]! } + public var Cache_ClearEmpty: String { return self._s[1901]! } + public var Localization_LanguageName: String { return self._s[1902]! } + public var WebSearch_GIFs: String { return self._s[1903]! } + public var Notifications_DisplayNamesOnLockScreenInfoWithLink: String { return self._s[1904]! } + public var Username_InvalidStartsWithNumber: String { return self._s[1905]! } + public var Common_Back: String { return self._s[1906]! } + public var Passport_Identity_DateOfBirthPlaceholder: String { return self._s[1907]! } public func PUSH_CHANNEL_MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1906]!, self._r[1906]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1908]!, self._r[1908]!, [_1, _2]) } - public var Passport_Email_Help: String { return self._s[1907]! } - public var Watch_Conversation_Reply: String { return self._s[1909]! } - public var Conversation_EditingMessageMediaChange: String { return self._s[1911]! } - public var Passport_Identity_IssueDatePlaceholder: String { return self._s[1912]! } - public var Channel_BanUser_Unban: String { return self._s[1914]! } - public var Channel_EditAdmin_PermissionPostMessages: String { return self._s[1915]! } - public var Group_Username_CreatePublicLinkHelp: String { return self._s[1916]! } - public var TwoStepAuth_ConfirmEmailCodePlaceholder: String { return self._s[1918]! } - public var Passport_Identity_Name: String { return self._s[1919]! } + public var Passport_Email_Help: String { return self._s[1909]! } + public var Watch_Conversation_Reply: String { return self._s[1911]! } + public var Conversation_EditingMessageMediaChange: String { return self._s[1913]! } + public var Passport_Identity_IssueDatePlaceholder: String { return self._s[1914]! } + public var Channel_BanUser_Unban: String { return self._s[1916]! } + public var Channel_EditAdmin_PermissionPostMessages: String { return self._s[1917]! } + public var Group_Username_CreatePublicLinkHelp: String { return self._s[1918]! } + public var TwoStepAuth_ConfirmEmailCodePlaceholder: String { return self._s[1920]! } + public var Passport_Identity_Name: String { return self._s[1921]! } public func Channel_DiscussionGroup_HeaderGroupSet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1920]!, self._r[1920]!, [_0]) + return formatWithArgumentRanges(self._s[1922]!, self._r[1922]!, [_0]) } - public var GroupRemoved_ViewUserInfo: String { return self._s[1921]! } - public var Conversation_BlockUser: String { return self._s[1922]! } - public var Month_GenJanuary: String { return self._s[1923]! } - public var ChatSettings_TextSize: String { return self._s[1924]! } - public var Notification_PassportValuePhone: String { return self._s[1925]! } - public var Passport_Language_ne: String { return self._s[1926]! } - public var Notification_CallBack: String { return self._s[1927]! } - public var TwoStepAuth_EmailHelp: String { return self._s[1928]! } + public var GroupRemoved_ViewUserInfo: String { return self._s[1923]! } + public var Conversation_BlockUser: String { return self._s[1924]! } + public var Month_GenJanuary: String { return self._s[1925]! } + public var ChatSettings_TextSize: String { return self._s[1926]! } + public var Notification_PassportValuePhone: String { return self._s[1927]! } + public var Passport_Language_ne: String { return self._s[1928]! } + public var Notification_CallBack: String { return self._s[1929]! } + public var TwoStepAuth_EmailHelp: String { return self._s[1930]! } public func Time_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1929]!, self._r[1929]!, [_0]) + return formatWithArgumentRanges(self._s[1931]!, self._r[1931]!, [_0]) } - public var Channel_Info_Management: String { return self._s[1930]! } - public var Passport_FieldIdentityUploadHelp: String { return self._s[1931]! } - public var Stickers_FrequentlyUsed: String { return self._s[1932]! } - public var Channel_BanUser_PermissionSendMessages: String { return self._s[1933]! } - public var Passport_Address_OneOfTypeUtilityBill: String { return self._s[1935]! } + public var Channel_Info_Management: String { return self._s[1932]! } + public var Passport_FieldIdentityUploadHelp: String { return self._s[1933]! } + public var Stickers_FrequentlyUsed: String { return self._s[1934]! } + public var Channel_BanUser_PermissionSendMessages: String { return self._s[1935]! } + public var Passport_Address_OneOfTypeUtilityBill: String { return self._s[1937]! } public func LOCAL_CHANNEL_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1936]!, self._r[1936]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[1938]!, self._r[1938]!, [_1, "\(_2)"]) } - public var Passport_Address_EditResidentialAddress: String { return self._s[1937]! } - public var PrivacyPolicy_DeclineTitle: String { return self._s[1938]! } - public var CreatePoll_TextHeader: String { return self._s[1939]! } + public var Passport_Address_EditResidentialAddress: String { return self._s[1939]! } + public var PrivacyPolicy_DeclineTitle: String { return self._s[1940]! } + public var CreatePoll_TextHeader: String { return self._s[1941]! } public func Checkout_SavePasswordTimeoutAndTouchId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1940]!, self._r[1940]!, [_0]) + return formatWithArgumentRanges(self._s[1942]!, self._r[1942]!, [_0]) } - public var PhotoEditor_QualityMedium: String { return self._s[1941]! } - public var InfoPlist_NSMicrophoneUsageDescription: String { return self._s[1942]! } - public var Conversation_StatusKickedFromChannel: String { return self._s[1944]! } - public var CheckoutInfo_ReceiverInfoName: String { return self._s[1945]! } - public var Group_ErrorSendRestrictedStickers: String { return self._s[1946]! } + public var PhotoEditor_QualityMedium: String { return self._s[1943]! } + public var InfoPlist_NSMicrophoneUsageDescription: String { return self._s[1944]! } + public var Conversation_StatusKickedFromChannel: String { return self._s[1946]! } + public var CheckoutInfo_ReceiverInfoName: String { return self._s[1947]! } + public var Group_ErrorSendRestrictedStickers: String { return self._s[1948]! } public func Conversation_RestrictedInlineTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1947]!, self._r[1947]!, [_0]) + return formatWithArgumentRanges(self._s[1949]!, self._r[1949]!, [_0]) } public func Channel_AdminLog_MessageTransferedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1948]!, self._r[1948]!, [_1]) + return formatWithArgumentRanges(self._s[1950]!, self._r[1950]!, [_1]) } - public var Conversation_LinkDialogOpen: String { return self._s[1950]! } - public var Settings_Username: String { return self._s[1951]! } - public var Conversation_Block: String { return self._s[1953]! } - public var Wallpaper_Wallpaper: String { return self._s[1954]! } - public var SocksProxySetup_UseProxy: String { return self._s[1956]! } - public var UserInfo_ShareMyContactInfo: String { return self._s[1957]! } - public var MessageTimer_Forever: String { return self._s[1958]! } - public var Privacy_Calls_WhoCanCallMe: String { return self._s[1959]! } - public var PhotoEditor_DiscardChanges: String { return self._s[1960]! } - public var AuthSessions_TerminateOtherSessionsHelp: String { return self._s[1961]! } - public var Passport_Language_da: String { return self._s[1962]! } - public var SocksProxySetup_PortPlaceholder: String { return self._s[1963]! } + public var Conversation_LinkDialogOpen: String { return self._s[1952]! } + public var Settings_Username: String { return self._s[1953]! } + public var Conversation_Block: String { return self._s[1955]! } + public var Wallpaper_Wallpaper: String { return self._s[1956]! } + public var SocksProxySetup_UseProxy: String { return self._s[1958]! } + public var UserInfo_ShareMyContactInfo: String { return self._s[1959]! } + public var MessageTimer_Forever: String { return self._s[1960]! } + public var Privacy_Calls_WhoCanCallMe: String { return self._s[1961]! } + public var PhotoEditor_DiscardChanges: String { return self._s[1962]! } + public var AuthSessions_TerminateOtherSessionsHelp: String { return self._s[1963]! } + public var Passport_Language_da: String { return self._s[1964]! } + public var SocksProxySetup_PortPlaceholder: String { return self._s[1965]! } public func SecretGIF_NotViewedYet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1964]!, self._r[1964]!, [_0]) + return formatWithArgumentRanges(self._s[1966]!, self._r[1966]!, [_0]) } - public var Passport_Address_EditPassportRegistration: String { return self._s[1965]! } + public var Passport_Address_EditPassportRegistration: String { return self._s[1967]! } public func Channel_AdminLog_MessageChangedGroupAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1967]!, self._r[1967]!, [_0]) + return formatWithArgumentRanges(self._s[1969]!, self._r[1969]!, [_0]) } - public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[1969]! } - public var Conversation_SearchByName_Prefix: String { return self._s[1970]! } - public var Conversation_PinnedPoll: String { return self._s[1971]! } - public var Conversation_EmptyGifPanelPlaceholder: String { return self._s[1972]! } + public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[1971]! } + public var Conversation_SearchByName_Prefix: String { return self._s[1972]! } + public var Conversation_PinnedPoll: String { return self._s[1973]! } + public var Conversation_EmptyGifPanelPlaceholder: String { return self._s[1974]! } public func PUSH_ENCRYPTION_ACCEPT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1973]!, self._r[1973]!, [_1]) + return formatWithArgumentRanges(self._s[1975]!, self._r[1975]!, [_1]) } - public var WallpaperSearch_ColorPurple: String { return self._s[1974]! } - public var Cache_ByPeerHeader: String { return self._s[1975]! } + public var WallpaperSearch_ColorPurple: String { return self._s[1976]! } + public var Cache_ByPeerHeader: String { return self._s[1977]! } public func Conversation_EncryptedPlaceholderTitleIncoming(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1976]!, self._r[1976]!, [_0]) + return formatWithArgumentRanges(self._s[1978]!, self._r[1978]!, [_0]) } - public var ChatSettings_AutoDownloadDocuments: String { return self._s[1977]! } - public var Notification_PinnedMessage: String { return self._s[1980]! } - public var Contacts_SortBy: String { return self._s[1982]! } + public var ChatSettings_AutoDownloadDocuments: String { return self._s[1979]! } + public var Notification_PinnedMessage: String { return self._s[1982]! } + public var Contacts_SortBy: String { return self._s[1984]! } public func PUSH_CHANNEL_MESSAGE_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1983]!, self._r[1983]!, [_1]) + return formatWithArgumentRanges(self._s[1985]!, self._r[1985]!, [_1]) } public func PUSH_MESSAGE_GAME(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1985]!, self._r[1985]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1987]!, self._r[1987]!, [_1, _2]) } - public var Call_EncryptionKey_Title: String { return self._s[1986]! } - public var Watch_UserInfo_Service: String { return self._s[1987]! } - public var SettingsSearch_Synonyms_Data_SaveEditedPhotos: String { return self._s[1989]! } - public var Conversation_Unpin: String { return self._s[1991]! } - public var CancelResetAccount_Title: String { return self._s[1992]! } - public var Map_LiveLocationFor15Minutes: String { return self._s[1993]! } + public var Call_EncryptionKey_Title: String { return self._s[1988]! } + public var Watch_UserInfo_Service: String { return self._s[1989]! } + public var SettingsSearch_Synonyms_Data_SaveEditedPhotos: String { return self._s[1991]! } + public var Conversation_Unpin: String { return self._s[1993]! } + public var CancelResetAccount_Title: String { return self._s[1994]! } + public var Map_LiveLocationFor15Minutes: String { return self._s[1995]! } public func Time_PreciseDate_m8(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1995]!, self._r[1995]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1997]!, self._r[1997]!, [_1, _2, _3]) } - public var Group_Members_AddMemberBotErrorNotAllowed: String { return self._s[1996]! } - public var CallSettings_Title: String { return self._s[1997]! } - public var SettingsSearch_Synonyms_Appearance_ChatBackground: String { return self._s[1998]! } - public var PasscodeSettings_EncryptDataHelp: String { return self._s[2000]! } - public var AutoDownloadSettings_Contacts: String { return self._s[2001]! } - public var Passport_Identity_DocumentDetails: String { return self._s[2002]! } - public var LoginPassword_PasswordHelp: String { return self._s[2003]! } - public var SettingsSearch_Synonyms_Data_AutoDownloadUsingWifi: String { return self._s[2004]! } - public var PrivacyLastSeenSettings_CustomShareSettings_Delete: String { return self._s[2005]! } - public var Checkout_TotalPaidAmount: String { return self._s[2006]! } + public var Group_Members_AddMemberBotErrorNotAllowed: String { return self._s[1998]! } + public var CallSettings_Title: String { return self._s[1999]! } + public var SettingsSearch_Synonyms_Appearance_ChatBackground: String { return self._s[2000]! } + public var PasscodeSettings_EncryptDataHelp: String { return self._s[2002]! } + public var AutoDownloadSettings_Contacts: String { return self._s[2003]! } + public var Passport_Identity_DocumentDetails: String { return self._s[2004]! } + public var LoginPassword_PasswordHelp: String { return self._s[2005]! } + public var SettingsSearch_Synonyms_Data_AutoDownloadUsingWifi: String { return self._s[2006]! } + public var PrivacyLastSeenSettings_CustomShareSettings_Delete: String { return self._s[2007]! } + public var Checkout_TotalPaidAmount: String { return self._s[2008]! } public func FileSize_KB(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2007]!, self._r[2007]!, [_0]) + return formatWithArgumentRanges(self._s[2009]!, self._r[2009]!, [_0]) } - public var PasscodeSettings_ChangePasscode: String { return self._s[2008]! } - public var Conversation_SecretLinkPreviewAlert: String { return self._s[2010]! } - public var Privacy_SecretChatsLinkPreviews: String { return self._s[2011]! } + public var PasscodeSettings_ChangePasscode: String { return self._s[2010]! } + public var Conversation_SecretLinkPreviewAlert: String { return self._s[2012]! } + public var Privacy_SecretChatsLinkPreviews: String { return self._s[2013]! } public func PUSH_CHANNEL_MESSAGE_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2012]!, self._r[2012]!, [_1]) + return formatWithArgumentRanges(self._s[2014]!, self._r[2014]!, [_1]) } - public var Contacts_InviteFriends: String { return self._s[2014]! } - public var Map_ChooseLocationTitle: String { return self._s[2015]! } - public var Conversation_StopPoll: String { return self._s[2017]! } + public var Contacts_InviteFriends: String { return self._s[2016]! } + public var Map_ChooseLocationTitle: String { return self._s[2017]! } + public var Conversation_StopPoll: String { return self._s[2019]! } public func WebSearch_SearchNoResultsDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2018]!, self._r[2018]!, [_0]) + return formatWithArgumentRanges(self._s[2020]!, self._r[2020]!, [_0]) } - public var Call_Camera: String { return self._s[2019]! } - public var LogoutOptions_ChangePhoneNumberTitle: String { return self._s[2020]! } - public var Calls_RatingFeedback: String { return self._s[2021]! } - public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[2022]! } - public var NotificationsSound_Pulse: String { return self._s[2023]! } - public var Watch_LastSeen_Lately: String { return self._s[2024]! } - public var ReportGroupLocation_Report: String { return self._s[2027]! } - public var Widget_NoUsers: String { return self._s[2028]! } - public var Conversation_UnvotePoll: String { return self._s[2029]! } - public var SettingsSearch_Synonyms_Privacy_ProfilePhoto: String { return self._s[2031]! } - public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[2032]! } - public var NotificationsSound_Circles: String { return self._s[2033]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[2035]! } - public var TwoStepAuth_RecoveryCodeExpired: String { return self._s[2036]! } - public var Proxy_TooltipUnavailable: String { return self._s[2037]! } - public var Passport_Identity_CountryPlaceholder: String { return self._s[2039]! } - public var Conversation_FileDropbox: String { return self._s[2041]! } - public var Notifications_ExceptionsUnmuted: String { return self._s[2042]! } - public var Tour_Text3: String { return self._s[2044]! } - public var Login_ResetAccountProtected_Title: String { return self._s[2046]! } - public var GroupPermission_NoSendMessages: String { return self._s[2047]! } - public var WallpaperSearch_ColorTitle: String { return self._s[2048]! } - public var ChatAdmins_AllMembersAreAdminsOnHelp: String { return self._s[2049]! } + public var Call_Camera: String { return self._s[2021]! } + public var LogoutOptions_ChangePhoneNumberTitle: String { return self._s[2022]! } + public var Calls_RatingFeedback: String { return self._s[2023]! } + public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[2024]! } + public var NotificationsSound_Pulse: String { return self._s[2025]! } + public var Watch_LastSeen_Lately: String { return self._s[2026]! } + public var ReportGroupLocation_Report: String { return self._s[2029]! } + public var Widget_NoUsers: String { return self._s[2030]! } + public var Conversation_UnvotePoll: String { return self._s[2031]! } + public var SettingsSearch_Synonyms_Privacy_ProfilePhoto: String { return self._s[2033]! } + public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[2034]! } + public var NotificationsSound_Circles: String { return self._s[2035]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[2037]! } + public var TwoStepAuth_RecoveryCodeExpired: String { return self._s[2038]! } + public var Proxy_TooltipUnavailable: String { return self._s[2039]! } + public var Passport_Identity_CountryPlaceholder: String { return self._s[2041]! } + public var Conversation_FileDropbox: String { return self._s[2043]! } + public var Notifications_ExceptionsUnmuted: String { return self._s[2044]! } + public var Tour_Text3: String { return self._s[2046]! } + public var Login_ResetAccountProtected_Title: String { return self._s[2048]! } + public var GroupPermission_NoSendMessages: String { return self._s[2049]! } + public var WallpaperSearch_ColorTitle: String { return self._s[2050]! } + public var ChatAdmins_AllMembersAreAdminsOnHelp: String { return self._s[2051]! } public func Conversation_LiveLocationYouAnd(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2051]!, self._r[2051]!, [_0]) + return formatWithArgumentRanges(self._s[2053]!, self._r[2053]!, [_0]) } - public var GroupInfo_AddParticipantTitle: String { return self._s[2052]! } - public var Checkout_ShippingOption_Title: String { return self._s[2053]! } - public var ChatSettings_AutoDownloadTitle: String { return self._s[2054]! } + public var GroupInfo_AddParticipantTitle: String { return self._s[2054]! } + public var Checkout_ShippingOption_Title: String { return self._s[2055]! } + public var ChatSettings_AutoDownloadTitle: String { return self._s[2056]! } public func DialogList_SingleTypingSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2055]!, self._r[2055]!, [_0]) + return formatWithArgumentRanges(self._s[2057]!, self._r[2057]!, [_0]) } public func ChatSettings_AutoDownloadSettings_TypeVideo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2056]!, self._r[2056]!, [_0]) + return formatWithArgumentRanges(self._s[2058]!, self._r[2058]!, [_0]) } - public var Channel_Management_LabelAdministrator: String { return self._s[2057]! } - public var OwnershipTransfer_ComeBackLater: String { return self._s[2058]! } - public var PrivacyLastSeenSettings_NeverShareWith_Placeholder: String { return self._s[2059]! } - public var AutoDownloadSettings_Photos: String { return self._s[2061]! } - public var Appearance_PreviewIncomingText: String { return self._s[2062]! } - public var ChannelInfo_ConfirmLeave: String { return self._s[2063]! } - public var MediaPicker_MomentsDateRangeSameMonthYearFormat: String { return self._s[2064]! } - public var Passport_Identity_DocumentNumberPlaceholder: String { return self._s[2065]! } - public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[2066]! } - public var PasscodeSettings_AutoLock_IfAwayFor_5minutes: String { return self._s[2067]! } - public var GroupInfo_SetGroupPhotoStop: String { return self._s[2068]! } - public var Notification_SecretChatScreenshot: String { return self._s[2069]! } - public var AccessDenied_Wallpapers: String { return self._s[2070]! } - public var Passport_Address_City: String { return self._s[2072]! } - public var InfoPlist_NSPhotoLibraryAddUsageDescription: String { return self._s[2073]! } - public var Appearance_ThemeCarouselClassic: String { return self._s[2074]! } - public var SocksProxySetup_SecretPlaceholder: String { return self._s[2075]! } - public var AccessDenied_LocationDisabled: String { return self._s[2076]! } - public var Group_Location_Title: String { return self._s[2077]! } - public var SocksProxySetup_HostnamePlaceholder: String { return self._s[2079]! } - public var GroupInfo_Sound: String { return self._s[2080]! } - public var ChannelInfo_ScamChannelWarning: String { return self._s[2081]! } - public var Stickers_RemoveFromFavorites: String { return self._s[2082]! } - public var Contacts_Title: String { return self._s[2083]! } - public var Passport_Language_fr: String { return self._s[2084]! } - public var Notifications_ResetAllNotifications: String { return self._s[2085]! } - public var PrivacySettings_SecurityTitle: String { return self._s[2088]! } - public var Checkout_NewCard_Title: String { return self._s[2089]! } - public var Login_HaveNotReceivedCodeInternal: String { return self._s[2090]! } - public var Conversation_ForwardChats: String { return self._s[2091]! } - public var PasscodeSettings_4DigitCode: String { return self._s[2093]! } - public var Settings_FAQ: String { return self._s[2095]! } - public var AutoDownloadSettings_DocumentsTitle: String { return self._s[2096]! } - public var Conversation_ContextMenuForward: String { return self._s[2097]! } - public var PrivacyPolicy_Title: String { return self._s[2102]! } - public var Notifications_TextTone: String { return self._s[2103]! } - public var Profile_CreateNewContact: String { return self._s[2104]! } - public var PrivacyPhoneNumberSettings_WhoCanSeeMyPhoneNumber: String { return self._s[2105]! } - public var Call_Speaker: String { return self._s[2107]! } - public var AutoNightTheme_AutomaticSection: String { return self._s[2108]! } - public var Channel_OwnershipTransfer_EnterPassword: String { return self._s[2110]! } - public var Channel_Username_InvalidCharacters: String { return self._s[2111]! } + public var Channel_Management_LabelAdministrator: String { return self._s[2059]! } + public var OwnershipTransfer_ComeBackLater: String { return self._s[2060]! } + public var PrivacyLastSeenSettings_NeverShareWith_Placeholder: String { return self._s[2061]! } + public var AutoDownloadSettings_Photos: String { return self._s[2063]! } + public var Appearance_PreviewIncomingText: String { return self._s[2064]! } + public var ChannelInfo_ConfirmLeave: String { return self._s[2065]! } + public var MediaPicker_MomentsDateRangeSameMonthYearFormat: String { return self._s[2066]! } + public var Passport_Identity_DocumentNumberPlaceholder: String { return self._s[2067]! } + public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[2068]! } + public var PasscodeSettings_AutoLock_IfAwayFor_5minutes: String { return self._s[2069]! } + public var GroupInfo_SetGroupPhotoStop: String { return self._s[2070]! } + public var Notification_SecretChatScreenshot: String { return self._s[2071]! } + public var AccessDenied_Wallpapers: String { return self._s[2072]! } + public var Passport_Address_City: String { return self._s[2074]! } + public var InfoPlist_NSPhotoLibraryAddUsageDescription: String { return self._s[2075]! } + public var Appearance_ThemeCarouselClassic: String { return self._s[2076]! } + public var SocksProxySetup_SecretPlaceholder: String { return self._s[2077]! } + public var AccessDenied_LocationDisabled: String { return self._s[2078]! } + public var Group_Location_Title: String { return self._s[2079]! } + public var SocksProxySetup_HostnamePlaceholder: String { return self._s[2081]! } + public var GroupInfo_Sound: String { return self._s[2082]! } + public var ChannelInfo_ScamChannelWarning: String { return self._s[2083]! } + public var Stickers_RemoveFromFavorites: String { return self._s[2084]! } + public var Contacts_Title: String { return self._s[2085]! } + public var Passport_Language_fr: String { return self._s[2086]! } + public var Notifications_ResetAllNotifications: String { return self._s[2087]! } + public var PrivacySettings_SecurityTitle: String { return self._s[2090]! } + public var Checkout_NewCard_Title: String { return self._s[2091]! } + public var Login_HaveNotReceivedCodeInternal: String { return self._s[2092]! } + public var Conversation_ForwardChats: String { return self._s[2093]! } + public var PasscodeSettings_4DigitCode: String { return self._s[2095]! } + public var Settings_FAQ: String { return self._s[2097]! } + public var AutoDownloadSettings_DocumentsTitle: String { return self._s[2098]! } + public var Conversation_ContextMenuForward: String { return self._s[2099]! } + public var PrivacyPolicy_Title: String { return self._s[2104]! } + public var Notifications_TextTone: String { return self._s[2105]! } + public var Profile_CreateNewContact: String { return self._s[2106]! } + public var PrivacyPhoneNumberSettings_WhoCanSeeMyPhoneNumber: String { return self._s[2107]! } + public var Call_Speaker: String { return self._s[2109]! } + public var AutoNightTheme_AutomaticSection: String { return self._s[2110]! } + public var Channel_OwnershipTransfer_EnterPassword: String { return self._s[2112]! } + public var Channel_Username_InvalidCharacters: String { return self._s[2113]! } public func Channel_AdminLog_MessageChangedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2112]!, self._r[2112]!, [_0]) + return formatWithArgumentRanges(self._s[2114]!, self._r[2114]!, [_0]) } - public var AutoDownloadSettings_AutodownloadFiles: String { return self._s[2113]! } - public var PrivacySettings_LastSeenTitle: String { return self._s[2114]! } - public var Channel_AdminLog_CanInviteUsers: String { return self._s[2115]! } - public var SettingsSearch_Synonyms_Privacy_Data_ClearPaymentsInfo: String { return self._s[2116]! } - public var OwnershipTransfer_SecurityCheck: String { return self._s[2117]! } - public var Conversation_MessageDeliveryFailed: String { return self._s[2118]! } - public var Watch_ChatList_NoConversationsText: String { return self._s[2119]! } - public var Bot_Unblock: String { return self._s[2120]! } - public var TextFormat_Italic: String { return self._s[2121]! } - public var WallpaperSearch_ColorPink: String { return self._s[2122]! } - public var Settings_About_Help: String { return self._s[2123]! } - public var SearchImages_Title: String { return self._s[2124]! } - public var Weekday_Wednesday: String { return self._s[2125]! } - public var Conversation_ClousStorageInfo_Description1: String { return self._s[2126]! } - public var ExplicitContent_AlertTitle: String { return self._s[2127]! } + public var AutoDownloadSettings_AutodownloadFiles: String { return self._s[2115]! } + public var PrivacySettings_LastSeenTitle: String { return self._s[2116]! } + public var Channel_AdminLog_CanInviteUsers: String { return self._s[2117]! } + public var SettingsSearch_Synonyms_Privacy_Data_ClearPaymentsInfo: String { return self._s[2118]! } + public var OwnershipTransfer_SecurityCheck: String { return self._s[2119]! } + public var Conversation_MessageDeliveryFailed: String { return self._s[2120]! } + public var Watch_ChatList_NoConversationsText: String { return self._s[2121]! } + public var Bot_Unblock: String { return self._s[2122]! } + public var TextFormat_Italic: String { return self._s[2123]! } + public var WallpaperSearch_ColorPink: String { return self._s[2124]! } + public var Settings_About_Help: String { return self._s[2125]! } + public var SearchImages_Title: String { return self._s[2126]! } + public var Weekday_Wednesday: String { return self._s[2127]! } + public var Conversation_ClousStorageInfo_Description1: String { return self._s[2128]! } + public var ExplicitContent_AlertTitle: String { return self._s[2129]! } public func Time_PreciseDate_m5(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2128]!, self._r[2128]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2130]!, self._r[2130]!, [_1, _2, _3]) } - public var Channel_DiscussionGroup_Create: String { return self._s[2129]! } - public var Weekday_Thursday: String { return self._s[2130]! } - public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[2131]! } - public var Channel_Members_AddMembersHelp: String { return self._s[2132]! } + public var Channel_DiscussionGroup_Create: String { return self._s[2131]! } + public var Weekday_Thursday: String { return self._s[2132]! } + public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[2133]! } + public var Channel_Members_AddMembersHelp: String { return self._s[2134]! } public func Checkout_SavePasswordTimeout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2133]!, self._r[2133]!, [_0]) + return formatWithArgumentRanges(self._s[2135]!, self._r[2135]!, [_0]) } - public var Channel_DiscussionGroup_LinkGroup: String { return self._s[2134]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsVibrate: String { return self._s[2135]! } - public var Passport_RequestedInformation: String { return self._s[2136]! } - public var Login_PhoneAndCountryHelp: String { return self._s[2137]! } - public var Conversation_EncryptionProcessing: String { return self._s[2139]! } - public var Notifications_PermissionsSuppressWarningTitle: String { return self._s[2140]! } - public var PhotoEditor_EnhanceTool: String { return self._s[2142]! } - public var Channel_Setup_Title: String { return self._s[2143]! } - public var Conversation_SearchPlaceholder: String { return self._s[2144]! } - public var AccessDenied_LocationAlwaysDenied: String { return self._s[2145]! } - public var Checkout_ErrorGeneric: String { return self._s[2146]! } - public var Passport_Language_hu: String { return self._s[2147]! } + public var Channel_DiscussionGroup_LinkGroup: String { return self._s[2136]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsVibrate: String { return self._s[2137]! } + public var Passport_RequestedInformation: String { return self._s[2138]! } + public var Login_PhoneAndCountryHelp: String { return self._s[2139]! } + public var Conversation_EncryptionProcessing: String { return self._s[2141]! } + public var Notifications_PermissionsSuppressWarningTitle: String { return self._s[2142]! } + public var PhotoEditor_EnhanceTool: String { return self._s[2144]! } + public var Channel_Setup_Title: String { return self._s[2145]! } + public var Conversation_SearchPlaceholder: String { return self._s[2146]! } + public var AccessDenied_LocationAlwaysDenied: String { return self._s[2147]! } + public var Checkout_ErrorGeneric: String { return self._s[2148]! } + public var Passport_Language_hu: String { return self._s[2149]! } public func Passport_Identity_UploadOneOfScan(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2149]!, self._r[2149]!, [_0]) + return formatWithArgumentRanges(self._s[2151]!, self._r[2151]!, [_0]) } public func PUSH_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2152]!, self._r[2152]!, [_1]) + return formatWithArgumentRanges(self._s[2154]!, self._r[2154]!, [_1]) } public func UserInfo_BlockConfirmationTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2153]!, self._r[2153]!, [_0]) + return formatWithArgumentRanges(self._s[2155]!, self._r[2155]!, [_0]) } - public var Group_Location_Info: String { return self._s[2154]! } - public var Conversation_CloudStorageInfo_Title: String { return self._s[2155]! } - public var Permissions_PeopleNearbyAllow_v0: String { return self._s[2156]! } - public var PhotoEditor_CropAspectRatioSquare: String { return self._s[2157]! } + public var Group_Location_Info: String { return self._s[2156]! } + public var Conversation_CloudStorageInfo_Title: String { return self._s[2157]! } + public var Permissions_PeopleNearbyAllow_v0: String { return self._s[2158]! } + public var PhotoEditor_CropAspectRatioSquare: String { return self._s[2159]! } public func Notification_Exceptions_MutedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2158]!, self._r[2158]!, [_0]) + return formatWithArgumentRanges(self._s[2160]!, self._r[2160]!, [_0]) } - public var Conversation_ClearPrivateHistory: String { return self._s[2159]! } - public var ContactInfo_PhoneLabelHome: String { return self._s[2160]! } - public var PrivacySettings_LastSeenContacts: String { return self._s[2161]! } + public var Conversation_ClearPrivateHistory: String { return self._s[2161]! } + public var ContactInfo_PhoneLabelHome: String { return self._s[2162]! } + public var PrivacySettings_LastSeenContacts: String { return self._s[2163]! } public func ChangePhone_ErrorOccupied(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2162]!, self._r[2162]!, [_0]) + return formatWithArgumentRanges(self._s[2164]!, self._r[2164]!, [_0]) } - public var Passport_Language_cs: String { return self._s[2163]! } - public var Message_PinnedAnimationMessage: String { return self._s[2165]! } - public var Passport_Identity_ReverseSideHelp: String { return self._s[2167]! } - public var SettingsSearch_Synonyms_Data_Storage_Title: String { return self._s[2168]! } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndTouchId: String { return self._s[2170]! } - public var Embed_PlayingInPIP: String { return self._s[2171]! } - public var AutoNightTheme_ScheduleSection: String { return self._s[2172]! } + public var Passport_Language_cs: String { return self._s[2165]! } + public var Message_PinnedAnimationMessage: String { return self._s[2167]! } + public var Passport_Identity_ReverseSideHelp: String { return self._s[2169]! } + public var SettingsSearch_Synonyms_Data_Storage_Title: String { return self._s[2170]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndTouchId: String { return self._s[2172]! } + public var Embed_PlayingInPIP: String { return self._s[2173]! } + public var AutoNightTheme_ScheduleSection: String { return self._s[2174]! } public func Call_EmojiDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2173]!, self._r[2173]!, [_0]) + return formatWithArgumentRanges(self._s[2175]!, self._r[2175]!, [_0]) } - public var MediaPicker_LivePhotoDescription: String { return self._s[2174]! } + public var MediaPicker_LivePhotoDescription: String { return self._s[2176]! } public func Channel_AdminLog_MessageRestrictedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2175]!, self._r[2175]!, [_1]) + return formatWithArgumentRanges(self._s[2177]!, self._r[2177]!, [_1]) } - public var Notification_PaymentSent: String { return self._s[2176]! } - public var PhotoEditor_CurvesGreen: String { return self._s[2177]! } - public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[2178]! } - public var SaveIncomingPhotosSettings_Title: String { return self._s[2179]! } - public var NotificationSettings_ShowNotificationsAllAccounts: String { return self._s[2180]! } + public var Notification_PaymentSent: String { return self._s[2178]! } + public var PhotoEditor_CurvesGreen: String { return self._s[2179]! } + public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[2180]! } + public var SaveIncomingPhotosSettings_Title: String { return self._s[2181]! } + public var NotificationSettings_ShowNotificationsAllAccounts: String { return self._s[2182]! } public func PUSH_MESSAGE_SCREENSHOT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2183]!, self._r[2183]!, [_1]) - } - public func PUSH_MESSAGE_PHOTO_SECRET(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2184]!, self._r[2184]!, [_1]) - } - public func ApplyLanguage_UnsufficientDataText(_ _1: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2185]!, self._r[2185]!, [_1]) } - public var NetworkUsageSettings_CallDataSection: String { return self._s[2187]! } - public var PasscodeSettings_HelpTop: String { return self._s[2188]! } - public var Group_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[2189]! } - public var Passport_Address_TypeRentalAgreement: String { return self._s[2190]! } - public var ReportPeer_ReasonOther_Placeholder: String { return self._s[2191]! } - public var CheckoutInfo_ErrorPhoneInvalid: String { return self._s[2192]! } - public var Call_Accept: String { return self._s[2194]! } - public var GroupRemoved_RemoveInfo: String { return self._s[2195]! } - public var Month_GenMarch: String { return self._s[2197]! } - public var PhotoEditor_ShadowsTool: String { return self._s[2198]! } - public var LoginPassword_Title: String { return self._s[2199]! } - public var Call_End: String { return self._s[2200]! } - public var Watch_Conversation_GroupInfo: String { return self._s[2201]! } - public var CallSettings_Always: String { return self._s[2202]! } - public var CallFeedback_Success: String { return self._s[2203]! } - public var TwoStepAuth_SetupHint: String { return self._s[2204]! } + public func PUSH_MESSAGE_PHOTO_SECRET(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2186]!, self._r[2186]!, [_1]) + } + public func ApplyLanguage_UnsufficientDataText(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2187]!, self._r[2187]!, [_1]) + } + public var NetworkUsageSettings_CallDataSection: String { return self._s[2189]! } + public var PasscodeSettings_HelpTop: String { return self._s[2190]! } + public var Group_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[2191]! } + public var Passport_Address_TypeRentalAgreement: String { return self._s[2192]! } + public var ReportPeer_ReasonOther_Placeholder: String { return self._s[2193]! } + public var CheckoutInfo_ErrorPhoneInvalid: String { return self._s[2194]! } + public var Call_Accept: String { return self._s[2196]! } + public var GroupRemoved_RemoveInfo: String { return self._s[2197]! } + public var Month_GenMarch: String { return self._s[2199]! } + public var PhotoEditor_ShadowsTool: String { return self._s[2200]! } + public var LoginPassword_Title: String { return self._s[2201]! } + public var Call_End: String { return self._s[2202]! } + public var Watch_Conversation_GroupInfo: String { return self._s[2203]! } + public var CallSettings_Always: String { return self._s[2204]! } + public var CallFeedback_Success: String { return self._s[2205]! } + public var TwoStepAuth_SetupHint: String { return self._s[2206]! } public func AddContact_ContactWillBeSharedAfterMutual(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2205]!, self._r[2205]!, [_1]) + return formatWithArgumentRanges(self._s[2207]!, self._r[2207]!, [_1]) } - public var ConversationProfile_UsersTooMuchError: String { return self._s[2206]! } - public var Login_PhoneTitle: String { return self._s[2207]! } - public var Passport_FieldPhoneHelp: String { return self._s[2208]! } - public var Weekday_ShortSunday: String { return self._s[2209]! } - public var Passport_InfoFAQ_URL: String { return self._s[2210]! } - public var ContactInfo_Job: String { return self._s[2212]! } - public var UserInfo_InviteBotToGroup: String { return self._s[2213]! } - public var Appearance_ThemeCarouselNightBlue: String { return self._s[2214]! } - public var TwoStepAuth_PasswordRemovePassportConfirmation: String { return self._s[2215]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsPreview: String { return self._s[2216]! } - public var Passport_DeletePersonalDetailsConfirmation: String { return self._s[2217]! } - public var CallFeedback_ReasonNoise: String { return self._s[2218]! } - public var Appearance_AppIconDefault: String { return self._s[2220]! } - public var Passport_Identity_AddInternalPassport: String { return self._s[2221]! } - public var MediaPicker_AddCaption: String { return self._s[2222]! } - public var CallSettings_TabIconDescription: String { return self._s[2223]! } - public var ChatList_UndoArchiveHiddenTitle: String { return self._s[2224]! } - public var Privacy_GroupsAndChannels_AlwaysAllow: String { return self._s[2225]! } - public var Passport_Identity_TypePersonalDetails: String { return self._s[2226]! } - public var DialogList_SearchSectionRecent: String { return self._s[2227]! } - public var PrivacyPolicy_DeclineMessage: String { return self._s[2228]! } - public var LogoutOptions_ClearCacheText: String { return self._s[2231]! } - public var LastSeen_WithinAWeek: String { return self._s[2232]! } - public var ChannelMembers_GroupAdminsTitle: String { return self._s[2233]! } - public var Conversation_CloudStorage_ChatStatus: String { return self._s[2235]! } + public var ConversationProfile_UsersTooMuchError: String { return self._s[2208]! } + public var Login_PhoneTitle: String { return self._s[2209]! } + public var Passport_FieldPhoneHelp: String { return self._s[2210]! } + public var Weekday_ShortSunday: String { return self._s[2211]! } + public var Passport_InfoFAQ_URL: String { return self._s[2212]! } + public var ContactInfo_Job: String { return self._s[2214]! } + public var UserInfo_InviteBotToGroup: String { return self._s[2215]! } + public var Appearance_ThemeCarouselNightBlue: String { return self._s[2216]! } + public var TwoStepAuth_PasswordRemovePassportConfirmation: String { return self._s[2217]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsPreview: String { return self._s[2218]! } + public var Passport_DeletePersonalDetailsConfirmation: String { return self._s[2219]! } + public var CallFeedback_ReasonNoise: String { return self._s[2220]! } + public var Appearance_AppIconDefault: String { return self._s[2222]! } + public var Passport_Identity_AddInternalPassport: String { return self._s[2223]! } + public var MediaPicker_AddCaption: String { return self._s[2224]! } + public var CallSettings_TabIconDescription: String { return self._s[2225]! } + public var ChatList_UndoArchiveHiddenTitle: String { return self._s[2226]! } + public var Privacy_GroupsAndChannels_AlwaysAllow: String { return self._s[2227]! } + public var Passport_Identity_TypePersonalDetails: String { return self._s[2228]! } + public var DialogList_SearchSectionRecent: String { return self._s[2229]! } + public var PrivacyPolicy_DeclineMessage: String { return self._s[2230]! } + public var LogoutOptions_ClearCacheText: String { return self._s[2233]! } + public var LastSeen_WithinAWeek: String { return self._s[2234]! } + public var ChannelMembers_GroupAdminsTitle: String { return self._s[2235]! } + public var Conversation_CloudStorage_ChatStatus: String { return self._s[2237]! } public func AddContact_SharedContactExceptionInfo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2236]!, self._r[2236]!, [_0]) + return formatWithArgumentRanges(self._s[2238]!, self._r[2238]!, [_0]) } - public var Passport_Address_TypeResidentialAddress: String { return self._s[2237]! } - public var Conversation_StatusLeftGroup: String { return self._s[2238]! } - public var SocksProxySetup_ProxyDetailsTitle: String { return self._s[2239]! } - public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[2241]! } - public var GroupPermission_AddSuccess: String { return self._s[2242]! } - public var PhotoEditor_BlurToolRadial: String { return self._s[2244]! } - public var Conversation_ContextMenuCopy: String { return self._s[2245]! } - public var AccessDenied_CallMicrophone: String { return self._s[2246]! } + public var Passport_Address_TypeResidentialAddress: String { return self._s[2239]! } + public var Conversation_StatusLeftGroup: String { return self._s[2240]! } + public var SocksProxySetup_ProxyDetailsTitle: String { return self._s[2241]! } + public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[2243]! } + public var GroupPermission_AddSuccess: String { return self._s[2244]! } + public var PhotoEditor_BlurToolRadial: String { return self._s[2246]! } + public var Conversation_ContextMenuCopy: String { return self._s[2247]! } + public var AccessDenied_CallMicrophone: String { return self._s[2248]! } public func Time_PreciseDate_m2(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2247]!, self._r[2247]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2249]!, self._r[2249]!, [_1, _2, _3]) } - public var Login_InvalidFirstNameError: String { return self._s[2248]! } - public var Notifications_Badge_CountUnreadMessages_InfoOn: String { return self._s[2249]! } - public var Checkout_PaymentMethod_New: String { return self._s[2250]! } - public var ShareMenu_CopyShareLinkGame: String { return self._s[2251]! } - public var PhotoEditor_QualityTool: String { return self._s[2252]! } - public var Login_SendCodeViaSms: String { return self._s[2253]! } - public var SettingsSearch_Synonyms_Privacy_DeleteAccountIfAwayFor: String { return self._s[2254]! } - public var Login_EmailNotConfiguredError: String { return self._s[2255]! } - public var SocksProxySetup_Status: String { return self._s[2256]! } - public var PrivacyPolicy_Accept: String { return self._s[2257]! } - public var Notifications_ExceptionsMessagePlaceholder: String { return self._s[2258]! } - public var Appearance_AppIconClassicX: String { return self._s[2259]! } + public var Login_InvalidFirstNameError: String { return self._s[2250]! } + public var Notifications_Badge_CountUnreadMessages_InfoOn: String { return self._s[2251]! } + public var Checkout_PaymentMethod_New: String { return self._s[2252]! } + public var ShareMenu_CopyShareLinkGame: String { return self._s[2253]! } + public var PhotoEditor_QualityTool: String { return self._s[2254]! } + public var Login_SendCodeViaSms: String { return self._s[2255]! } + public var SettingsSearch_Synonyms_Privacy_DeleteAccountIfAwayFor: String { return self._s[2256]! } + public var Login_EmailNotConfiguredError: String { return self._s[2257]! } + public var SocksProxySetup_Status: String { return self._s[2258]! } + public var PrivacyPolicy_Accept: String { return self._s[2259]! } + public var Notifications_ExceptionsMessagePlaceholder: String { return self._s[2260]! } + public var Appearance_AppIconClassicX: String { return self._s[2261]! } public func PUSH_CHAT_MESSAGE_TEXT(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2260]!, self._r[2260]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2262]!, self._r[2262]!, [_1, _2, _3]) } - public var OwnershipTransfer_SecurityRequirements: String { return self._s[2261]! } - public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[2262]! } - public var AutoNightTheme_Automatic: String { return self._s[2263]! } - public var Channel_Username_InvalidStartsWithNumber: String { return self._s[2264]! } - public var Privacy_ContactsSyncHelp: String { return self._s[2265]! } - public var Cache_Help: String { return self._s[2266]! } - public var Group_ErrorAccessDenied: String { return self._s[2267]! } - public var Passport_Language_fa: String { return self._s[2268]! } - public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2269]! } - public var PrivacySettings_LastSeen: String { return self._s[2270]! } + public var OwnershipTransfer_SecurityRequirements: String { return self._s[2263]! } + public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[2264]! } + public var AutoNightTheme_Automatic: String { return self._s[2265]! } + public var Channel_Username_InvalidStartsWithNumber: String { return self._s[2266]! } + public var Privacy_ContactsSyncHelp: String { return self._s[2267]! } + public var Cache_Help: String { return self._s[2268]! } + public var Group_ErrorAccessDenied: String { return self._s[2269]! } + public var Passport_Language_fa: String { return self._s[2270]! } + public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2271]! } + public var PrivacySettings_LastSeen: String { return self._s[2272]! } public func DialogList_MultipleTyping(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2271]!, self._r[2271]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2273]!, self._r[2273]!, [_0, _1]) } - public var Preview_SaveGif: String { return self._s[2275]! } - public var SettingsSearch_Synonyms_Privacy_TwoStepAuth: String { return self._s[2276]! } - public var Profile_About: String { return self._s[2277]! } - public var Channel_About_Placeholder: String { return self._s[2278]! } - public var Login_InfoTitle: String { return self._s[2279]! } + public var Preview_SaveGif: String { return self._s[2277]! } + public var SettingsSearch_Synonyms_Privacy_TwoStepAuth: String { return self._s[2278]! } + public var Profile_About: String { return self._s[2279]! } + public var Channel_About_Placeholder: String { return self._s[2280]! } + public var Login_InfoTitle: String { return self._s[2281]! } public func TwoStepAuth_SetupPendingEmail(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2280]!, self._r[2280]!, [_0]) + return formatWithArgumentRanges(self._s[2282]!, self._r[2282]!, [_0]) } - public var Watch_Suggestion_CantTalk: String { return self._s[2282]! } - public var ContactInfo_Title: String { return self._s[2283]! } - public var Media_ShareThisVideo: String { return self._s[2284]! } - public var Weekday_ShortFriday: String { return self._s[2285]! } - public var AccessDenied_Contacts: String { return self._s[2286]! } - public var Notification_CallIncomingShort: String { return self._s[2287]! } - public var Group_Setup_TypePublic: String { return self._s[2288]! } - public var Notifications_MessageNotificationsExceptions: String { return self._s[2289]! } - public var Notifications_Badge_IncludeChannels: String { return self._s[2290]! } - public var Notifications_MessageNotificationsPreview: String { return self._s[2293]! } - public var ConversationProfile_ErrorCreatingConversation: String { return self._s[2294]! } - public var Group_ErrorAddTooMuchBots: String { return self._s[2295]! } - public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[2296]! } - public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[2297]! } - public var DialogList_Typing: String { return self._s[2298]! } - public var CallFeedback_IncludeLogs: String { return self._s[2300]! } - public var Checkout_Phone: String { return self._s[2302]! } - public var Login_InfoFirstNamePlaceholder: String { return self._s[2305]! } - public var Privacy_Calls_Integration: String { return self._s[2306]! } - public var Notifications_PermissionsAllow: String { return self._s[2307]! } - public var TwoStepAuth_AddHintDescription: String { return self._s[2311]! } - public var Settings_ChatSettings: String { return self._s[2312]! } + public var Watch_Suggestion_CantTalk: String { return self._s[2284]! } + public var ContactInfo_Title: String { return self._s[2285]! } + public var Media_ShareThisVideo: String { return self._s[2286]! } + public var Weekday_ShortFriday: String { return self._s[2287]! } + public var AccessDenied_Contacts: String { return self._s[2288]! } + public var Notification_CallIncomingShort: String { return self._s[2289]! } + public var Group_Setup_TypePublic: String { return self._s[2290]! } + public var Notifications_MessageNotificationsExceptions: String { return self._s[2291]! } + public var Notifications_Badge_IncludeChannels: String { return self._s[2292]! } + public var Notifications_MessageNotificationsPreview: String { return self._s[2295]! } + public var ConversationProfile_ErrorCreatingConversation: String { return self._s[2296]! } + public var Group_ErrorAddTooMuchBots: String { return self._s[2297]! } + public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[2298]! } + public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[2299]! } + public var DialogList_Typing: String { return self._s[2300]! } + public var CallFeedback_IncludeLogs: String { return self._s[2302]! } + public var Checkout_Phone: String { return self._s[2304]! } + public var Login_InfoFirstNamePlaceholder: String { return self._s[2307]! } + public var Privacy_Calls_Integration: String { return self._s[2308]! } + public var Notifications_PermissionsAllow: String { return self._s[2309]! } + public var TwoStepAuth_AddHintDescription: String { return self._s[2313]! } + public var Settings_ChatSettings: String { return self._s[2314]! } public func PUSH_MESSAGE_ALBUM(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2313]!, self._r[2313]!, [_1]) + return formatWithArgumentRanges(self._s[2315]!, self._r[2315]!, [_1]) } public func Channel_AdminLog_MessageInvitedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2314]!, self._r[2314]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2316]!, self._r[2316]!, [_1, _2]) } - public var GroupRemoved_DeleteUser: String { return self._s[2316]! } + public var GroupRemoved_DeleteUser: String { return self._s[2318]! } public func Channel_AdminLog_PollStopped(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2317]!, self._r[2317]!, [_0]) + return formatWithArgumentRanges(self._s[2319]!, self._r[2319]!, [_0]) } public func PUSH_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2318]!, self._r[2318]!, [_1]) + return formatWithArgumentRanges(self._s[2320]!, self._r[2320]!, [_1]) } - public var Login_ContinueWithLocalization: String { return self._s[2319]! } - public var Watch_Message_ForwardedFrom: String { return self._s[2320]! } - public var TwoStepAuth_EnterEmailCode: String { return self._s[2322]! } - public var Conversation_Unblock: String { return self._s[2323]! } - public var PrivacySettings_DataSettings: String { return self._s[2324]! } - public var Group_PublicLink_Info: String { return self._s[2325]! } - public var Notifications_InAppNotificationsVibrate: String { return self._s[2326]! } + public var Login_ContinueWithLocalization: String { return self._s[2321]! } + public var Watch_Message_ForwardedFrom: String { return self._s[2322]! } + public var TwoStepAuth_EnterEmailCode: String { return self._s[2324]! } + public var Conversation_Unblock: String { return self._s[2325]! } + public var PrivacySettings_DataSettings: String { return self._s[2326]! } + public var Group_PublicLink_Info: String { return self._s[2327]! } + public var Notifications_InAppNotificationsVibrate: String { return self._s[2328]! } public func Privacy_GroupsAndChannels_InviteToChannelError(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2327]!, self._r[2327]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2329]!, self._r[2329]!, [_0, _1]) } - public var PrivacySettings_Passcode: String { return self._s[2330]! } - public var Call_Mute: String { return self._s[2331]! } - public var Passport_Language_dz: String { return self._s[2332]! } - public var Passport_Language_tk: String { return self._s[2333]! } + public var PrivacySettings_Passcode: String { return self._s[2332]! } + public var Call_Mute: String { return self._s[2333]! } + public var Passport_Language_dz: String { return self._s[2334]! } + public var Passport_Language_tk: String { return self._s[2335]! } public func Login_EmailCodeSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2334]!, self._r[2334]!, [_0]) + return formatWithArgumentRanges(self._s[2336]!, self._r[2336]!, [_0]) } - public var Settings_Search: String { return self._s[2335]! } - public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[2336]! } - public var Conversation_ContextMenuReply: String { return self._s[2337]! } - public var WallpaperSearch_ColorBrown: String { return self._s[2338]! } - public var Tour_Title1: String { return self._s[2339]! } - public var Conversation_ClearGroupHistory: String { return self._s[2341]! } - public var WallpaperPreview_Motion: String { return self._s[2342]! } + public var Settings_Search: String { return self._s[2337]! } + public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[2338]! } + public var Conversation_ContextMenuReply: String { return self._s[2339]! } + public var WallpaperSearch_ColorBrown: String { return self._s[2340]! } + public var Tour_Title1: String { return self._s[2341]! } + public var Conversation_ClearGroupHistory: String { return self._s[2343]! } + public var WallpaperPreview_Motion: String { return self._s[2344]! } public func Checkout_PasswordEntry_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2343]!, self._r[2343]!, [_0]) + return formatWithArgumentRanges(self._s[2345]!, self._r[2345]!, [_0]) } - public var Call_RateCall: String { return self._s[2344]! } - public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[2345]! } - public var Passport_PasswordCompleteSetup: String { return self._s[2346]! } - public var Conversation_InputTextSilentBroadcastPlaceholder: String { return self._s[2347]! } - public var UserInfo_LastNamePlaceholder: String { return self._s[2349]! } + public var Call_RateCall: String { return self._s[2346]! } + public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[2347]! } + public var Passport_PasswordCompleteSetup: String { return self._s[2348]! } + public var Conversation_InputTextSilentBroadcastPlaceholder: String { return self._s[2349]! } + public var UserInfo_LastNamePlaceholder: String { return self._s[2351]! } public func Login_WillCallYou(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2351]!, self._r[2351]!, [_0]) + return formatWithArgumentRanges(self._s[2353]!, self._r[2353]!, [_0]) } - public var Compose_Create: String { return self._s[2352]! } - public var Contacts_InviteToTelegram: String { return self._s[2353]! } - public var GroupInfo_Notifications: String { return self._s[2354]! } - public var Message_PinnedLiveLocationMessage: String { return self._s[2356]! } - public var Month_GenApril: String { return self._s[2357]! } - public var Appearance_AutoNightTheme: String { return self._s[2358]! } - public var ChatSettings_AutomaticAudioDownload: String { return self._s[2360]! } - public var Login_CodeSentSms: String { return self._s[2362]! } + public var Compose_Create: String { return self._s[2354]! } + public var Contacts_InviteToTelegram: String { return self._s[2355]! } + public var GroupInfo_Notifications: String { return self._s[2356]! } + public var Message_PinnedLiveLocationMessage: String { return self._s[2358]! } + public var Month_GenApril: String { return self._s[2359]! } + public var Appearance_AutoNightTheme: String { return self._s[2360]! } + public var ChatSettings_AutomaticAudioDownload: String { return self._s[2362]! } + public var Login_CodeSentSms: String { return self._s[2364]! } public func UserInfo_UnblockConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2363]!, self._r[2363]!, [_0]) + return formatWithArgumentRanges(self._s[2365]!, self._r[2365]!, [_0]) } - public var EmptyGroupInfo_Line3: String { return self._s[2364]! } - public var LogoutOptions_ContactSupportText: String { return self._s[2365]! } - public var Passport_Language_hr: String { return self._s[2366]! } - public var Common_ActionNotAllowedError: String { return self._s[2367]! } + public var EmptyGroupInfo_Line3: String { return self._s[2366]! } + public var LogoutOptions_ContactSupportText: String { return self._s[2367]! } + public var Passport_Language_hr: String { return self._s[2368]! } + public var Common_ActionNotAllowedError: String { return self._s[2369]! } public func Channel_AdminLog_MessageRestrictedNewSetting(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2368]!, self._r[2368]!, [_0]) + return formatWithArgumentRanges(self._s[2370]!, self._r[2370]!, [_0]) } - public var GroupInfo_InviteLink_CopyLink: String { return self._s[2369]! } - public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[2370]! } - public var Privacy_SecretChatsTitle: String { return self._s[2371]! } - public var Notification_SecretChatMessageScreenshotSelf: String { return self._s[2373]! } - public var GroupInfo_AddUserLeftError: String { return self._s[2374]! } - public var AutoDownloadSettings_TypePrivateChats: String { return self._s[2375]! } - public var LogoutOptions_ContactSupportTitle: String { return self._s[2376]! } - public var Channel_AddBotErrorHaveRights: String { return self._s[2377]! } - public var Preview_DeleteGif: String { return self._s[2378]! } - public var GroupInfo_Permissions_Exceptions: String { return self._s[2379]! } - public var Group_ErrorNotMutualContact: String { return self._s[2380]! } - public var Notification_MessageLifetime5s: String { return self._s[2381]! } + public var GroupInfo_InviteLink_CopyLink: String { return self._s[2371]! } + public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[2372]! } + public var Privacy_SecretChatsTitle: String { return self._s[2373]! } + public var Notification_SecretChatMessageScreenshotSelf: String { return self._s[2375]! } + public var GroupInfo_AddUserLeftError: String { return self._s[2376]! } + public var AutoDownloadSettings_TypePrivateChats: String { return self._s[2377]! } + public var LogoutOptions_ContactSupportTitle: String { return self._s[2378]! } + public var Channel_AddBotErrorHaveRights: String { return self._s[2379]! } + public var Preview_DeleteGif: String { return self._s[2380]! } + public var GroupInfo_Permissions_Exceptions: String { return self._s[2381]! } + public var Group_ErrorNotMutualContact: String { return self._s[2382]! } + public var Notification_MessageLifetime5s: String { return self._s[2383]! } public func Watch_LastSeen_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2382]!, self._r[2382]!, [_0]) + return formatWithArgumentRanges(self._s[2384]!, self._r[2384]!, [_0]) } - public var Channel_OwnershipTransfer_ErrorPublicChannelsTooMuch: String { return self._s[2384]! } - public var ReportSpam_DeleteThisChat: String { return self._s[2385]! } - public var Passport_Address_AddBankStatement: String { return self._s[2386]! } - public var Notification_CallIncoming: String { return self._s[2387]! } - public var Compose_NewGroupTitle: String { return self._s[2388]! } - public var TwoStepAuth_RecoveryCodeHelp: String { return self._s[2390]! } - public var Passport_Address_Postcode: String { return self._s[2392]! } + public var Channel_OwnershipTransfer_ErrorPublicChannelsTooMuch: String { return self._s[2386]! } + public var ReportSpam_DeleteThisChat: String { return self._s[2387]! } + public var Passport_Address_AddBankStatement: String { return self._s[2388]! } + public var Notification_CallIncoming: String { return self._s[2389]! } + public var Compose_NewGroupTitle: String { return self._s[2390]! } + public var TwoStepAuth_RecoveryCodeHelp: String { return self._s[2392]! } + public var Passport_Address_Postcode: String { return self._s[2394]! } public func LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2393]!, self._r[2393]!, [_0]) + return formatWithArgumentRanges(self._s[2395]!, self._r[2395]!, [_0]) } - public var Checkout_NewCard_SaveInfoHelp: String { return self._s[2394]! } - public var WallpaperColors_Title: String { return self._s[2395]! } - public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[2396]! } - public var GroupPermission_Duration: String { return self._s[2397]! } + public var Checkout_NewCard_SaveInfoHelp: String { return self._s[2396]! } + public var WallpaperColors_Title: String { return self._s[2397]! } + public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[2398]! } + public var GroupPermission_Duration: String { return self._s[2399]! } public func Cache_Clear(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2398]!, self._r[2398]!, [_0]) + return formatWithArgumentRanges(self._s[2400]!, self._r[2400]!, [_0]) } - public var Bot_GroupStatusDoesNotReadHistory: String { return self._s[2399]! } - public var Username_Placeholder: String { return self._s[2400]! } - public var CallFeedback_WhatWentWrong: String { return self._s[2401]! } - public var Passport_FieldAddressUploadHelp: String { return self._s[2402]! } - public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[2403]! } + public var Bot_GroupStatusDoesNotReadHistory: String { return self._s[2401]! } + public var Username_Placeholder: String { return self._s[2402]! } + public var CallFeedback_WhatWentWrong: String { return self._s[2403]! } + public var Passport_FieldAddressUploadHelp: String { return self._s[2404]! } + public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[2405]! } public func Channel_AdminLog_MessageChangedUnlinkedChannel(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2405]!, self._r[2405]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2407]!, self._r[2407]!, [_1, _2]) } - public var Passport_PasswordDescription: String { return self._s[2406]! } - public var Channel_MessagePhotoUpdated: String { return self._s[2407]! } - public var MediaPicker_TapToUngroupDescription: String { return self._s[2408]! } - public var SettingsSearch_Synonyms_Notifications_BadgeCountUnreadMessages: String { return self._s[2409]! } - public var AttachmentMenu_PhotoOrVideo: String { return self._s[2410]! } - public var Conversation_ContextMenuMore: String { return self._s[2411]! } - public var Privacy_PaymentsClearInfo: String { return self._s[2412]! } - public var CallSettings_TabIcon: String { return self._s[2413]! } - public var KeyCommand_Find: String { return self._s[2414]! } - public var Message_PinnedGame: String { return self._s[2415]! } - public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[2417]! } - public var Login_CallRequestState2: String { return self._s[2419]! } - public var CheckoutInfo_ReceiverInfoNamePlaceholder: String { return self._s[2421]! } + public var Passport_PasswordDescription: String { return self._s[2408]! } + public var Channel_MessagePhotoUpdated: String { return self._s[2409]! } + public var MediaPicker_TapToUngroupDescription: String { return self._s[2410]! } + public var SettingsSearch_Synonyms_Notifications_BadgeCountUnreadMessages: String { return self._s[2411]! } + public var AttachmentMenu_PhotoOrVideo: String { return self._s[2412]! } + public var Conversation_ContextMenuMore: String { return self._s[2413]! } + public var Privacy_PaymentsClearInfo: String { return self._s[2414]! } + public var CallSettings_TabIcon: String { return self._s[2415]! } + public var KeyCommand_Find: String { return self._s[2416]! } + public var Message_PinnedGame: String { return self._s[2417]! } + public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[2419]! } + public var Login_CallRequestState2: String { return self._s[2421]! } + public var CheckoutInfo_ReceiverInfoNamePlaceholder: String { return self._s[2423]! } public func Checkout_PayPrice(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2423]!, self._r[2423]!, [_0]) + return formatWithArgumentRanges(self._s[2425]!, self._r[2425]!, [_0]) } - public var WallpaperPreview_Blurred: String { return self._s[2424]! } - public var Conversation_InstantPagePreview: String { return self._s[2425]! } + public var WallpaperPreview_Blurred: String { return self._s[2426]! } + public var Conversation_InstantPagePreview: String { return self._s[2427]! } public func DialogList_SingleUploadingVideoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2426]!, self._r[2426]!, [_0]) + return formatWithArgumentRanges(self._s[2428]!, self._r[2428]!, [_0]) } - public var SecretTimer_VideoDescription: String { return self._s[2429]! } - public var WallpaperSearch_ColorRed: String { return self._s[2430]! } - public var GroupPermission_NoPinMessages: String { return self._s[2431]! } - public var Passport_Language_es: String { return self._s[2432]! } - public var Permissions_ContactsAllow_v0: String { return self._s[2434]! } - public var Conversation_EditingMessageMediaEditCurrentVideo: String { return self._s[2435]! } + public var SecretTimer_VideoDescription: String { return self._s[2431]! } + public var WallpaperSearch_ColorRed: String { return self._s[2432]! } + public var GroupPermission_NoPinMessages: String { return self._s[2433]! } + public var Passport_Language_es: String { return self._s[2434]! } + public var Permissions_ContactsAllow_v0: String { return self._s[2436]! } + public var Conversation_EditingMessageMediaEditCurrentVideo: String { return self._s[2437]! } public func PUSH_CHAT_MESSAGE_CONTACT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2436]!, self._r[2436]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2438]!, self._r[2438]!, [_1, _2]) } - public var Privacy_Forwards_CustomHelp: String { return self._s[2437]! } - public var WebPreview_GettingLinkInfo: String { return self._s[2438]! } - public var Watch_UserInfo_Unmute: String { return self._s[2439]! } - public var GroupInfo_ChannelListNamePlaceholder: String { return self._s[2440]! } - public var AccessDenied_CameraRestricted: String { return self._s[2442]! } + public var Privacy_Forwards_CustomHelp: String { return self._s[2439]! } + public var WebPreview_GettingLinkInfo: String { return self._s[2440]! } + public var Watch_UserInfo_Unmute: String { return self._s[2441]! } + public var GroupInfo_ChannelListNamePlaceholder: String { return self._s[2442]! } + public var AccessDenied_CameraRestricted: String { return self._s[2444]! } public func Conversation_Kilobytes(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2443]!, self._r[2443]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[2445]!, self._r[2445]!, ["\(_0)"]) } - public var ChatList_ReadAll: String { return self._s[2445]! } - public var Settings_CopyUsername: String { return self._s[2446]! } - public var Contacts_SearchLabel: String { return self._s[2447]! } - public var Map_OpenInYandexNavigator: String { return self._s[2449]! } - public var PasscodeSettings_EncryptData: String { return self._s[2450]! } - public var WallpaperSearch_ColorPrefix: String { return self._s[2451]! } - public var Notifications_GroupNotificationsPreview: String { return self._s[2452]! } - public var DialogList_AdNoticeAlert: String { return self._s[2453]! } - public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[2455]! } - public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[2456]! } - public var Localization_LanguageCustom: String { return self._s[2457]! } - public var Passport_Identity_TypeDriversLicenseUploadScan: String { return self._s[2458]! } - public var CallFeedback_Title: String { return self._s[2459]! } - public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[2462]! } - public var Conversation_InfoGroup: String { return self._s[2463]! } - public var Compose_NewMessage: String { return self._s[2464]! } - public var FastTwoStepSetup_HintPlaceholder: String { return self._s[2465]! } - public var ChatSettings_AutoDownloadVideoMessages: String { return self._s[2466]! } - public var Channel_DiscussionGroup_UnlinkChannel: String { return self._s[2467]! } + public var ChatList_ReadAll: String { return self._s[2447]! } + public var Settings_CopyUsername: String { return self._s[2448]! } + public var Contacts_SearchLabel: String { return self._s[2449]! } + public var Map_OpenInYandexNavigator: String { return self._s[2451]! } + public var PasscodeSettings_EncryptData: String { return self._s[2452]! } + public var WallpaperSearch_ColorPrefix: String { return self._s[2453]! } + public var Notifications_GroupNotificationsPreview: String { return self._s[2454]! } + public var DialogList_AdNoticeAlert: String { return self._s[2455]! } + public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[2457]! } + public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[2458]! } + public var Localization_LanguageCustom: String { return self._s[2459]! } + public var Passport_Identity_TypeDriversLicenseUploadScan: String { return self._s[2460]! } + public var CallFeedback_Title: String { return self._s[2461]! } + public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[2464]! } + public var Conversation_InfoGroup: String { return self._s[2465]! } + public var Compose_NewMessage: String { return self._s[2466]! } + public var FastTwoStepSetup_HintPlaceholder: String { return self._s[2467]! } + public var ChatSettings_AutoDownloadVideoMessages: String { return self._s[2468]! } + public var Channel_DiscussionGroup_UnlinkChannel: String { return self._s[2469]! } public func Passport_Scans_ScanIndex(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2468]!, self._r[2468]!, [_0]) + return formatWithArgumentRanges(self._s[2470]!, self._r[2470]!, [_0]) } - public var Channel_AdminLog_CanDeleteMessages: String { return self._s[2469]! } - public var Login_CancelSignUpConfirmation: String { return self._s[2470]! } - public var ChangePhoneNumberCode_Help: String { return self._s[2471]! } - public var PrivacySettings_DeleteAccountHelp: String { return self._s[2472]! } - public var Channel_BlackList_Title: String { return self._s[2473]! } - public var UserInfo_PhoneCall: String { return self._s[2474]! } - public var Passport_Address_OneOfTypeBankStatement: String { return self._s[2476]! } - public var State_connecting: String { return self._s[2477]! } + public var Channel_AdminLog_CanDeleteMessages: String { return self._s[2471]! } + public var Login_CancelSignUpConfirmation: String { return self._s[2472]! } + public var ChangePhoneNumberCode_Help: String { return self._s[2473]! } + public var PrivacySettings_DeleteAccountHelp: String { return self._s[2474]! } + public var Channel_BlackList_Title: String { return self._s[2475]! } + public var UserInfo_PhoneCall: String { return self._s[2476]! } + public var Passport_Address_OneOfTypeBankStatement: String { return self._s[2478]! } + public var State_connecting: String { return self._s[2479]! } public func DialogList_SingleRecordingAudioSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2478]!, self._r[2478]!, [_0]) + return formatWithArgumentRanges(self._s[2480]!, self._r[2480]!, [_0]) } - public var Notifications_GroupNotifications: String { return self._s[2479]! } - public var Passport_Identity_EditPassport: String { return self._s[2480]! } - public var EnterPasscode_RepeatNewPasscode: String { return self._s[2482]! } - public var Localization_EnglishLanguageName: String { return self._s[2483]! } - public var Share_AuthDescription: String { return self._s[2484]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsAlert: String { return self._s[2485]! } - public var Passport_Identity_Surname: String { return self._s[2486]! } - public var Compose_TokenListPlaceholder: String { return self._s[2487]! } - public var Passport_Identity_OneOfTypePassport: String { return self._s[2488]! } - public var Settings_AboutEmpty: String { return self._s[2489]! } - public var Conversation_Unmute: String { return self._s[2490]! } + public var Notifications_GroupNotifications: String { return self._s[2481]! } + public var Passport_Identity_EditPassport: String { return self._s[2482]! } + public var EnterPasscode_RepeatNewPasscode: String { return self._s[2484]! } + public var Localization_EnglishLanguageName: String { return self._s[2485]! } + public var Share_AuthDescription: String { return self._s[2486]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsAlert: String { return self._s[2487]! } + public var Passport_Identity_Surname: String { return self._s[2488]! } + public var Compose_TokenListPlaceholder: String { return self._s[2489]! } + public var Passport_Identity_OneOfTypePassport: String { return self._s[2490]! } + public var Settings_AboutEmpty: String { return self._s[2491]! } + public var Conversation_Unmute: String { return self._s[2492]! } public func PUSH_CONTACT_JOINED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2492]!, self._r[2492]!, [_1]) + return formatWithArgumentRanges(self._s[2494]!, self._r[2494]!, [_1]) } - public var Login_CodeSentCall: String { return self._s[2493]! } - public var ContactInfo_PhoneLabelHomeFax: String { return self._s[2495]! } - public var ChatSettings_Appearance: String { return self._s[2496]! } - public var Appearance_PickAccentColor: String { return self._s[2497]! } + public var Login_CodeSentCall: String { return self._s[2495]! } + public var ContactInfo_PhoneLabelHomeFax: String { return self._s[2497]! } + public var ChatSettings_Appearance: String { return self._s[2498]! } + public var Appearance_PickAccentColor: String { return self._s[2499]! } public func PUSH_CHAT_MESSAGE_NOTEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2498]!, self._r[2498]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2500]!, self._r[2500]!, [_1, _2]) } public func PUSH_MESSAGE_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2499]!, self._r[2499]!, [_1]) + return formatWithArgumentRanges(self._s[2501]!, self._r[2501]!, [_1]) } - public var Notification_CallMissed: String { return self._s[2500]! } - public var SettingsSearch_Synonyms_Appearance_ChatBackground_Custom: String { return self._s[2501]! } - public var Channel_AdminLogFilter_EventsInfo: String { return self._s[2502]! } - public var ChatAdmins_AdminLabel: String { return self._s[2504]! } - public var KeyCommand_JumpToNextChat: String { return self._s[2505]! } - public var Conversation_StopPollConfirmationTitle: String { return self._s[2507]! } - public var ChangePhoneNumberCode_CodePlaceholder: String { return self._s[2508]! } - public var Month_GenJune: String { return self._s[2509]! } - public var Watch_Location_Current: String { return self._s[2510]! } - public var Conversation_TitleMute: String { return self._s[2511]! } + public var Notification_CallMissed: String { return self._s[2502]! } + public var SettingsSearch_Synonyms_Appearance_ChatBackground_Custom: String { return self._s[2503]! } + public var Channel_AdminLogFilter_EventsInfo: String { return self._s[2504]! } + public var ChatAdmins_AdminLabel: String { return self._s[2506]! } + public var KeyCommand_JumpToNextChat: String { return self._s[2507]! } + public var Conversation_StopPollConfirmationTitle: String { return self._s[2509]! } + public var ChangePhoneNumberCode_CodePlaceholder: String { return self._s[2510]! } + public var Month_GenJune: String { return self._s[2511]! } + public var Watch_Location_Current: String { return self._s[2512]! } + public var Conversation_TitleMute: String { return self._s[2513]! } public func PUSH_CHANNEL_MESSAGE_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2512]!, self._r[2512]!, [_1]) + return formatWithArgumentRanges(self._s[2514]!, self._r[2514]!, [_1]) } - public var GroupInfo_DeleteAndExit: String { return self._s[2513]! } + public var GroupInfo_DeleteAndExit: String { return self._s[2515]! } public func Conversation_Moderate_DeleteAllMessages(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2514]!, self._r[2514]!, [_0]) + return formatWithArgumentRanges(self._s[2516]!, self._r[2516]!, [_0]) } - public var Call_ReportPlaceholder: String { return self._s[2515]! } - public var MaskStickerSettings_Info: String { return self._s[2516]! } + public var Call_ReportPlaceholder: String { return self._s[2517]! } + public var MaskStickerSettings_Info: String { return self._s[2518]! } public func GroupInfo_AddParticipantConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2517]!, self._r[2517]!, [_0]) + return formatWithArgumentRanges(self._s[2519]!, self._r[2519]!, [_0]) } - public var Checkout_NewCard_PostcodeTitle: String { return self._s[2518]! } - public var Passport_Address_RegionPlaceholder: String { return self._s[2520]! } - public var Contacts_ShareTelegram: String { return self._s[2521]! } - public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[2522]! } - public var Channel_ErrorAccessDenied: String { return self._s[2523]! } - public var UserInfo_ScamBotWarning: String { return self._s[2525]! } - public var Stickers_GroupChooseStickerPack: String { return self._s[2526]! } - public var Call_ConnectionErrorTitle: String { return self._s[2527]! } - public var UserInfo_NotificationsEnable: String { return self._s[2528]! } - public var ArchivedChats_IntroText1: String { return self._s[2529]! } - public var Tour_Text4: String { return self._s[2532]! } - public var WallpaperSearch_Recent: String { return self._s[2533]! } - public var GroupInfo_ScamGroupWarning: String { return self._s[2534]! } - public var Profile_MessageLifetime2s: String { return self._s[2536]! } - public var Notification_MessageLifetime2s: String { return self._s[2537]! } + public var Checkout_NewCard_PostcodeTitle: String { return self._s[2520]! } + public var Passport_Address_RegionPlaceholder: String { return self._s[2522]! } + public var Contacts_ShareTelegram: String { return self._s[2523]! } + public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[2524]! } + public var Channel_ErrorAccessDenied: String { return self._s[2525]! } + public var UserInfo_ScamBotWarning: String { return self._s[2527]! } + public var Stickers_GroupChooseStickerPack: String { return self._s[2528]! } + public var Call_ConnectionErrorTitle: String { return self._s[2529]! } + public var UserInfo_NotificationsEnable: String { return self._s[2530]! } + public var ArchivedChats_IntroText1: String { return self._s[2531]! } + public var Tour_Text4: String { return self._s[2534]! } + public var WallpaperSearch_Recent: String { return self._s[2535]! } + public var GroupInfo_ScamGroupWarning: String { return self._s[2536]! } + public var Profile_MessageLifetime2s: String { return self._s[2538]! } + public var Notification_MessageLifetime2s: String { return self._s[2539]! } public func Time_PreciseDate_m10(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2538]!, self._r[2538]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2540]!, self._r[2540]!, [_1, _2, _3]) } - public var Cache_ClearCache: String { return self._s[2539]! } - public var AutoNightTheme_UpdateLocation: String { return self._s[2540]! } - public var Permissions_NotificationsUnreachableText_v0: String { return self._s[2541]! } + public var Cache_ClearCache: String { return self._s[2541]! } + public var AutoNightTheme_UpdateLocation: String { return self._s[2542]! } + public var Permissions_NotificationsUnreachableText_v0: String { return self._s[2543]! } public func Channel_AdminLog_MessageChangedGroupUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2545]!, self._r[2545]!, [_0]) - } - public func Conversation_ShareMyPhoneNumber_StatusSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2547]!, self._r[2547]!, [_0]) } - public var LocalGroup_Text: String { return self._s[2548]! } - public var Channel_AdminLog_EmptyFilterTitle: String { return self._s[2549]! } - public var SocksProxySetup_TypeSocks: String { return self._s[2550]! } - public var ChatList_UnarchiveAction: String { return self._s[2551]! } - public var AutoNightTheme_Title: String { return self._s[2552]! } - public var InstantPage_FeedbackButton: String { return self._s[2553]! } - public var Passport_FieldAddress: String { return self._s[2554]! } - public var Month_ShortMarch: String { return self._s[2555]! } + public func Conversation_ShareMyPhoneNumber_StatusSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2549]!, self._r[2549]!, [_0]) + } + public var LocalGroup_Text: String { return self._s[2550]! } + public var Channel_AdminLog_EmptyFilterTitle: String { return self._s[2551]! } + public var SocksProxySetup_TypeSocks: String { return self._s[2552]! } + public var ChatList_UnarchiveAction: String { return self._s[2553]! } + public var AutoNightTheme_Title: String { return self._s[2554]! } + public var InstantPage_FeedbackButton: String { return self._s[2555]! } + public var Passport_FieldAddress: String { return self._s[2556]! } + public var Month_ShortMarch: String { return self._s[2557]! } public func PUSH_MESSAGE_INVOICE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2556]!, self._r[2556]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2558]!, self._r[2558]!, [_1, _2]) } - public var SocksProxySetup_UsernamePlaceholder: String { return self._s[2557]! } - public var Conversation_ShareInlineBotLocationConfirmation: String { return self._s[2558]! } - public var Passport_FloodError: String { return self._s[2559]! } - public var SecretGif_Title: String { return self._s[2560]! } - public var NotificationSettings_ShowNotificationsAllAccountsInfoOn: String { return self._s[2561]! } - public var Passport_Language_th: String { return self._s[2563]! } - public var Passport_Address_Address: String { return self._s[2564]! } - public var Login_InvalidLastNameError: String { return self._s[2565]! } - public var Notifications_InAppNotificationsPreview: String { return self._s[2566]! } - public var Notifications_PermissionsUnreachableTitle: String { return self._s[2567]! } - public var SettingsSearch_FAQ: String { return self._s[2568]! } - public var ShareMenu_Send: String { return self._s[2569]! } - public var WallpaperSearch_ColorYellow: String { return self._s[2571]! } - public var Month_GenNovember: String { return self._s[2573]! } - public var SettingsSearch_Synonyms_Appearance_LargeEmoji: String { return self._s[2575]! } + public var SocksProxySetup_UsernamePlaceholder: String { return self._s[2559]! } + public var Conversation_ShareInlineBotLocationConfirmation: String { return self._s[2560]! } + public var Passport_FloodError: String { return self._s[2561]! } + public var SecretGif_Title: String { return self._s[2562]! } + public var NotificationSettings_ShowNotificationsAllAccountsInfoOn: String { return self._s[2563]! } + public var Passport_Language_th: String { return self._s[2565]! } + public var Passport_Address_Address: String { return self._s[2566]! } + public var Login_InvalidLastNameError: String { return self._s[2567]! } + public var Notifications_InAppNotificationsPreview: String { return self._s[2568]! } + public var Notifications_PermissionsUnreachableTitle: String { return self._s[2569]! } + public var SettingsSearch_FAQ: String { return self._s[2570]! } + public var ShareMenu_Send: String { return self._s[2571]! } + public var WallpaperSearch_ColorYellow: String { return self._s[2573]! } + public var Month_GenNovember: String { return self._s[2575]! } + public var SettingsSearch_Synonyms_Appearance_LargeEmoji: String { return self._s[2577]! } public func Conversation_ShareMyPhoneNumberConfirmation(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2576]!, self._r[2576]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2578]!, self._r[2578]!, [_1, _2]) } - public var Checkout_Email: String { return self._s[2577]! } - public var NotificationsSound_Tritone: String { return self._s[2578]! } - public var StickerPacksSettings_ManagingHelp: String { return self._s[2580]! } + public var Checkout_Email: String { return self._s[2579]! } + public var NotificationsSound_Tritone: String { return self._s[2580]! } + public var StickerPacksSettings_ManagingHelp: String { return self._s[2582]! } public func PUSH_PINNED_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2583]!, self._r[2583]!, [_1]) + return formatWithArgumentRanges(self._s[2585]!, self._r[2585]!, [_1]) } - public var ChangePhoneNumberNumber_Help: String { return self._s[2584]! } + public var ChangePhoneNumberNumber_Help: String { return self._s[2586]! } public func Checkout_LiabilityAlert(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2585]!, self._r[2585]!, [_1, _1, _1, _2]) + return formatWithArgumentRanges(self._s[2587]!, self._r[2587]!, [_1, _1, _1, _2]) } - public var ChatList_UndoArchiveTitle: String { return self._s[2586]! } - public var Notification_Exceptions_Add: String { return self._s[2587]! } - public var DialogList_You: String { return self._s[2588]! } - public var MediaPicker_Send: String { return self._s[2591]! } - public var SettingsSearch_Synonyms_Stickers_Title: String { return self._s[2592]! } - public var Call_AudioRouteSpeaker: String { return self._s[2593]! } - public var Watch_UserInfo_Title: String { return self._s[2594]! } - public var Appearance_AccentColor: String { return self._s[2595]! } + public var ChatList_UndoArchiveTitle: String { return self._s[2588]! } + public var Notification_Exceptions_Add: String { return self._s[2589]! } + public var DialogList_You: String { return self._s[2590]! } + public var MediaPicker_Send: String { return self._s[2593]! } + public var SettingsSearch_Synonyms_Stickers_Title: String { return self._s[2594]! } + public var Call_AudioRouteSpeaker: String { return self._s[2595]! } + public var Watch_UserInfo_Title: String { return self._s[2596]! } + public var Appearance_AccentColor: String { return self._s[2597]! } public func Login_EmailPhoneSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2596]!, self._r[2596]!, [_0]) + return formatWithArgumentRanges(self._s[2598]!, self._r[2598]!, [_0]) } - public var Permissions_ContactsAllowInSettings_v0: String { return self._s[2597]! } + public var Permissions_ContactsAllowInSettings_v0: String { return self._s[2599]! } public func PUSH_CHANNEL_MESSAGE_GAME(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2598]!, self._r[2598]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2600]!, self._r[2600]!, [_1, _2]) } - public var Conversation_ClousStorageInfo_Description2: String { return self._s[2599]! } - public var WebSearch_RecentClearConfirmation: String { return self._s[2600]! } - public var Notification_CallOutgoing: String { return self._s[2601]! } - public var PrivacySettings_PasscodeAndFaceId: String { return self._s[2602]! } - public var Channel_DiscussionGroup_MakeHistoryPublic: String { return self._s[2603]! } - public var Call_RecordingDisabledMessage: String { return self._s[2604]! } - public var Message_Game: String { return self._s[2605]! } - public var Conversation_PressVolumeButtonForSound: String { return self._s[2606]! } - public var PrivacyLastSeenSettings_CustomHelp: String { return self._s[2607]! } - public var Channel_DiscussionGroup_PrivateGroup: String { return self._s[2608]! } - public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[2609]! } - public var Date_DialogDateFormat: String { return self._s[2610]! } - public var WallpaperColors_SetCustomColor: String { return self._s[2611]! } - public var Notifications_InAppNotifications: String { return self._s[2612]! } + public var Conversation_ClousStorageInfo_Description2: String { return self._s[2601]! } + public var WebSearch_RecentClearConfirmation: String { return self._s[2602]! } + public var Notification_CallOutgoing: String { return self._s[2603]! } + public var PrivacySettings_PasscodeAndFaceId: String { return self._s[2604]! } + public var Channel_DiscussionGroup_MakeHistoryPublic: String { return self._s[2605]! } + public var Call_RecordingDisabledMessage: String { return self._s[2606]! } + public var Message_Game: String { return self._s[2607]! } + public var Conversation_PressVolumeButtonForSound: String { return self._s[2608]! } + public var PrivacyLastSeenSettings_CustomHelp: String { return self._s[2609]! } + public var Channel_DiscussionGroup_PrivateGroup: String { return self._s[2610]! } + public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[2611]! } + public var Date_DialogDateFormat: String { return self._s[2612]! } + public var WallpaperColors_SetCustomColor: String { return self._s[2613]! } + public var Notifications_InAppNotifications: String { return self._s[2614]! } public func Channel_Management_RemovedBy(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2613]!, self._r[2613]!, [_0]) + return formatWithArgumentRanges(self._s[2615]!, self._r[2615]!, [_0]) } public func Settings_ApplyProxyAlert(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2614]!, self._r[2614]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2616]!, self._r[2616]!, [_1, _2]) } - public var NewContact_Title: String { return self._s[2615]! } + public var NewContact_Title: String { return self._s[2617]! } public func AutoDownloadSettings_UpToForAll(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2616]!, self._r[2616]!, [_0]) + return formatWithArgumentRanges(self._s[2618]!, self._r[2618]!, [_0]) } - public var Conversation_ViewContactDetails: String { return self._s[2617]! } + public var Conversation_ViewContactDetails: String { return self._s[2619]! } public func PUSH_CHANNEL_MESSAGE_CONTACT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2619]!, self._r[2619]!, [_1]) + return formatWithArgumentRanges(self._s[2621]!, self._r[2621]!, [_1]) } - public var Checkout_NewCard_CardholderNameTitle: String { return self._s[2620]! } - public var Passport_Identity_ExpiryDateNone: String { return self._s[2621]! } - public var PrivacySettings_Title: String { return self._s[2622]! } - public var Conversation_SilentBroadcastTooltipOff: String { return self._s[2625]! } - public var GroupRemoved_UsersSectionTitle: String { return self._s[2626]! } - public var Contacts_PhoneNumber: String { return self._s[2627]! } - public var Map_ShowPlaces: String { return self._s[2629]! } - public var ChatAdmins_Title: String { return self._s[2630]! } - public var InstantPage_Reference: String { return self._s[2632]! } - public var ReportGroupLocation_Text: String { return self._s[2633]! } + public var Checkout_NewCard_CardholderNameTitle: String { return self._s[2622]! } + public var Passport_Identity_ExpiryDateNone: String { return self._s[2623]! } + public var PrivacySettings_Title: String { return self._s[2624]! } + public var Conversation_SilentBroadcastTooltipOff: String { return self._s[2627]! } + public var GroupRemoved_UsersSectionTitle: String { return self._s[2628]! } + public var Contacts_PhoneNumber: String { return self._s[2629]! } + public var Map_ShowPlaces: String { return self._s[2631]! } + public var ChatAdmins_Title: String { return self._s[2632]! } + public var InstantPage_Reference: String { return self._s[2634]! } + public var ReportGroupLocation_Text: String { return self._s[2635]! } public func PUSH_CHAT_MESSAGE_FWD(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2634]!, self._r[2634]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2636]!, self._r[2636]!, [_1, _2]) } - public var Camera_FlashOff: String { return self._s[2635]! } - public var Watch_UserInfo_Block: String { return self._s[2636]! } - public var ChatSettings_Stickers: String { return self._s[2637]! } - public var ChatSettings_DownloadInBackground: String { return self._s[2638]! } + public var Camera_FlashOff: String { return self._s[2637]! } + public var Watch_UserInfo_Block: String { return self._s[2638]! } + public var ChatSettings_Stickers: String { return self._s[2639]! } + public var ChatSettings_DownloadInBackground: String { return self._s[2640]! } public func UserInfo_BlockConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2639]!, self._r[2639]!, [_0]) + return formatWithArgumentRanges(self._s[2641]!, self._r[2641]!, [_0]) } - public var Settings_ViewPhoto: String { return self._s[2640]! } - public var Login_CheckOtherSessionMessages: String { return self._s[2641]! } - public var AutoDownloadSettings_Cellular: String { return self._s[2642]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsExceptions: String { return self._s[2643]! } + public var Settings_ViewPhoto: String { return self._s[2642]! } + public var Login_CheckOtherSessionMessages: String { return self._s[2643]! } + public var AutoDownloadSettings_Cellular: String { return self._s[2644]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsExceptions: String { return self._s[2645]! } public func Target_InviteToGroupConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2645]!, self._r[2645]!, [_0]) + return formatWithArgumentRanges(self._s[2647]!, self._r[2647]!, [_0]) } - public var Privacy_DeleteDrafts: String { return self._s[2646]! } - public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[2647]! } + public var Privacy_DeleteDrafts: String { return self._s[2648]! } + public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[2649]! } public func LastSeen_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2648]!, self._r[2648]!, [_0]) + return formatWithArgumentRanges(self._s[2650]!, self._r[2650]!, [_0]) } - public var DialogList_SavedMessagesHelp: String { return self._s[2649]! } - public var DialogList_SavedMessages: String { return self._s[2650]! } - public var GroupInfo_UpgradeButton: String { return self._s[2651]! } - public var DialogList_Pin: String { return self._s[2653]! } + public var DialogList_SavedMessagesHelp: String { return self._s[2651]! } + public var DialogList_SavedMessages: String { return self._s[2652]! } + public var GroupInfo_UpgradeButton: String { return self._s[2653]! } + public var DialogList_Pin: String { return self._s[2655]! } public func ForwardedAuthors2(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2654]!, self._r[2654]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2656]!, self._r[2656]!, [_0, _1]) } public func Login_PhoneGenericEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2655]!, self._r[2655]!, [_0]) + return formatWithArgumentRanges(self._s[2657]!, self._r[2657]!, [_0]) } - public var Notification_Exceptions_AlwaysOn: String { return self._s[2656]! } - public var UserInfo_NotificationsDisable: String { return self._s[2657]! } - public var Paint_Outlined: String { return self._s[2658]! } - public var Activity_PlayingGame: String { return self._s[2659]! } - public var SearchImages_NoImagesFound: String { return self._s[2660]! } - public var SocksProxySetup_ProxyType: String { return self._s[2661]! } - public var AppleWatch_ReplyPresetsHelp: String { return self._s[2663]! } - public var Conversation_ContextMenuCancelSending: String { return self._s[2664]! } - public var Settings_AppLanguage: String { return self._s[2665]! } - public var TwoStepAuth_ResetAccountHelp: String { return self._s[2666]! } - public var Common_ChoosePhoto: String { return self._s[2667]! } - public var CallFeedback_ReasonEcho: String { return self._s[2668]! } + public var Notification_Exceptions_AlwaysOn: String { return self._s[2658]! } + public var UserInfo_NotificationsDisable: String { return self._s[2659]! } + public var Paint_Outlined: String { return self._s[2660]! } + public var Activity_PlayingGame: String { return self._s[2661]! } + public var SearchImages_NoImagesFound: String { return self._s[2662]! } + public var SocksProxySetup_ProxyType: String { return self._s[2663]! } + public var AppleWatch_ReplyPresetsHelp: String { return self._s[2665]! } + public var Conversation_ContextMenuCancelSending: String { return self._s[2666]! } + public var Settings_AppLanguage: String { return self._s[2667]! } + public var TwoStepAuth_ResetAccountHelp: String { return self._s[2668]! } + public var Common_ChoosePhoto: String { return self._s[2669]! } + public var CallFeedback_ReasonEcho: String { return self._s[2670]! } public func PUSH_PINNED_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2669]!, self._r[2669]!, [_1]) + return formatWithArgumentRanges(self._s[2671]!, self._r[2671]!, [_1]) } - public var Privacy_Calls_AlwaysAllow: String { return self._s[2670]! } - public var Activity_UploadingVideo: String { return self._s[2671]! } - public var ChannelInfo_DeleteChannelConfirmation: String { return self._s[2672]! } - public var NetworkUsageSettings_Wifi: String { return self._s[2673]! } - public var Channel_BanUser_PermissionReadMessages: String { return self._s[2674]! } - public var Checkout_PayWithTouchId: String { return self._s[2675]! } - public var Wallpaper_ResetWallpapersConfirmation: String { return self._s[2676]! } + public var Privacy_Calls_AlwaysAllow: String { return self._s[2672]! } + public var Activity_UploadingVideo: String { return self._s[2673]! } + public var ChannelInfo_DeleteChannelConfirmation: String { return self._s[2674]! } + public var NetworkUsageSettings_Wifi: String { return self._s[2675]! } + public var Channel_BanUser_PermissionReadMessages: String { return self._s[2676]! } + public var Checkout_PayWithTouchId: String { return self._s[2677]! } + public var Wallpaper_ResetWallpapersConfirmation: String { return self._s[2678]! } public func PUSH_LOCKED_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2678]!, self._r[2678]!, [_1]) + return formatWithArgumentRanges(self._s[2680]!, self._r[2680]!, [_1]) } - public var Notifications_ExceptionsNone: String { return self._s[2679]! } + public var Notifications_ExceptionsNone: String { return self._s[2681]! } public func Message_ForwardedMessageShort(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2680]!, self._r[2680]!, [_0]) + return formatWithArgumentRanges(self._s[2682]!, self._r[2682]!, [_0]) } public func PUSH_PINNED_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2681]!, self._r[2681]!, [_1]) + return formatWithArgumentRanges(self._s[2683]!, self._r[2683]!, [_1]) } - public var AuthSessions_IncompleteAttempts: String { return self._s[2683]! } - public var Passport_Address_Region: String { return self._s[2686]! } - public var ChatList_DeleteChat: String { return self._s[2687]! } - public var LogoutOptions_ClearCacheTitle: String { return self._s[2688]! } - public var PhotoEditor_TiltShift: String { return self._s[2689]! } - public var Settings_FAQ_URL: String { return self._s[2690]! } - public var Passport_Language_sl: String { return self._s[2691]! } - public var Settings_PrivacySettings: String { return self._s[2693]! } - public var SharedMedia_TitleLink: String { return self._s[2694]! } - public var Passport_Identity_TypePassportUploadScan: String { return self._s[2695]! } - public var Settings_SetProfilePhoto: String { return self._s[2696]! } - public var Channel_About_Help: String { return self._s[2697]! } - public var Contacts_PermissionsEnable: String { return self._s[2698]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[2699]! } - public var AttachmentMenu_SendAsFiles: String { return self._s[2700]! } - public var CallFeedback_ReasonInterruption: String { return self._s[2702]! } - public var Passport_Address_AddTemporaryRegistration: String { return self._s[2703]! } - public var AutoDownloadSettings_AutodownloadVideos: String { return self._s[2704]! } - public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[2705]! } - public var PrivacySettings_DeleteAccountTitle: String { return self._s[2706]! } - public var AccessDenied_VideoMessageCamera: String { return self._s[2708]! } - public var Map_OpenInYandexMaps: String { return self._s[2710]! } - public var CreateGroup_ErrorLocatedGroupsTooMuch: String { return self._s[2711]! } - public var PhotoEditor_SaturationTool: String { return self._s[2712]! } + public var AuthSessions_IncompleteAttempts: String { return self._s[2685]! } + public var Passport_Address_Region: String { return self._s[2688]! } + public var ChatList_DeleteChat: String { return self._s[2689]! } + public var LogoutOptions_ClearCacheTitle: String { return self._s[2690]! } + public var PhotoEditor_TiltShift: String { return self._s[2691]! } + public var Settings_FAQ_URL: String { return self._s[2692]! } + public var Passport_Language_sl: String { return self._s[2693]! } + public var Settings_PrivacySettings: String { return self._s[2695]! } + public var SharedMedia_TitleLink: String { return self._s[2696]! } + public var Passport_Identity_TypePassportUploadScan: String { return self._s[2697]! } + public var Settings_SetProfilePhoto: String { return self._s[2698]! } + public var Channel_About_Help: String { return self._s[2699]! } + public var Contacts_PermissionsEnable: String { return self._s[2700]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[2701]! } + public var AttachmentMenu_SendAsFiles: String { return self._s[2702]! } + public var CallFeedback_ReasonInterruption: String { return self._s[2704]! } + public var Passport_Address_AddTemporaryRegistration: String { return self._s[2705]! } + public var AutoDownloadSettings_AutodownloadVideos: String { return self._s[2706]! } + public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[2707]! } + public var PrivacySettings_DeleteAccountTitle: String { return self._s[2708]! } + public var AccessDenied_VideoMessageCamera: String { return self._s[2710]! } + public var Map_OpenInYandexMaps: String { return self._s[2712]! } + public var CreateGroup_ErrorLocatedGroupsTooMuch: String { return self._s[2713]! } + public var PhotoEditor_SaturationTool: String { return self._s[2714]! } public func PUSH_MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2713]!, self._r[2713]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2715]!, self._r[2715]!, [_1, _2]) } - public var PrivacyPhoneNumberSettings_CustomHelp: String { return self._s[2714]! } - public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[2715]! } - public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[2716]! } - public var Appearance_TextSize: String { return self._s[2717]! } + public var PrivacyPhoneNumberSettings_CustomHelp: String { return self._s[2716]! } + public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[2717]! } + public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[2718]! } + public var Appearance_TextSize: String { return self._s[2719]! } public func LOCAL_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2718]!, self._r[2718]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[2720]!, self._r[2720]!, [_1, "\(_2)"]) } - public var Channel_Username_InvalidTooShort: String { return self._s[2720]! } + public var Channel_Username_InvalidTooShort: String { return self._s[2722]! } public func Group_OwnershipTransfer_DescriptionInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2721]!, self._r[2721]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2723]!, self._r[2723]!, [_1, _2]) } public func PUSH_CHAT_MESSAGE_GAME(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2722]!, self._r[2722]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2724]!, self._r[2724]!, [_1, _2, _3]) } - public var GroupInfo_PublicLinkAdd: String { return self._s[2723]! } - public var Passport_PassportInformation: String { return self._s[2726]! } - public var WatchRemote_AlertTitle: String { return self._s[2727]! } - public var Privacy_GroupsAndChannels_NeverAllow: String { return self._s[2728]! } - public var ConvertToSupergroup_HelpText: String { return self._s[2730]! } + public var GroupInfo_PublicLinkAdd: String { return self._s[2725]! } + public var Passport_PassportInformation: String { return self._s[2728]! } + public var WatchRemote_AlertTitle: String { return self._s[2729]! } + public var Privacy_GroupsAndChannels_NeverAllow: String { return self._s[2730]! } + public var ConvertToSupergroup_HelpText: String { return self._s[2732]! } public func Time_MonthOfYear_m7(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2731]!, self._r[2731]!, [_0]) + return formatWithArgumentRanges(self._s[2733]!, self._r[2733]!, [_0]) } public func PUSH_PHONE_CALL_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2732]!, self._r[2732]!, [_1]) + return formatWithArgumentRanges(self._s[2734]!, self._r[2734]!, [_1]) } - public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[2733]! } - public var TwoStepAuth_RecoveryCodeInvalid: String { return self._s[2735]! } - public var AccessDenied_CameraDisabled: String { return self._s[2736]! } + public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[2735]! } + public var TwoStepAuth_RecoveryCodeInvalid: String { return self._s[2737]! } + public var AccessDenied_CameraDisabled: String { return self._s[2738]! } public func Channel_Username_UsernameIsAvailable(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2737]!, self._r[2737]!, [_0]) + return formatWithArgumentRanges(self._s[2739]!, self._r[2739]!, [_0]) } - public var PhotoEditor_ContrastTool: String { return self._s[2740]! } + public var PhotoEditor_ContrastTool: String { return self._s[2742]! } public func PUSH_PINNED_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2741]!, self._r[2741]!, [_1]) + return formatWithArgumentRanges(self._s[2743]!, self._r[2743]!, [_1]) } - public var DialogList_Draft: String { return self._s[2742]! } - public var Privacy_TopPeersDelete: String { return self._s[2744]! } - public var LoginPassword_PasswordPlaceholder: String { return self._s[2745]! } - public var Passport_Identity_TypeIdentityCardUploadScan: String { return self._s[2746]! } - public var WebSearch_RecentSectionClear: String { return self._s[2747]! } - public var Watch_ChatList_NoConversationsTitle: String { return self._s[2749]! } - public var Common_Done: String { return self._s[2751]! } - public var AuthSessions_EmptyText: String { return self._s[2752]! } - public var Conversation_ShareBotContactConfirmation: String { return self._s[2753]! } - public var Tour_Title5: String { return self._s[2754]! } + public var DialogList_Draft: String { return self._s[2744]! } + public var Privacy_TopPeersDelete: String { return self._s[2746]! } + public var LoginPassword_PasswordPlaceholder: String { return self._s[2747]! } + public var Passport_Identity_TypeIdentityCardUploadScan: String { return self._s[2748]! } + public var WebSearch_RecentSectionClear: String { return self._s[2749]! } + public var Watch_ChatList_NoConversationsTitle: String { return self._s[2751]! } + public var Common_Done: String { return self._s[2753]! } + public var AuthSessions_EmptyText: String { return self._s[2754]! } + public var Conversation_ShareBotContactConfirmation: String { return self._s[2755]! } + public var Tour_Title5: String { return self._s[2756]! } public func Map_DirectionsDriveEta(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2755]!, self._r[2755]!, [_0]) + return formatWithArgumentRanges(self._s[2757]!, self._r[2757]!, [_0]) } - public var ApplyLanguage_UnsufficientDataTitle: String { return self._s[2756]! } - public var Conversation_LinkDialogSave: String { return self._s[2757]! } - public var GroupInfo_ActionRestrict: String { return self._s[2758]! } - public var Checkout_Title: String { return self._s[2759]! } - public var Channel_DiscussionGroup_HeaderLabel: String { return self._s[2761]! } - public var Channel_AdminLog_CanChangeInfo: String { return self._s[2763]! } - public var Notification_RenamedGroup: String { return self._s[2764]! } - public var PeopleNearby_Groups: String { return self._s[2765]! } - public var Checkout_PayWithFaceId: String { return self._s[2766]! } - public var Channel_BanList_BlockedTitle: String { return self._s[2767]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsSound: String { return self._s[2769]! } - public var Checkout_WebConfirmation_Title: String { return self._s[2770]! } - public var Notifications_MessageNotificationsAlert: String { return self._s[2771]! } - public var Profile_AddToExisting: String { return self._s[2773]! } + public var ApplyLanguage_UnsufficientDataTitle: String { return self._s[2758]! } + public var Conversation_LinkDialogSave: String { return self._s[2759]! } + public var GroupInfo_ActionRestrict: String { return self._s[2760]! } + public var Checkout_Title: String { return self._s[2761]! } + public var Channel_DiscussionGroup_HeaderLabel: String { return self._s[2763]! } + public var Channel_AdminLog_CanChangeInfo: String { return self._s[2765]! } + public var Notification_RenamedGroup: String { return self._s[2766]! } + public var PeopleNearby_Groups: String { return self._s[2767]! } + public var Checkout_PayWithFaceId: String { return self._s[2768]! } + public var Channel_BanList_BlockedTitle: String { return self._s[2769]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsSound: String { return self._s[2771]! } + public var Checkout_WebConfirmation_Title: String { return self._s[2772]! } + public var Notifications_MessageNotificationsAlert: String { return self._s[2773]! } + public func Activity_RemindAboutGroup(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2774]!, self._r[2774]!, [_0]) + } + public var Profile_AddToExisting: String { return self._s[2776]! } public func Profile_CreateEncryptedChatOutdatedError(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2774]!, self._r[2774]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2777]!, self._r[2777]!, [_0, _1]) } - public var Cache_Files: String { return self._s[2776]! } - public var Permissions_PrivacyPolicy: String { return self._s[2777]! } - public var SocksProxySetup_ConnectAndSave: String { return self._s[2778]! } - public var UserInfo_NotificationsDefaultDisabled: String { return self._s[2779]! } - public var AutoDownloadSettings_TypeContacts: String { return self._s[2781]! } - public var Calls_NoCallsPlaceholder: String { return self._s[2783]! } - public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[2784]! } - public var Notifications_ExceptionsGroupPlaceholder: String { return self._s[2786]! } + public var Cache_Files: String { return self._s[2779]! } + public var Permissions_PrivacyPolicy: String { return self._s[2780]! } + public var SocksProxySetup_ConnectAndSave: String { return self._s[2781]! } + public var UserInfo_NotificationsDefaultDisabled: String { return self._s[2782]! } + public var AutoDownloadSettings_TypeContacts: String { return self._s[2784]! } + public var Calls_NoCallsPlaceholder: String { return self._s[2786]! } + public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[2787]! } + public var Notifications_ExceptionsGroupPlaceholder: String { return self._s[2789]! } public func PUSH_CHAT_MESSAGE_INVOICE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2787]!, self._r[2787]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2790]!, self._r[2790]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsSound: String { return self._s[2788]! } - public var Passport_FieldAddressHelp: String { return self._s[2789]! } - public var Privacy_GroupsAndChannels_InviteToChannelMultipleError: String { return self._s[2790]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsSound: String { return self._s[2791]! } + public var Passport_FieldAddressHelp: String { return self._s[2792]! } + public var Privacy_GroupsAndChannels_InviteToChannelMultipleError: String { return self._s[2793]! } public func Login_TermsOfService_ProceedBot(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2791]!, self._r[2791]!, [_0]) + return formatWithArgumentRanges(self._s[2794]!, self._r[2794]!, [_0]) } - public var Channel_AdminLog_EmptyTitle: String { return self._s[2792]! } - public var Privacy_Calls_NeverAllow_Title: String { return self._s[2794]! } - public var Login_UnknownError: String { return self._s[2795]! } - public var Group_UpgradeNoticeText2: String { return self._s[2797]! } - public var Watch_Compose_AddContact: String { return self._s[2798]! } - public var Web_Error: String { return self._s[2799]! } - public var Gif_Search: String { return self._s[2800]! } - public var Profile_MessageLifetime1h: String { return self._s[2801]! } - public var CheckoutInfo_ReceiverInfoEmailPlaceholder: String { return self._s[2802]! } - public var Channel_Username_CheckingUsername: String { return self._s[2803]! } - public var CallFeedback_ReasonSilentRemote: String { return self._s[2804]! } - public var AutoDownloadSettings_TypeChannels: String { return self._s[2805]! } - public var Channel_AboutItem: String { return self._s[2806]! } - public var Privacy_GroupsAndChannels_AlwaysAllow_Placeholder: String { return self._s[2808]! } - public var GroupInfo_SharedMedia: String { return self._s[2809]! } + public var Channel_AdminLog_EmptyTitle: String { return self._s[2795]! } + public var Privacy_Calls_NeverAllow_Title: String { return self._s[2797]! } + public var Login_UnknownError: String { return self._s[2798]! } + public var Group_UpgradeNoticeText2: String { return self._s[2800]! } + public var Watch_Compose_AddContact: String { return self._s[2801]! } + public var Web_Error: String { return self._s[2802]! } + public var Gif_Search: String { return self._s[2803]! } + public var Profile_MessageLifetime1h: String { return self._s[2804]! } + public var CheckoutInfo_ReceiverInfoEmailPlaceholder: String { return self._s[2805]! } + public var Channel_Username_CheckingUsername: String { return self._s[2806]! } + public var CallFeedback_ReasonSilentRemote: String { return self._s[2807]! } + public var AutoDownloadSettings_TypeChannels: String { return self._s[2808]! } + public var Channel_AboutItem: String { return self._s[2809]! } + public var Privacy_GroupsAndChannels_AlwaysAllow_Placeholder: String { return self._s[2811]! } + public var GroupInfo_SharedMedia: String { return self._s[2812]! } public func Channel_AdminLog_MessagePromotedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2810]!, self._r[2810]!, [_1]) + return formatWithArgumentRanges(self._s[2813]!, self._r[2813]!, [_1]) } - public var Call_PhoneCallInProgressMessage: String { return self._s[2811]! } + public var Call_PhoneCallInProgressMessage: String { return self._s[2814]! } public func PUSH_CHANNEL_ALBUM(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2812]!, self._r[2812]!, [_1]) + return formatWithArgumentRanges(self._s[2815]!, self._r[2815]!, [_1]) } - public var ChatList_UndoArchiveRevealedText: String { return self._s[2813]! } - public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[2814]! } - public var Conversation_SearchByName_Placeholder: String { return self._s[2815]! } - public var CreatePoll_AddOption: String { return self._s[2816]! } - public var GroupInfo_Permissions_SearchPlaceholder: String { return self._s[2817]! } - public var Group_UpgradeNoticeHeader: String { return self._s[2818]! } - public var Channel_Management_AddModerator: String { return self._s[2819]! } - public var AutoDownloadSettings_MaxFileSize: String { return self._s[2820]! } - public var StickerPacksSettings_ShowStickersButton: String { return self._s[2821]! } - public var NotificationsSound_Hello: String { return self._s[2822]! } - public var SocksProxySetup_SavedProxies: String { return self._s[2823]! } - public var Channel_Stickers_Placeholder: String { return self._s[2825]! } + public var ChatList_UndoArchiveRevealedText: String { return self._s[2816]! } + public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[2817]! } + public var Conversation_SearchByName_Placeholder: String { return self._s[2818]! } + public var CreatePoll_AddOption: String { return self._s[2819]! } + public var GroupInfo_Permissions_SearchPlaceholder: String { return self._s[2820]! } + public var Group_UpgradeNoticeHeader: String { return self._s[2821]! } + public var Channel_Management_AddModerator: String { return self._s[2822]! } + public var AutoDownloadSettings_MaxFileSize: String { return self._s[2823]! } + public var StickerPacksSettings_ShowStickersButton: String { return self._s[2824]! } + public var NotificationsSound_Hello: String { return self._s[2825]! } + public var SocksProxySetup_SavedProxies: String { return self._s[2826]! } + public var Channel_Stickers_Placeholder: String { return self._s[2828]! } public func Login_EmailCodeBody(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2826]!, self._r[2826]!, [_0]) + return formatWithArgumentRanges(self._s[2829]!, self._r[2829]!, [_0]) } - public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[2827]! } - public var Channel_Management_AddModeratorHelp: String { return self._s[2828]! } - public var ContactInfo_BirthdayLabel: String { return self._s[2829]! } - public var ChangePhoneNumberCode_RequestingACall: String { return self._s[2830]! } - public var AutoDownloadSettings_Channels: String { return self._s[2831]! } - public var Passport_Language_mn: String { return self._s[2832]! } - public var Notifications_ResetAllNotificationsHelp: String { return self._s[2835]! } - public var Passport_Language_ja: String { return self._s[2837]! } - public var Settings_About_Title: String { return self._s[2838]! } - public var Settings_NotificationsAndSounds: String { return self._s[2839]! } - public var ChannelInfo_DeleteGroup: String { return self._s[2840]! } - public var Settings_BlockedUsers: String { return self._s[2841]! } + public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[2830]! } + public var Channel_Management_AddModeratorHelp: String { return self._s[2831]! } + public var ContactInfo_BirthdayLabel: String { return self._s[2832]! } + public var ChangePhoneNumberCode_RequestingACall: String { return self._s[2833]! } + public var AutoDownloadSettings_Channels: String { return self._s[2834]! } + public var Passport_Language_mn: String { return self._s[2835]! } + public var Notifications_ResetAllNotificationsHelp: String { return self._s[2838]! } + public var Passport_Language_ja: String { return self._s[2840]! } + public var Settings_About_Title: String { return self._s[2841]! } + public var Settings_NotificationsAndSounds: String { return self._s[2842]! } + public var ChannelInfo_DeleteGroup: String { return self._s[2843]! } + public var Settings_BlockedUsers: String { return self._s[2844]! } public func Time_MonthOfYear_m4(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2842]!, self._r[2842]!, [_0]) + return formatWithArgumentRanges(self._s[2845]!, self._r[2845]!, [_0]) } - public var AutoDownloadSettings_PreloadVideo: String { return self._s[2843]! } - public var Passport_Address_AddResidentialAddress: String { return self._s[2844]! } - public var Channel_Username_Title: String { return self._s[2845]! } + public var AutoDownloadSettings_PreloadVideo: String { return self._s[2846]! } + public var Passport_Address_AddResidentialAddress: String { return self._s[2847]! } + public var Channel_Username_Title: String { return self._s[2848]! } public func Notification_RemovedGroupPhoto(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2846]!, self._r[2846]!, [_0]) + return formatWithArgumentRanges(self._s[2849]!, self._r[2849]!, [_0]) } - public var AttachmentMenu_File: String { return self._s[2848]! } - public var AppleWatch_Title: String { return self._s[2849]! } - public var Activity_RecordingVideoMessage: String { return self._s[2850]! } + public var AttachmentMenu_File: String { return self._s[2851]! } + public var AppleWatch_Title: String { return self._s[2852]! } + public var Activity_RecordingVideoMessage: String { return self._s[2853]! } public func Channel_DiscussionGroup_PublicChannelLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2851]!, self._r[2851]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2854]!, self._r[2854]!, [_1, _2]) } - public var Weekday_Saturday: String { return self._s[2852]! } - public var WallpaperPreview_SwipeColorsTopText: String { return self._s[2853]! } - public var Profile_CreateEncryptedChatError: String { return self._s[2854]! } - public var Common_Next: String { return self._s[2856]! } - public var Channel_Stickers_YourStickers: String { return self._s[2858]! } - public var Call_AudioRouteHeadphones: String { return self._s[2859]! } - public var TwoStepAuth_EnterPasswordForgot: String { return self._s[2861]! } - public var Watch_Contacts_NoResults: String { return self._s[2863]! } - public var PhotoEditor_TintTool: String { return self._s[2866]! } - public var LoginPassword_ResetAccount: String { return self._s[2868]! } - public var Settings_SavedMessages: String { return self._s[2869]! } - public var SettingsSearch_Synonyms_Appearance_Animations: String { return self._s[2870]! } - public var Bot_GenericSupportStatus: String { return self._s[2871]! } - public var StickerPack_Add: String { return self._s[2872]! } - public var Checkout_TotalAmount: String { return self._s[2873]! } - public var Your_cards_number_is_invalid: String { return self._s[2874]! } - public var SettingsSearch_Synonyms_Appearance_AutoNightTheme: String { return self._s[2875]! } + public var Weekday_Saturday: String { return self._s[2855]! } + public var WallpaperPreview_SwipeColorsTopText: String { return self._s[2856]! } + public var Profile_CreateEncryptedChatError: String { return self._s[2857]! } + public var Common_Next: String { return self._s[2859]! } + public var Channel_Stickers_YourStickers: String { return self._s[2861]! } + public var Call_AudioRouteHeadphones: String { return self._s[2862]! } + public var TwoStepAuth_EnterPasswordForgot: String { return self._s[2864]! } + public var Watch_Contacts_NoResults: String { return self._s[2866]! } + public var PhotoEditor_TintTool: String { return self._s[2869]! } + public var LoginPassword_ResetAccount: String { return self._s[2871]! } + public var Settings_SavedMessages: String { return self._s[2872]! } + public var SettingsSearch_Synonyms_Appearance_Animations: String { return self._s[2873]! } + public var Bot_GenericSupportStatus: String { return self._s[2874]! } + public var StickerPack_Add: String { return self._s[2875]! } + public var Checkout_TotalAmount: String { return self._s[2876]! } + public var Your_cards_number_is_invalid: String { return self._s[2877]! } + public var SettingsSearch_Synonyms_Appearance_AutoNightTheme: String { return self._s[2878]! } public func ChangePhoneNumberCode_CallTimer(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2876]!, self._r[2876]!, [_0]) + return formatWithArgumentRanges(self._s[2879]!, self._r[2879]!, [_0]) } public func GroupPermission_AddedInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2877]!, self._r[2877]!, [_1, _2]) - } - public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[2878]! } - public func PUSH_CHAT_PHOTO_EDITED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2880]!, self._r[2880]!, [_1, _2]) } + public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[2881]! } + public func PUSH_CHAT_PHOTO_EDITED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2883]!, self._r[2883]!, [_1, _2]) + } public func Conversation_RestrictedTextTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2881]!, self._r[2881]!, [_0]) + return formatWithArgumentRanges(self._s[2884]!, self._r[2884]!, [_0]) } - public var GroupInfo_InviteLink_ShareLink: String { return self._s[2882]! } - public var StickerPack_Share: String { return self._s[2883]! } - public var Passport_DeleteAddress: String { return self._s[2884]! } - public var Settings_Passport: String { return self._s[2885]! } - public var SharedMedia_EmptyFilesText: String { return self._s[2886]! } - public var Conversation_DeleteMessagesForMe: String { return self._s[2887]! } - public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[2888]! } - public var Contacts_PermissionsText: String { return self._s[2889]! } - public var Group_Setup_HistoryVisible: String { return self._s[2890]! } - public var Passport_Address_AddRentalAgreement: String { return self._s[2892]! } - public var SocksProxySetup_Title: String { return self._s[2893]! } - public var Notification_Mute1h: String { return self._s[2894]! } + public var GroupInfo_InviteLink_ShareLink: String { return self._s[2885]! } + public var StickerPack_Share: String { return self._s[2886]! } + public var Passport_DeleteAddress: String { return self._s[2887]! } + public var Settings_Passport: String { return self._s[2888]! } + public var SharedMedia_EmptyFilesText: String { return self._s[2889]! } + public var Conversation_DeleteMessagesForMe: String { return self._s[2890]! } + public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[2891]! } + public var Contacts_PermissionsText: String { return self._s[2892]! } + public var Group_Setup_HistoryVisible: String { return self._s[2893]! } + public var Passport_Address_AddRentalAgreement: String { return self._s[2895]! } + public var SocksProxySetup_Title: String { return self._s[2896]! } + public var Notification_Mute1h: String { return self._s[2897]! } public func Passport_Email_CodeHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2895]!, self._r[2895]!, [_0]) + return formatWithArgumentRanges(self._s[2898]!, self._r[2898]!, [_0]) } - public var NotificationSettings_ShowNotificationsAllAccountsInfoOff: String { return self._s[2896]! } + public var NotificationSettings_ShowNotificationsAllAccountsInfoOff: String { return self._s[2899]! } public func PUSH_PINNED_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2897]!, self._r[2897]!, [_1]) + return formatWithArgumentRanges(self._s[2900]!, self._r[2900]!, [_1]) } - public var FastTwoStepSetup_PasswordSection: String { return self._s[2898]! } - public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[2901]! } - public var InfoPlist_NSFaceIDUsageDescription: String { return self._s[2903]! } - public var DialogList_NoMessagesText: String { return self._s[2904]! } - public var Privacy_ContactsResetConfirmation: String { return self._s[2905]! } - public var Privacy_Calls_P2PHelp: String { return self._s[2906]! } - public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[2908]! } - public var Your_cards_expiration_year_is_invalid: String { return self._s[2909]! } - public var Common_TakePhotoOrVideo: String { return self._s[2910]! } - public var Call_StatusBusy: String { return self._s[2911]! } - public var Conversation_PinnedMessage: String { return self._s[2912]! } - public var AutoDownloadSettings_VoiceMessagesTitle: String { return self._s[2913]! } - public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[2914]! } - public var Undo_ChatCleared: String { return self._s[2915]! } - public var AppleWatch_ReplyPresets: String { return self._s[2916]! } - public var Passport_DiscardMessageDescription: String { return self._s[2918]! } - public var Login_NetworkError: String { return self._s[2919]! } + public var FastTwoStepSetup_PasswordSection: String { return self._s[2901]! } + public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[2904]! } + public var InfoPlist_NSFaceIDUsageDescription: String { return self._s[2906]! } + public var DialogList_NoMessagesText: String { return self._s[2907]! } + public var Privacy_ContactsResetConfirmation: String { return self._s[2908]! } + public var Privacy_Calls_P2PHelp: String { return self._s[2909]! } + public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[2911]! } + public var Your_cards_expiration_year_is_invalid: String { return self._s[2912]! } + public var Common_TakePhotoOrVideo: String { return self._s[2913]! } + public var Call_StatusBusy: String { return self._s[2914]! } + public var Conversation_PinnedMessage: String { return self._s[2915]! } + public var AutoDownloadSettings_VoiceMessagesTitle: String { return self._s[2916]! } + public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[2917]! } + public var Undo_ChatCleared: String { return self._s[2918]! } + public var AppleWatch_ReplyPresets: String { return self._s[2919]! } + public var Passport_DiscardMessageDescription: String { return self._s[2921]! } + public var Login_NetworkError: String { return self._s[2922]! } public func Notification_PinnedRoundMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2920]!, self._r[2920]!, [_0]) + return formatWithArgumentRanges(self._s[2923]!, self._r[2923]!, [_0]) } public func Channel_AdminLog_MessageRemovedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2921]!, self._r[2921]!, [_0]) + return formatWithArgumentRanges(self._s[2924]!, self._r[2924]!, [_0]) } - public var SocksProxySetup_PasswordPlaceholder: String { return self._s[2922]! } - public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[2924]! } + public var SocksProxySetup_PasswordPlaceholder: String { return self._s[2925]! } + public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[2927]! } public func Watch_LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2926]!, self._r[2926]!, [_0]) + return formatWithArgumentRanges(self._s[2929]!, self._r[2929]!, [_0]) } - public var Call_ConnectionErrorMessage: String { return self._s[2927]! } - public var SettingsSearch_Synonyms_Notifications_MessageNotificationsSound: String { return self._s[2928]! } - public var Compose_GroupTokenListPlaceholder: String { return self._s[2930]! } - public var ConversationMedia_Title: String { return self._s[2931]! } - public var EncryptionKey_Title: String { return self._s[2933]! } - public var TwoStepAuth_EnterPasswordTitle: String { return self._s[2934]! } - public var Notification_Exceptions_AddException: String { return self._s[2935]! } - public var PrivacySettings_BlockedPeersEmpty: String { return self._s[2936]! } - public var Profile_MessageLifetime1m: String { return self._s[2937]! } + public var Call_ConnectionErrorMessage: String { return self._s[2930]! } + public var SettingsSearch_Synonyms_Notifications_MessageNotificationsSound: String { return self._s[2931]! } + public var Compose_GroupTokenListPlaceholder: String { return self._s[2933]! } + public var ConversationMedia_Title: String { return self._s[2934]! } + public var EncryptionKey_Title: String { return self._s[2936]! } + public var TwoStepAuth_EnterPasswordTitle: String { return self._s[2937]! } + public var Notification_Exceptions_AddException: String { return self._s[2938]! } + public var PrivacySettings_BlockedPeersEmpty: String { return self._s[2939]! } + public var Profile_MessageLifetime1m: String { return self._s[2940]! } public func Channel_AdminLog_MessageUnkickedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2938]!, self._r[2938]!, [_1]) + return formatWithArgumentRanges(self._s[2941]!, self._r[2941]!, [_1]) } - public var Month_GenMay: String { return self._s[2939]! } + public var Month_GenMay: String { return self._s[2942]! } public func LiveLocationUpdated_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2940]!, self._r[2940]!, [_0]) + return formatWithArgumentRanges(self._s[2943]!, self._r[2943]!, [_0]) } - public var PeopleNearby_Users: String { return self._s[2941]! } - public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[2942]! } - public var AutoDownloadSettings_ResetSettings: String { return self._s[2943]! } - public var Conversation_EmptyPlaceholder: String { return self._s[2945]! } - public var Passport_Address_AddPassportRegistration: String { return self._s[2946]! } - public var Notifications_ChannelNotificationsAlert: String { return self._s[2947]! } - public var ChatSettings_AutoDownloadUsingCellular: String { return self._s[2948]! } - public var Camera_TapAndHoldForVideo: String { return self._s[2949]! } - public var Channel_JoinChannel: String { return self._s[2951]! } - public var Appearance_Animations: String { return self._s[2954]! } + public var PeopleNearby_Users: String { return self._s[2944]! } + public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[2945]! } + public var AutoDownloadSettings_ResetSettings: String { return self._s[2946]! } + public var Conversation_EmptyPlaceholder: String { return self._s[2948]! } + public var Passport_Address_AddPassportRegistration: String { return self._s[2949]! } + public var Notifications_ChannelNotificationsAlert: String { return self._s[2950]! } + public var ChatSettings_AutoDownloadUsingCellular: String { return self._s[2951]! } + public var Camera_TapAndHoldForVideo: String { return self._s[2952]! } + public var Channel_JoinChannel: String { return self._s[2954]! } + public var Appearance_Animations: String { return self._s[2957]! } public func Notification_MessageLifetimeChanged(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2955]!, self._r[2955]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2958]!, self._r[2958]!, [_1, _2]) } - public var Stickers_GroupStickers: String { return self._s[2957]! } - public var ConvertToSupergroup_HelpTitle: String { return self._s[2959]! } - public var Passport_Address_Street: String { return self._s[2960]! } - public var Conversation_AddContact: String { return self._s[2961]! } - public var Login_PhonePlaceholder: String { return self._s[2962]! } - public var Channel_Members_InviteLink: String { return self._s[2964]! } - public var Bot_Stop: String { return self._s[2965]! } - public var SettingsSearch_Synonyms_Proxy_UseForCalls: String { return self._s[2967]! } - public var Notification_PassportValueAddress: String { return self._s[2968]! } - public var Month_ShortJuly: String { return self._s[2969]! } - public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[2970]! } - public var Channel_AdminLog_BanSendMedia: String { return self._s[2971]! } - public var Passport_Identity_ReverseSide: String { return self._s[2972]! } - public var Watch_Stickers_Recents: String { return self._s[2975]! } - public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[2977]! } - public var Map_SendThisLocation: String { return self._s[2978]! } + public var Stickers_GroupStickers: String { return self._s[2960]! } + public var ConvertToSupergroup_HelpTitle: String { return self._s[2962]! } + public var Passport_Address_Street: String { return self._s[2963]! } + public var Conversation_AddContact: String { return self._s[2964]! } + public var Login_PhonePlaceholder: String { return self._s[2965]! } + public var Channel_Members_InviteLink: String { return self._s[2967]! } + public var Bot_Stop: String { return self._s[2968]! } + public var SettingsSearch_Synonyms_Proxy_UseForCalls: String { return self._s[2970]! } + public var Notification_PassportValueAddress: String { return self._s[2971]! } + public var Month_ShortJuly: String { return self._s[2972]! } + public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[2973]! } + public var Channel_AdminLog_BanSendMedia: String { return self._s[2974]! } + public var Passport_Identity_ReverseSide: String { return self._s[2975]! } + public var Watch_Stickers_Recents: String { return self._s[2978]! } + public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[2980]! } + public var Map_SendThisLocation: String { return self._s[2981]! } public func Time_MonthOfYear_m1(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2979]!, self._r[2979]!, [_0]) - } - public func InviteText_SingleContact(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2980]!, self._r[2980]!, [_0]) - } - public var ConvertToSupergroup_Note: String { return self._s[2981]! } - public func FileSize_MB(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2982]!, self._r[2982]!, [_0]) } - public var NetworkUsageSettings_GeneralDataSection: String { return self._s[2983]! } + public func InviteText_SingleContact(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2983]!, self._r[2983]!, [_0]) + } + public var ConvertToSupergroup_Note: String { return self._s[2984]! } + public func FileSize_MB(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2985]!, self._r[2985]!, [_0]) + } + public var NetworkUsageSettings_GeneralDataSection: String { return self._s[2986]! } public func Compatibility_SecretMediaVersionTooLow(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2984]!, self._r[2984]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2987]!, self._r[2987]!, [_0, _1]) } - public var Login_CallRequestState3: String { return self._s[2986]! } - public var Wallpaper_SearchShort: String { return self._s[2987]! } - public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[2989]! } - public var PasscodeSettings_UnlockWithFaceId: String { return self._s[2990]! } + public var Login_CallRequestState3: String { return self._s[2989]! } + public var Wallpaper_SearchShort: String { return self._s[2990]! } + public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[2992]! } + public var PasscodeSettings_UnlockWithFaceId: String { return self._s[2993]! } public func PUSH_CHAT_MESSAGE_GEOLIVE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2991]!, self._r[2991]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2994]!, self._r[2994]!, [_1, _2]) } - public var Channel_AdminLogFilter_Title: String { return self._s[2992]! } - public var Notifications_GroupNotificationsExceptions: String { return self._s[2996]! } + public var Channel_AdminLogFilter_Title: String { return self._s[2995]! } + public var Notifications_GroupNotificationsExceptions: String { return self._s[2999]! } public func FileSize_B(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2997]!, self._r[2997]!, [_0]) + return formatWithArgumentRanges(self._s[3000]!, self._r[3000]!, [_0]) } - public var Passport_CorrectErrors: String { return self._s[2998]! } + public var Passport_CorrectErrors: String { return self._s[3001]! } public func Channel_MessageTitleUpdated(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2999]!, self._r[2999]!, [_0]) + return formatWithArgumentRanges(self._s[3002]!, self._r[3002]!, [_0]) } - public var Map_SendMyCurrentLocation: String { return self._s[3000]! } - public var Channel_DiscussionGroup: String { return self._s[3001]! } + public var Map_SendMyCurrentLocation: String { return self._s[3003]! } + public var Channel_DiscussionGroup: String { return self._s[3004]! } public func PUSH_PINNED_CONTACT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3002]!, self._r[3002]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3005]!, self._r[3005]!, [_1, _2]) } - public var SharedMedia_SearchNoResults: String { return self._s[3003]! } - public var Permissions_NotificationsText_v0: String { return self._s[3004]! } - public var Appearance_AppIcon: String { return self._s[3005]! } - public var LoginPassword_FloodError: String { return self._s[3006]! } - public var Group_Setup_HistoryHiddenHelp: String { return self._s[3008]! } + public var SharedMedia_SearchNoResults: String { return self._s[3006]! } + public var Permissions_NotificationsText_v0: String { return self._s[3007]! } + public var Appearance_AppIcon: String { return self._s[3008]! } + public var LoginPassword_FloodError: String { return self._s[3009]! } + public var Group_Setup_HistoryHiddenHelp: String { return self._s[3011]! } public func TwoStepAuth_PendingEmailHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3009]!, self._r[3009]!, [_0]) - } - public var Passport_Language_bn: String { return self._s[3010]! } - public func DialogList_SingleUploadingPhotoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3011]!, self._r[3011]!, [_0]) - } - public func Notification_PinnedAudioMessage(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3012]!, self._r[3012]!, [_0]) } + public var Passport_Language_bn: String { return self._s[3013]! } + public func DialogList_SingleUploadingPhotoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3014]!, self._r[3014]!, [_0]) + } + public func Notification_PinnedAudioMessage(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3015]!, self._r[3015]!, [_0]) + } public func Channel_AdminLog_MessageChangedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3013]!, self._r[3013]!, [_0]) + return formatWithArgumentRanges(self._s[3016]!, self._r[3016]!, [_0]) } - public var GroupInfo_InvitationLinkGroupFull: String { return self._s[3016]! } - public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[3018]! } - public var Contacts_PermissionsAllow: String { return self._s[3019]! } - public var ReportPeer_ReasonCopyright: String { return self._s[3020]! } - public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[3021]! } - public var WallpaperPreview_Pattern: String { return self._s[3022]! } - public var Paint_Duplicate: String { return self._s[3023]! } - public var Passport_Address_Country: String { return self._s[3024]! } - public var Notification_RenamedChannel: String { return self._s[3026]! } - public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[3027]! } - public var Group_MessagePhotoUpdated: String { return self._s[3028]! } - public var Channel_BanUser_PermissionSendMedia: String { return self._s[3029]! } - public var Conversation_ContextMenuBan: String { return self._s[3030]! } - public var TwoStepAuth_EmailSent: String { return self._s[3031]! } - public var MessagePoll_NoVotes: String { return self._s[3032]! } - public var Passport_Language_is: String { return self._s[3033]! } - public var PeopleNearby_UsersEmpty: String { return self._s[3035]! } - public var Tour_Text5: String { return self._s[3036]! } + public var GroupInfo_InvitationLinkGroupFull: String { return self._s[3019]! } + public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[3021]! } + public var Contacts_PermissionsAllow: String { return self._s[3022]! } + public var ReportPeer_ReasonCopyright: String { return self._s[3023]! } + public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[3024]! } + public var WallpaperPreview_Pattern: String { return self._s[3025]! } + public var Paint_Duplicate: String { return self._s[3026]! } + public var Passport_Address_Country: String { return self._s[3027]! } + public var Notification_RenamedChannel: String { return self._s[3029]! } + public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[3030]! } + public var Group_MessagePhotoUpdated: String { return self._s[3031]! } + public var Channel_BanUser_PermissionSendMedia: String { return self._s[3032]! } + public var Conversation_ContextMenuBan: String { return self._s[3033]! } + public var TwoStepAuth_EmailSent: String { return self._s[3034]! } + public var MessagePoll_NoVotes: String { return self._s[3035]! } + public var Passport_Language_is: String { return self._s[3036]! } + public var PeopleNearby_UsersEmpty: String { return self._s[3038]! } + public var Tour_Text5: String { return self._s[3039]! } public func Call_GroupFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3038]!, self._r[3038]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3041]!, self._r[3041]!, [_1, _2]) } - public var Undo_SecretChatDeleted: String { return self._s[3039]! } - public var SocksProxySetup_ShareQRCode: String { return self._s[3040]! } - public var LogoutOptions_ChangePhoneNumberText: String { return self._s[3041]! } - public var Paint_Edit: String { return self._s[3043]! } - public var Undo_DeletedGroup: String { return self._s[3046]! } - public var LoginPassword_ForgotPassword: String { return self._s[3047]! } - public var GroupInfo_GroupNamePlaceholder: String { return self._s[3048]! } + public var Undo_SecretChatDeleted: String { return self._s[3042]! } + public var SocksProxySetup_ShareQRCode: String { return self._s[3043]! } + public var LogoutOptions_ChangePhoneNumberText: String { return self._s[3044]! } + public var Paint_Edit: String { return self._s[3046]! } + public var Undo_DeletedGroup: String { return self._s[3049]! } + public var LoginPassword_ForgotPassword: String { return self._s[3050]! } + public var GroupInfo_GroupNamePlaceholder: String { return self._s[3051]! } public func Notification_Kicked(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3049]!, self._r[3049]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3052]!, self._r[3052]!, [_0, _1]) } - public var Conversation_InputTextCaptionPlaceholder: String { return self._s[3050]! } - public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3051]! } - public var Passport_Language_uz: String { return self._s[3052]! } - public var Conversation_PinMessageAlertGroup: String { return self._s[3053]! } - public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[3054]! } - public var Map_StopLiveLocation: String { return self._s[3056]! } - public var PasscodeSettings_Help: String { return self._s[3058]! } - public var NotificationsSound_Input: String { return self._s[3059]! } - public var Share_Title: String { return self._s[3062]! } - public var LogoutOptions_Title: String { return self._s[3063]! } - public var Login_TermsOfServiceAgree: String { return self._s[3064]! } - public var Compose_NewEncryptedChatTitle: String { return self._s[3065]! } - public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[3066]! } - public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[3067]! } - public var EnterPasscode_EnterTitle: String { return self._s[3068]! } + public var Conversation_InputTextCaptionPlaceholder: String { return self._s[3053]! } + public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3054]! } + public var Passport_Language_uz: String { return self._s[3055]! } + public var Conversation_PinMessageAlertGroup: String { return self._s[3056]! } + public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[3057]! } + public var Map_StopLiveLocation: String { return self._s[3059]! } + public var PasscodeSettings_Help: String { return self._s[3061]! } + public var NotificationsSound_Input: String { return self._s[3062]! } + public var Share_Title: String { return self._s[3065]! } + public var LogoutOptions_Title: String { return self._s[3066]! } + public var Login_TermsOfServiceAgree: String { return self._s[3067]! } + public var Compose_NewEncryptedChatTitle: String { return self._s[3068]! } + public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[3069]! } + public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[3070]! } + public var EnterPasscode_EnterTitle: String { return self._s[3071]! } public func Call_PrivacyErrorMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3069]!, self._r[3069]!, [_0]) + return formatWithArgumentRanges(self._s[3072]!, self._r[3072]!, [_0]) } - public var Settings_CopyPhoneNumber: String { return self._s[3070]! } - public var Conversation_AddToContacts: String { return self._s[3071]! } - public var NotificationsSound_Keys: String { return self._s[3072]! } + public var Settings_CopyPhoneNumber: String { return self._s[3073]! } + public var Conversation_AddToContacts: String { return self._s[3074]! } + public var NotificationsSound_Keys: String { return self._s[3075]! } public func Call_ParticipantVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3073]!, self._r[3073]!, [_0]) + return formatWithArgumentRanges(self._s[3076]!, self._r[3076]!, [_0]) } - public var Notification_MessageLifetime1w: String { return self._s[3074]! } - public var Message_Video: String { return self._s[3075]! } - public var AutoDownloadSettings_CellularTitle: String { return self._s[3076]! } + public var Notification_MessageLifetime1w: String { return self._s[3077]! } + public var Message_Video: String { return self._s[3078]! } + public var AutoDownloadSettings_CellularTitle: String { return self._s[3079]! } public func PUSH_CHANNEL_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3077]!, self._r[3077]!, [_1]) + return formatWithArgumentRanges(self._s[3080]!, self._r[3080]!, [_1]) } public func Notification_JoinedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3080]!, self._r[3080]!, [_0]) + return formatWithArgumentRanges(self._s[3083]!, self._r[3083]!, [_0]) } public func PrivacySettings_LastSeenContactsPlus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3081]!, self._r[3081]!, [_0]) + return formatWithArgumentRanges(self._s[3084]!, self._r[3084]!, [_0]) } - public var Passport_Language_mk: String { return self._s[3082]! } - public var CreatePoll_CancelConfirmation: String { return self._s[3083]! } - public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3085]! } - public var PrivacyPolicy_Decline: String { return self._s[3086]! } - public var Passport_Identity_DoesNotExpire: String { return self._s[3087]! } - public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[3088]! } - public var Permissions_SiriAllow_v0: String { return self._s[3090]! } - public var Appearance_ThemeCarouselNight: String { return self._s[3091]! } + public var Passport_Language_mk: String { return self._s[3085]! } + public var CreatePoll_CancelConfirmation: String { return self._s[3086]! } + public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3088]! } + public var PrivacyPolicy_Decline: String { return self._s[3089]! } + public var Passport_Identity_DoesNotExpire: String { return self._s[3090]! } + public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[3091]! } + public var Permissions_SiriAllow_v0: String { return self._s[3093]! } + public var Appearance_ThemeCarouselNight: String { return self._s[3094]! } public func LOCAL_CHAT_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3092]!, self._r[3092]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[3095]!, self._r[3095]!, [_1, "\(_2)"]) } public func Notification_RenamedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3093]!, self._r[3093]!, [_0]) + return formatWithArgumentRanges(self._s[3096]!, self._r[3096]!, [_0]) } - public var Paint_Regular: String { return self._s[3094]! } - public var ChatSettings_AutoDownloadReset: String { return self._s[3095]! } - public var SocksProxySetup_ShareLink: String { return self._s[3096]! } - public var BlockedUsers_SelectUserTitle: String { return self._s[3097]! } - public var GroupInfo_InviteByLink: String { return self._s[3099]! } - public var MessageTimer_Custom: String { return self._s[3100]! } - public var UserInfo_NotificationsDefaultEnabled: String { return self._s[3101]! } - public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3103]! } - public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[3104]! } - public var Channel_Username_InvalidTaken: String { return self._s[3105]! } - public var Conversation_ClousStorageInfo_Description3: String { return self._s[3106]! } - public var Settings_ChatBackground: String { return self._s[3107]! } - public var Channel_Subscribers_Title: String { return self._s[3108]! } - public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[3109]! } - public var Watch_ConnectionDescription: String { return self._s[3110]! } - public var ChatList_ArchivedChatsTitle: String { return self._s[3114]! } - public var Wallpaper_ResetWallpapers: String { return self._s[3115]! } - public var EditProfile_Title: String { return self._s[3116]! } - public var NotificationsSound_Bamboo: String { return self._s[3118]! } - public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[3120]! } - public var Login_SmsRequestState2: String { return self._s[3121]! } - public var Passport_Language_ar: String { return self._s[3122]! } + public var Paint_Regular: String { return self._s[3097]! } + public var ChatSettings_AutoDownloadReset: String { return self._s[3098]! } + public var SocksProxySetup_ShareLink: String { return self._s[3099]! } + public var BlockedUsers_SelectUserTitle: String { return self._s[3100]! } + public var GroupInfo_InviteByLink: String { return self._s[3102]! } + public var MessageTimer_Custom: String { return self._s[3103]! } + public var UserInfo_NotificationsDefaultEnabled: String { return self._s[3104]! } + public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3106]! } + public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[3107]! } + public var Channel_Username_InvalidTaken: String { return self._s[3108]! } + public var Conversation_ClousStorageInfo_Description3: String { return self._s[3109]! } + public var Settings_ChatBackground: String { return self._s[3110]! } + public var Channel_Subscribers_Title: String { return self._s[3111]! } + public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[3112]! } + public var Watch_ConnectionDescription: String { return self._s[3113]! } + public var ChatList_ArchivedChatsTitle: String { return self._s[3117]! } + public var Wallpaper_ResetWallpapers: String { return self._s[3118]! } + public var EditProfile_Title: String { return self._s[3119]! } + public var NotificationsSound_Bamboo: String { return self._s[3121]! } + public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[3123]! } + public var Login_SmsRequestState2: String { return self._s[3124]! } + public var Passport_Language_ar: String { return self._s[3125]! } public func Message_AuthorPinnedGame(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3123]!, self._r[3123]!, [_0]) + return formatWithArgumentRanges(self._s[3126]!, self._r[3126]!, [_0]) } - public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[3124]! } - public var Conversation_MessageDialogEdit: String { return self._s[3125]! } + public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[3127]! } + public var Conversation_MessageDialogEdit: String { return self._s[3128]! } public func PUSH_AUTH_UNKNOWN(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3126]!, self._r[3126]!, [_1]) + return formatWithArgumentRanges(self._s[3129]!, self._r[3129]!, [_1]) } - public var Common_Close: String { return self._s[3127]! } - public var GroupInfo_PublicLink: String { return self._s[3128]! } - public var Channel_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[3129]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[3130]! } + public var Common_Close: String { return self._s[3130]! } + public var GroupInfo_PublicLink: String { return self._s[3131]! } + public var Channel_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[3132]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[3133]! } public func Channel_AdminLog_MessageToggleInvitesOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3134]!, self._r[3134]!, [_0]) + return formatWithArgumentRanges(self._s[3137]!, self._r[3137]!, [_0]) } - public var UserInfo_About_Placeholder: String { return self._s[3135]! } + public var UserInfo_About_Placeholder: String { return self._s[3138]! } public func Conversation_FileHowToText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3136]!, self._r[3136]!, [_0]) + return formatWithArgumentRanges(self._s[3139]!, self._r[3139]!, [_0]) } - public var GroupInfo_Permissions_SectionTitle: String { return self._s[3137]! } - public var Channel_Info_Banned: String { return self._s[3139]! } + public var GroupInfo_Permissions_SectionTitle: String { return self._s[3140]! } + public var Channel_Info_Banned: String { return self._s[3142]! } public func Time_MonthOfYear_m11(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3140]!, self._r[3140]!, [_0]) + return formatWithArgumentRanges(self._s[3143]!, self._r[3143]!, [_0]) } - public var Appearance_Other: String { return self._s[3141]! } - public var Passport_Language_my: String { return self._s[3142]! } - public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[3143]! } + public var Appearance_Other: String { return self._s[3144]! } + public var Passport_Language_my: String { return self._s[3145]! } + public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[3146]! } public func Time_PreciseDate_m9(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3144]!, self._r[3144]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3147]!, self._r[3147]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[3145]! } - public var Preview_CopyAddress: String { return self._s[3146]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[3148]! } + public var Preview_CopyAddress: String { return self._s[3149]! } public func DialogList_SinglePlayingGameSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3147]!, self._r[3147]!, [_0]) + return formatWithArgumentRanges(self._s[3150]!, self._r[3150]!, [_0]) } - public var KeyCommand_JumpToPreviousChat: String { return self._s[3148]! } - public var UserInfo_BotSettings: String { return self._s[3149]! } - public var LiveLocation_MenuStopAll: String { return self._s[3151]! } - public var Passport_PasswordCreate: String { return self._s[3152]! } - public var StickerSettings_MaskContextInfo: String { return self._s[3153]! } - public var Message_PinnedLocationMessage: String { return self._s[3154]! } - public var Map_Satellite: String { return self._s[3155]! } - public var Watch_Message_Unsupported: String { return self._s[3156]! } - public var Username_TooManyPublicUsernamesError: String { return self._s[3157]! } - public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[3158]! } + public var KeyCommand_JumpToPreviousChat: String { return self._s[3151]! } + public var UserInfo_BotSettings: String { return self._s[3152]! } + public var LiveLocation_MenuStopAll: String { return self._s[3154]! } + public var Passport_PasswordCreate: String { return self._s[3155]! } + public var StickerSettings_MaskContextInfo: String { return self._s[3156]! } + public var Message_PinnedLocationMessage: String { return self._s[3157]! } + public var Map_Satellite: String { return self._s[3158]! } + public var Watch_Message_Unsupported: String { return self._s[3159]! } + public var Username_TooManyPublicUsernamesError: String { return self._s[3160]! } + public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[3161]! } public func Notification_PinnedTextMessage(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3159]!, self._r[3159]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3162]!, self._r[3162]!, [_0, _1]) } public func Conversation_OpenBotLinkText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3160]!, self._r[3160]!, [_0]) + return formatWithArgumentRanges(self._s[3163]!, self._r[3163]!, [_0]) } - public var Notifications_ChannelNotificationsHelp: String { return self._s[3161]! } - public var Privacy_Calls_P2PContacts: String { return self._s[3162]! } - public var NotificationsSound_None: String { return self._s[3163]! } - public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[3165]! } - public var AccessDenied_VoiceMicrophone: String { return self._s[3166]! } + public var Notifications_ChannelNotificationsHelp: String { return self._s[3164]! } + public var Privacy_Calls_P2PContacts: String { return self._s[3165]! } + public var NotificationsSound_None: String { return self._s[3166]! } + public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[3168]! } + public var AccessDenied_VoiceMicrophone: String { return self._s[3169]! } public func ApplyLanguage_ChangeLanguageAlreadyActive(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3167]!, self._r[3167]!, [_1]) + return formatWithArgumentRanges(self._s[3170]!, self._r[3170]!, [_1]) } - public var Cache_Indexing: String { return self._s[3168]! } - public var DialogList_RecentTitlePeople: String { return self._s[3170]! } - public var DialogList_EncryptionRejected: String { return self._s[3171]! } - public var GroupInfo_Administrators: String { return self._s[3172]! } - public var Passport_ScanPassportHelp: String { return self._s[3173]! } - public var Application_Name: String { return self._s[3174]! } - public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[3175]! } - public var Appearance_ThemeCarouselDay: String { return self._s[3177]! } - public var Passport_Identity_TranslationHelp: String { return self._s[3178]! } + public var Cache_Indexing: String { return self._s[3171]! } + public var DialogList_RecentTitlePeople: String { return self._s[3173]! } + public var DialogList_EncryptionRejected: String { return self._s[3174]! } + public var GroupInfo_Administrators: String { return self._s[3175]! } + public var Passport_ScanPassportHelp: String { return self._s[3176]! } + public var Application_Name: String { return self._s[3177]! } + public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[3178]! } + public var Appearance_ThemeCarouselDay: String { return self._s[3180]! } + public var Passport_Identity_TranslationHelp: String { return self._s[3181]! } public func Notification_JoinedGroupByLink(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3179]!, self._r[3179]!, [_0]) + return formatWithArgumentRanges(self._s[3182]!, self._r[3182]!, [_0]) } public func DialogList_EncryptedChatStartedOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3180]!, self._r[3180]!, [_0]) + return formatWithArgumentRanges(self._s[3183]!, self._r[3183]!, [_0]) } - public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[3181]! } - public var Privacy_ChatsTitle: String { return self._s[3182]! } - public var DialogList_ClearHistoryConfirmation: String { return self._s[3183]! } - public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[3184]! } - public var Watch_Suggestion_HoldOn: String { return self._s[3185]! } - public var Group_EditAdmin_TransferOwnership: String { return self._s[3186]! } - public var Group_LinkedChannel: String { return self._s[3187]! } - public var SocksProxySetup_RequiredCredentials: String { return self._s[3188]! } - public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[3189]! } - public var TwoStepAuth_EmailSkipAlert: String { return self._s[3190]! } - public var Channel_Setup_TypePublic: String { return self._s[3193]! } + public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[3184]! } + public var Privacy_ChatsTitle: String { return self._s[3185]! } + public var DialogList_ClearHistoryConfirmation: String { return self._s[3186]! } + public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[3187]! } + public var Watch_Suggestion_HoldOn: String { return self._s[3188]! } + public var Group_EditAdmin_TransferOwnership: String { return self._s[3189]! } + public var Group_LinkedChannel: String { return self._s[3190]! } + public var SocksProxySetup_RequiredCredentials: String { return self._s[3191]! } + public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[3192]! } + public var TwoStepAuth_EmailSkipAlert: String { return self._s[3193]! } + public var Channel_Setup_TypePublic: String { return self._s[3196]! } public func Channel_AdminLog_MessageToggleInvitesOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3194]!, self._r[3194]!, [_0]) + return formatWithArgumentRanges(self._s[3197]!, self._r[3197]!, [_0]) } - public var Channel_TypeSetup_Title: String { return self._s[3196]! } - public var Map_OpenInMaps: String { return self._s[3198]! } + public var Channel_TypeSetup_Title: String { return self._s[3199]! } + public var Map_OpenInMaps: String { return self._s[3201]! } public func PUSH_PINNED_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3199]!, self._r[3199]!, [_1]) + return formatWithArgumentRanges(self._s[3202]!, self._r[3202]!, [_1]) } - public var NotificationsSound_Tremolo: String { return self._s[3201]! } + public var NotificationsSound_Tremolo: String { return self._s[3204]! } public func Date_ChatDateHeaderYear(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3202]!, self._r[3202]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3205]!, self._r[3205]!, [_1, _2, _3]) } - public var ConversationProfile_UnknownAddMemberError: String { return self._s[3203]! } - public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[3204]! } - public var Passport_PasswordHelp: String { return self._s[3205]! } - public var Login_CodeExpiredError: String { return self._s[3206]! } - public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[3207]! } - public var Conversation_TitleUnmute: String { return self._s[3208]! } - public var Passport_Identity_ScansHelp: String { return self._s[3209]! } - public var Passport_Language_lo: String { return self._s[3210]! } - public var Camera_FlashAuto: String { return self._s[3211]! } - public var Conversation_OpenBotLinkOpen: String { return self._s[3212]! } - public var Common_Cancel: String { return self._s[3213]! } - public var DialogList_SavedMessagesTooltip: String { return self._s[3214]! } - public var TwoStepAuth_SetupPasswordTitle: String { return self._s[3215]! } + public var ConversationProfile_UnknownAddMemberError: String { return self._s[3206]! } + public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[3207]! } + public var Passport_PasswordHelp: String { return self._s[3208]! } + public var Login_CodeExpiredError: String { return self._s[3209]! } + public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[3210]! } + public var Conversation_TitleUnmute: String { return self._s[3211]! } + public var Passport_Identity_ScansHelp: String { return self._s[3212]! } + public var Passport_Language_lo: String { return self._s[3213]! } + public var Camera_FlashAuto: String { return self._s[3214]! } + public var Conversation_OpenBotLinkOpen: String { return self._s[3215]! } + public var Common_Cancel: String { return self._s[3216]! } + public var DialogList_SavedMessagesTooltip: String { return self._s[3217]! } + public var TwoStepAuth_SetupPasswordTitle: String { return self._s[3218]! } public func PUSH_MESSAGE_FWD(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3216]!, self._r[3216]!, [_1]) + return formatWithArgumentRanges(self._s[3219]!, self._r[3219]!, [_1]) } - public var Conversation_ReportSpamConfirmation: String { return self._s[3217]! } - public var ChatSettings_Title: String { return self._s[3219]! } - public var Passport_PasswordReset: String { return self._s[3220]! } - public var SocksProxySetup_TypeNone: String { return self._s[3221]! } - public var PhoneNumberHelp_Help: String { return self._s[3223]! } - public var Checkout_EnterPassword: String { return self._s[3224]! } - public var Share_AuthTitle: String { return self._s[3226]! } - public var Activity_UploadingDocument: String { return self._s[3227]! } - public var State_Connecting: String { return self._s[3228]! } - public var Profile_MessageLifetime1w: String { return self._s[3229]! } - public var Conversation_ContextMenuReport: String { return self._s[3230]! } - public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[3231]! } - public var AutoNightTheme_ScheduledTo: String { return self._s[3232]! } - public var AuthSessions_Terminate: String { return self._s[3233]! } - public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[3234]! } - public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[3235]! } - public var PhotoEditor_Set: String { return self._s[3236]! } - public var EmptyGroupInfo_Title: String { return self._s[3237]! } - public var Login_PadPhoneHelp: String { return self._s[3238]! } - public var AutoDownloadSettings_TypeGroupChats: String { return self._s[3240]! } - public var PrivacyPolicy_DeclineLastWarning: String { return self._s[3242]! } - public var NotificationsSound_Complete: String { return self._s[3243]! } - public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[3244]! } - public var Group_Info_AdminLog: String { return self._s[3245]! } - public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[3246]! } - public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[3247]! } - public var Conversation_Admin: String { return self._s[3249]! } - public var Conversation_GifTooltip: String { return self._s[3250]! } - public var Passport_NotLoggedInMessage: String { return self._s[3251]! } + public var Conversation_ReportSpamConfirmation: String { return self._s[3220]! } + public var ChatSettings_Title: String { return self._s[3222]! } + public var Passport_PasswordReset: String { return self._s[3223]! } + public var SocksProxySetup_TypeNone: String { return self._s[3224]! } + public var PhoneNumberHelp_Help: String { return self._s[3226]! } + public var Checkout_EnterPassword: String { return self._s[3227]! } + public var Share_AuthTitle: String { return self._s[3229]! } + public var Activity_UploadingDocument: String { return self._s[3230]! } + public var State_Connecting: String { return self._s[3231]! } + public var Profile_MessageLifetime1w: String { return self._s[3232]! } + public var Conversation_ContextMenuReport: String { return self._s[3233]! } + public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[3234]! } + public var AutoNightTheme_ScheduledTo: String { return self._s[3235]! } + public var AuthSessions_Terminate: String { return self._s[3236]! } + public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[3237]! } + public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[3238]! } + public var PhotoEditor_Set: String { return self._s[3239]! } + public var EmptyGroupInfo_Title: String { return self._s[3240]! } + public var Login_PadPhoneHelp: String { return self._s[3241]! } + public var AutoDownloadSettings_TypeGroupChats: String { return self._s[3243]! } + public var PrivacyPolicy_DeclineLastWarning: String { return self._s[3245]! } + public var NotificationsSound_Complete: String { return self._s[3246]! } + public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[3247]! } + public var Group_Info_AdminLog: String { return self._s[3248]! } + public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[3249]! } + public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[3250]! } + public var Conversation_Admin: String { return self._s[3252]! } + public var Conversation_GifTooltip: String { return self._s[3253]! } + public var Passport_NotLoggedInMessage: String { return self._s[3254]! } public func AutoDownloadSettings_OnFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3252]!, self._r[3252]!, [_0]) + return formatWithArgumentRanges(self._s[3255]!, self._r[3255]!, [_0]) } - public var Profile_MessageLifetimeForever: String { return self._s[3253]! } - public var SharedMedia_EmptyTitle: String { return self._s[3255]! } - public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[3257]! } - public var Username_Help: String { return self._s[3258]! } - public var DialogList_LanguageTooltip: String { return self._s[3260]! } - public var Map_LoadError: String { return self._s[3261]! } - public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[3262]! } - public var Channel_AdminLog_AddMembers: String { return self._s[3263]! } - public var ArchivedChats_IntroTitle2: String { return self._s[3264]! } - public var Notification_Exceptions_NewException: String { return self._s[3265]! } - public var TwoStepAuth_EmailTitle: String { return self._s[3266]! } - public var WatchRemote_AlertText: String { return self._s[3267]! } - public var ChatSettings_ConnectionType_Title: String { return self._s[3270]! } + public var Profile_MessageLifetimeForever: String { return self._s[3256]! } + public var SharedMedia_EmptyTitle: String { return self._s[3258]! } + public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[3260]! } + public var Username_Help: String { return self._s[3261]! } + public var DialogList_LanguageTooltip: String { return self._s[3263]! } + public var Map_LoadError: String { return self._s[3264]! } + public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[3265]! } + public var Channel_AdminLog_AddMembers: String { return self._s[3266]! } + public var ArchivedChats_IntroTitle2: String { return self._s[3267]! } + public var Notification_Exceptions_NewException: String { return self._s[3268]! } + public var TwoStepAuth_EmailTitle: String { return self._s[3269]! } + public var WatchRemote_AlertText: String { return self._s[3270]! } + public var ChatSettings_ConnectionType_Title: String { return self._s[3273]! } public func Settings_CheckPhoneNumberTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3271]!, self._r[3271]!, [_0]) - } - public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[3272]! } - public var Passport_Address_CountryPlaceholder: String { return self._s[3273]! } - public func DialogList_AwaitingEncryption(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3274]!, self._r[3274]!, [_0]) } + public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[3275]! } + public var Passport_Address_CountryPlaceholder: String { return self._s[3276]! } + public func DialogList_AwaitingEncryption(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3277]!, self._r[3277]!, [_0]) + } public func Time_PreciseDate_m6(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3275]!, self._r[3275]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3278]!, self._r[3278]!, [_1, _2, _3]) } - public var Group_AdminLog_EmptyText: String { return self._s[3276]! } - public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[3277]! } - public var Conversation_PrivateChannelTooltip: String { return self._s[3279]! } - public var ChatList_UndoArchiveText1: String { return self._s[3280]! } - public var AccessDenied_VideoMicrophone: String { return self._s[3281]! } - public var Conversation_ContextMenuStickerPackAdd: String { return self._s[3282]! } - public var Cache_ClearNone: String { return self._s[3283]! } - public var SocksProxySetup_FailedToConnect: String { return self._s[3284]! } - public var Permissions_NotificationsTitle_v0: String { return self._s[3285]! } + public var Group_AdminLog_EmptyText: String { return self._s[3279]! } + public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[3280]! } + public var Conversation_PrivateChannelTooltip: String { return self._s[3282]! } + public var ChatList_UndoArchiveText1: String { return self._s[3283]! } + public var AccessDenied_VideoMicrophone: String { return self._s[3284]! } + public var Conversation_ContextMenuStickerPackAdd: String { return self._s[3285]! } + public var Cache_ClearNone: String { return self._s[3286]! } + public var SocksProxySetup_FailedToConnect: String { return self._s[3287]! } + public var Permissions_NotificationsTitle_v0: String { return self._s[3288]! } public func Channel_AdminLog_MessageEdited(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3286]!, self._r[3286]!, [_0]) - } - public var Passport_Identity_Country: String { return self._s[3287]! } - public func ChatSettings_AutoDownloadSettings_TypeFile(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3288]!, self._r[3288]!, [_0]) - } - public func Notification_CreatedChat(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3289]!, self._r[3289]!, [_0]) } - public var Exceptions_AddToExceptions: String { return self._s[3290]! } - public var AccessDenied_Settings: String { return self._s[3291]! } - public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[3292]! } - public var Month_ShortMay: String { return self._s[3293]! } - public var Compose_NewGroup: String { return self._s[3294]! } - public var Group_Setup_TypePrivate: String { return self._s[3296]! } - public var Login_PadPhoneHelpTitle: String { return self._s[3298]! } - public var Appearance_ThemeDayClassic: String { return self._s[3299]! } - public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[3300]! } - public var AutoDownloadSettings_OffForAll: String { return self._s[3301]! } - public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[3302]! } - public var Conversation_typing: String { return self._s[3304]! } - public var Paint_Masks: String { return self._s[3305]! } - public var Username_InvalidTaken: String { return self._s[3306]! } - public var Call_StatusNoAnswer: String { return self._s[3307]! } - public var TwoStepAuth_EmailAddSuccess: String { return self._s[3308]! } - public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[3309]! } - public var Passport_Identity_Selfie: String { return self._s[3310]! } - public var Login_InfoLastNamePlaceholder: String { return self._s[3311]! } - public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[3312]! } - public var Conversation_ClearSecretHistory: String { return self._s[3313]! } - public var PeopleNearby_Description: String { return self._s[3315]! } - public var NetworkUsageSettings_Title: String { return self._s[3316]! } - public var Your_cards_security_code_is_invalid: String { return self._s[3318]! } + public var Passport_Identity_Country: String { return self._s[3290]! } + public func ChatSettings_AutoDownloadSettings_TypeFile(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3291]!, self._r[3291]!, [_0]) + } + public func Notification_CreatedChat(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3292]!, self._r[3292]!, [_0]) + } + public var Exceptions_AddToExceptions: String { return self._s[3293]! } + public var AccessDenied_Settings: String { return self._s[3294]! } + public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[3295]! } + public var Month_ShortMay: String { return self._s[3296]! } + public var Compose_NewGroup: String { return self._s[3297]! } + public var Group_Setup_TypePrivate: String { return self._s[3299]! } + public var Login_PadPhoneHelpTitle: String { return self._s[3301]! } + public var Appearance_ThemeDayClassic: String { return self._s[3302]! } + public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[3303]! } + public var AutoDownloadSettings_OffForAll: String { return self._s[3304]! } + public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[3305]! } + public var Conversation_typing: String { return self._s[3307]! } + public var Paint_Masks: String { return self._s[3308]! } + public var Username_InvalidTaken: String { return self._s[3309]! } + public var Call_StatusNoAnswer: String { return self._s[3310]! } + public var TwoStepAuth_EmailAddSuccess: String { return self._s[3311]! } + public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[3312]! } + public var Passport_Identity_Selfie: String { return self._s[3313]! } + public var Login_InfoLastNamePlaceholder: String { return self._s[3314]! } + public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[3315]! } + public var Conversation_ClearSecretHistory: String { return self._s[3316]! } + public var PeopleNearby_Description: String { return self._s[3318]! } + public var NetworkUsageSettings_Title: String { return self._s[3319]! } + public var Your_cards_security_code_is_invalid: String { return self._s[3321]! } public func Notification_LeftChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3320]!, self._r[3320]!, [_0]) + return formatWithArgumentRanges(self._s[3323]!, self._r[3323]!, [_0]) } public func Call_CallInProgressMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3321]!, self._r[3321]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3324]!, self._r[3324]!, [_1, _2]) } - public var SaveIncomingPhotosSettings_From: String { return self._s[3323]! } - public var Map_LiveLocationTitle: String { return self._s[3324]! } - public var Login_InfoAvatarAdd: String { return self._s[3325]! } - public var Passport_Identity_FilesView: String { return self._s[3326]! } - public var UserInfo_GenericPhoneLabel: String { return self._s[3327]! } - public var Privacy_Calls_NeverAllow: String { return self._s[3328]! } + public var SaveIncomingPhotosSettings_From: String { return self._s[3326]! } + public var Map_LiveLocationTitle: String { return self._s[3327]! } + public var Login_InfoAvatarAdd: String { return self._s[3328]! } + public var Passport_Identity_FilesView: String { return self._s[3329]! } + public var UserInfo_GenericPhoneLabel: String { return self._s[3330]! } + public var Privacy_Calls_NeverAllow: String { return self._s[3331]! } public func Contacts_AddPhoneNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3329]!, self._r[3329]!, [_0]) + return formatWithArgumentRanges(self._s[3332]!, self._r[3332]!, [_0]) } - public var ContactInfo_PhoneNumberHidden: String { return self._s[3330]! } - public var TwoStepAuth_ConfirmationText: String { return self._s[3331]! } - public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[3332]! } + public var ContactInfo_PhoneNumberHidden: String { return self._s[3333]! } + public var TwoStepAuth_ConfirmationText: String { return self._s[3334]! } + public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[3335]! } public func PUSH_CHAT_MESSAGE_VIDEOS(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3333]!, self._r[3333]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3336]!, self._r[3336]!, [_1, _2, _3]) } - public var Channel_AdminLogFilter_AdminsAll: String { return self._s[3334]! } - public var Tour_Title2: String { return self._s[3335]! } - public var Conversation_FileOpenIn: String { return self._s[3336]! } - public var Checkout_ErrorPrecheckoutFailed: String { return self._s[3337]! } - public var Wallpaper_Set: String { return self._s[3338]! } - public var Passport_Identity_Translations: String { return self._s[3340]! } + public var Channel_AdminLogFilter_AdminsAll: String { return self._s[3337]! } + public var Tour_Title2: String { return self._s[3338]! } + public var Conversation_FileOpenIn: String { return self._s[3339]! } + public var Checkout_ErrorPrecheckoutFailed: String { return self._s[3340]! } + public var Wallpaper_Set: String { return self._s[3341]! } + public var Passport_Identity_Translations: String { return self._s[3343]! } public func Channel_AdminLog_MessageChangedChannelAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3341]!, self._r[3341]!, [_0]) + return formatWithArgumentRanges(self._s[3344]!, self._r[3344]!, [_0]) } - public var Channel_LeaveChannel: String { return self._s[3342]! } + public var Channel_LeaveChannel: String { return self._s[3345]! } public func PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3343]!, self._r[3343]!, [_1]) + return formatWithArgumentRanges(self._s[3346]!, self._r[3346]!, [_1]) } - public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[3344]! } - public var PhotoEditor_HighlightsTint: String { return self._s[3345]! } - public var Passport_Email_Delete: String { return self._s[3346]! } - public var Conversation_Mute: String { return self._s[3348]! } - public var Channel_AddBotAsAdmin: String { return self._s[3349]! } - public var Channel_AdminLog_CanSendMessages: String { return self._s[3351]! } - public var Channel_Management_LabelOwner: String { return self._s[3353]! } + public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[3347]! } + public var PhotoEditor_HighlightsTint: String { return self._s[3348]! } + public var Passport_Email_Delete: String { return self._s[3349]! } + public var Conversation_Mute: String { return self._s[3351]! } + public var Channel_AddBotAsAdmin: String { return self._s[3352]! } + public var Channel_AdminLog_CanSendMessages: String { return self._s[3354]! } + public var Channel_Management_LabelOwner: String { return self._s[3356]! } public func Notification_PassportValuesSentMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3354]!, self._r[3354]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3357]!, self._r[3357]!, [_1, _2]) } - public var Calls_CallTabDescription: String { return self._s[3355]! } - public var Passport_Identity_NativeNameHelp: String { return self._s[3356]! } - public var Common_No: String { return self._s[3357]! } - public var Weekday_Sunday: String { return self._s[3358]! } - public var Notification_Reply: String { return self._s[3359]! } - public var Conversation_ViewMessage: String { return self._s[3360]! } + public var Calls_CallTabDescription: String { return self._s[3358]! } + public var Passport_Identity_NativeNameHelp: String { return self._s[3359]! } + public var Common_No: String { return self._s[3360]! } + public var Weekday_Sunday: String { return self._s[3361]! } + public var Notification_Reply: String { return self._s[3362]! } + public var Conversation_ViewMessage: String { return self._s[3363]! } public func Checkout_SavePasswordTimeoutAndFaceId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3361]!, self._r[3361]!, [_0]) + return formatWithArgumentRanges(self._s[3364]!, self._r[3364]!, [_0]) } public func Map_LiveLocationPrivateDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3362]!, self._r[3362]!, [_0]) + return formatWithArgumentRanges(self._s[3365]!, self._r[3365]!, [_0]) } - public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[3363]! } - public var Message_PinnedDocumentMessage: String { return self._s[3364]! } - public var DialogList_TabTitle: String { return self._s[3366]! } - public var ChatSettings_AutoPlayTitle: String { return self._s[3367]! } - public var Passport_FieldEmail: String { return self._s[3368]! } - public var Conversation_UnpinMessageAlert: String { return self._s[3369]! } - public var Passport_Address_TypeBankStatement: String { return self._s[3370]! } - public var Passport_Identity_ExpiryDate: String { return self._s[3371]! } - public var Privacy_Calls_P2P: String { return self._s[3372]! } + public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[3366]! } + public var Message_PinnedDocumentMessage: String { return self._s[3367]! } + public var DialogList_TabTitle: String { return self._s[3369]! } + public var ChatSettings_AutoPlayTitle: String { return self._s[3370]! } + public var Passport_FieldEmail: String { return self._s[3371]! } + public var Conversation_UnpinMessageAlert: String { return self._s[3372]! } + public var Passport_Address_TypeBankStatement: String { return self._s[3373]! } + public var Passport_Identity_ExpiryDate: String { return self._s[3374]! } + public var Privacy_Calls_P2P: String { return self._s[3375]! } public func CancelResetAccount_Success(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3374]!, self._r[3374]!, [_0]) + return formatWithArgumentRanges(self._s[3377]!, self._r[3377]!, [_0]) } - public var SocksProxySetup_UseForCallsHelp: String { return self._s[3375]! } + public var SocksProxySetup_UseForCallsHelp: String { return self._s[3378]! } public func PUSH_CHAT_ALBUM(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3376]!, self._r[3376]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3379]!, self._r[3379]!, [_1, _2]) } - public var Stickers_ClearRecent: String { return self._s[3377]! } - public var EnterPasscode_ChangeTitle: String { return self._s[3378]! } - public var Passport_InfoText: String { return self._s[3379]! } - public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[3380]! } + public var Stickers_ClearRecent: String { return self._s[3380]! } + public var EnterPasscode_ChangeTitle: String { return self._s[3381]! } + public var Passport_InfoText: String { return self._s[3382]! } + public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[3383]! } public func Login_InvalidPhoneEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3381]!, self._r[3381]!, [_0]) + return formatWithArgumentRanges(self._s[3384]!, self._r[3384]!, [_0]) } public func Time_PreciseDate_m3(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3382]!, self._r[3382]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3385]!, self._r[3385]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[3383]! } - public var Passport_Identity_EditDriversLicense: String { return self._s[3384]! } - public var Conversation_TapAndHoldToRecord: String { return self._s[3386]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[3387]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[3386]! } + public var Passport_Identity_EditDriversLicense: String { return self._s[3387]! } + public var Conversation_TapAndHoldToRecord: String { return self._s[3389]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[3390]! } public func Notification_CallTimeFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3388]!, self._r[3388]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3391]!, self._r[3391]!, [_1, _2]) } - public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[3390]! } + public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[3393]! } public func Generic_OpenHiddenLinkAlert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3392]!, self._r[3392]!, [_0]) + return formatWithArgumentRanges(self._s[3395]!, self._r[3395]!, [_0]) } - public var DialogList_Unread: String { return self._s[3393]! } + public var DialogList_Unread: String { return self._s[3396]! } public func PUSH_CHAT_MESSAGE_GIF(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3394]!, self._r[3394]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3397]!, self._r[3397]!, [_1, _2]) } - public var User_DeletedAccount: String { return self._s[3395]! } - public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[3396]! } + public var User_DeletedAccount: String { return self._s[3398]! } + public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[3399]! } public func Watch_Time_ShortYesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3397]!, self._r[3397]!, [_0]) + return formatWithArgumentRanges(self._s[3400]!, self._r[3400]!, [_0]) } - public var UserInfo_NotificationsDefault: String { return self._s[3398]! } - public var SharedMedia_CategoryMedia: String { return self._s[3399]! } - public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[3400]! } - public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[3401]! } - public var Watch_ChatList_Compose: String { return self._s[3402]! } - public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[3403]! } - public var AutoDownloadSettings_Delimeter: String { return self._s[3404]! } - public var Watch_Microphone_Access: String { return self._s[3405]! } - public var Group_Setup_HistoryHeader: String { return self._s[3406]! } - public var Map_SetThisLocation: String { return self._s[3407]! } - public var Activity_UploadingPhoto: String { return self._s[3408]! } - public var Conversation_Edit: String { return self._s[3410]! } - public var Group_ErrorSendRestrictedMedia: String { return self._s[3411]! } - public var Login_TermsOfServiceDecline: String { return self._s[3412]! } - public var Message_PinnedContactMessage: String { return self._s[3413]! } + public var UserInfo_NotificationsDefault: String { return self._s[3401]! } + public var SharedMedia_CategoryMedia: String { return self._s[3402]! } + public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[3403]! } + public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[3404]! } + public var Watch_ChatList_Compose: String { return self._s[3405]! } + public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[3406]! } + public var AutoDownloadSettings_Delimeter: String { return self._s[3407]! } + public var Watch_Microphone_Access: String { return self._s[3408]! } + public var Group_Setup_HistoryHeader: String { return self._s[3409]! } + public var Map_SetThisLocation: String { return self._s[3410]! } + public var Activity_UploadingPhoto: String { return self._s[3411]! } + public var Conversation_Edit: String { return self._s[3413]! } + public var Group_ErrorSendRestrictedMedia: String { return self._s[3414]! } + public var Login_TermsOfServiceDecline: String { return self._s[3415]! } + public var Message_PinnedContactMessage: String { return self._s[3416]! } public func Channel_AdminLog_MessageRestrictedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3414]!, self._r[3414]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3417]!, self._r[3417]!, [_1, _2]) } public func Login_PhoneBannedEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3415]!, self._r[3415]!, [_1, _2, _3, _4, _5]) + return formatWithArgumentRanges(self._s[3418]!, self._r[3418]!, [_1, _2, _3, _4, _5]) } - public var Appearance_LargeEmoji: String { return self._s[3416]! } - public var TwoStepAuth_AdditionalPassword: String { return self._s[3418]! } + public var Appearance_LargeEmoji: String { return self._s[3419]! } + public var TwoStepAuth_AdditionalPassword: String { return self._s[3421]! } public func PUSH_CHAT_DELETE_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3419]!, self._r[3419]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3422]!, self._r[3422]!, [_1, _2]) } - public var Passport_Phone_EnterOtherNumber: String { return self._s[3420]! } - public var Message_PinnedPhotoMessage: String { return self._s[3421]! } - public var Passport_FieldPhone: String { return self._s[3422]! } - public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[3423]! } - public var ChatSettings_AutoPlayGifs: String { return self._s[3424]! } - public var InfoPlist_NSCameraUsageDescription: String { return self._s[3426]! } - public var Conversation_Call: String { return self._s[3427]! } - public var Common_TakePhoto: String { return self._s[3429]! } - public var Channel_NotificationLoading: String { return self._s[3430]! } + public var Passport_Phone_EnterOtherNumber: String { return self._s[3423]! } + public var Message_PinnedPhotoMessage: String { return self._s[3424]! } + public var Passport_FieldPhone: String { return self._s[3425]! } + public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[3426]! } + public var ChatSettings_AutoPlayGifs: String { return self._s[3427]! } + public var InfoPlist_NSCameraUsageDescription: String { return self._s[3429]! } + public var Conversation_Call: String { return self._s[3430]! } + public var Common_TakePhoto: String { return self._s[3432]! } + public var Channel_NotificationLoading: String { return self._s[3433]! } public func Notification_Exceptions_Sound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3431]!, self._r[3431]!, [_0]) - } - public func PUSH_CHANNEL_MESSAGE_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3432]!, self._r[3432]!, [_1]) - } - public var Permissions_SiriTitle_v0: String { return self._s[3433]! } - public func Login_ResetAccountProtected_Text(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3434]!, self._r[3434]!, [_0]) } - public var Channel_MessagePhotoRemoved: String { return self._s[3435]! } - public var Common_edit: String { return self._s[3436]! } - public var PrivacySettings_AuthSessions: String { return self._s[3437]! } - public var Month_ShortJune: String { return self._s[3438]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[3439]! } - public var Call_ReportSend: String { return self._s[3440]! } - public var Watch_LastSeen_JustNow: String { return self._s[3441]! } - public var Notifications_MessageNotifications: String { return self._s[3442]! } - public var WallpaperSearch_ColorGreen: String { return self._s[3443]! } - public var BroadcastListInfo_AddRecipient: String { return self._s[3445]! } - public var Group_Status: String { return self._s[3446]! } + public func PUSH_CHANNEL_MESSAGE_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3435]!, self._r[3435]!, [_1]) + } + public var Permissions_SiriTitle_v0: String { return self._s[3436]! } + public func Login_ResetAccountProtected_Text(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3437]!, self._r[3437]!, [_0]) + } + public var Channel_MessagePhotoRemoved: String { return self._s[3438]! } + public var Common_edit: String { return self._s[3439]! } + public var PrivacySettings_AuthSessions: String { return self._s[3440]! } + public var Month_ShortJune: String { return self._s[3441]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[3442]! } + public var Call_ReportSend: String { return self._s[3443]! } + public var Watch_LastSeen_JustNow: String { return self._s[3444]! } + public var Notifications_MessageNotifications: String { return self._s[3445]! } + public var WallpaperSearch_ColorGreen: String { return self._s[3446]! } + public var BroadcastListInfo_AddRecipient: String { return self._s[3448]! } + public var Group_Status: String { return self._s[3449]! } public func AutoNightTheme_LocationHelp(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3447]!, self._r[3447]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3450]!, self._r[3450]!, [_0, _1]) } - public var TextFormat_AddLinkTitle: String { return self._s[3448]! } - public var ShareMenu_ShareTo: String { return self._s[3449]! } - public var Conversation_Moderate_Ban: String { return self._s[3450]! } + public var TextFormat_AddLinkTitle: String { return self._s[3451]! } + public var ShareMenu_ShareTo: String { return self._s[3452]! } + public var Conversation_Moderate_Ban: String { return self._s[3453]! } public func Conversation_DeleteMessagesFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3451]!, self._r[3451]!, [_0]) + return formatWithArgumentRanges(self._s[3454]!, self._r[3454]!, [_0]) } - public var SharedMedia_ViewInChat: String { return self._s[3452]! } - public var Map_LiveLocationFor8Hours: String { return self._s[3453]! } + public var SharedMedia_ViewInChat: String { return self._s[3455]! } + public var Map_LiveLocationFor8Hours: String { return self._s[3456]! } public func PUSH_PINNED_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3454]!, self._r[3454]!, [_1]) + return formatWithArgumentRanges(self._s[3457]!, self._r[3457]!, [_1]) } public func PUSH_PINNED_POLL(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3455]!, self._r[3455]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3458]!, self._r[3458]!, [_1, _2]) } public func Map_AccurateTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3457]!, self._r[3457]!, [_0]) + return formatWithArgumentRanges(self._s[3460]!, self._r[3460]!, [_0]) } - public var Map_OpenInHereMaps: String { return self._s[3458]! } - public var Appearance_ReduceMotion: String { return self._s[3459]! } + public var Map_OpenInHereMaps: String { return self._s[3461]! } + public var Appearance_ReduceMotion: String { return self._s[3462]! } public func PUSH_MESSAGE_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3460]!, self._r[3460]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3463]!, self._r[3463]!, [_1, _2]) } - public var Channel_Setup_TypePublicHelp: String { return self._s[3461]! } - public var Passport_Identity_EditInternalPassport: String { return self._s[3462]! } - public var PhotoEditor_Skip: String { return self._s[3463]! } - public func MessageTimer_Weeks(_ value: Int32) -> String { + public var Channel_Setup_TypePublicHelp: String { return self._s[3464]! } + public var Passport_Identity_EditInternalPassport: String { return self._s[3465]! } + public var PhotoEditor_Skip: String { return self._s[3466]! } + public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, stringValue) } - public func Call_ShortMinutes(_ value: Int32) -> String { + public func Conversation_StatusMembers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, stringValue) } - public func SharedMedia_Link(_ value: Int32) -> String { + public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_StatusSubscribers(_ value: Int32) -> String { + public func AttachmentMenu_SendVideo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, stringValue) } - public func MuteFor_Days(_ value: Int32) -> String { + public func MessageTimer_ShortWeeks(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, stringValue) } - public func Media_ShareVideo(_ value: Int32) -> String { + public func ChatList_SelectedChats(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, stringValue) } - public func Map_ETAMinutes(_ value: Int32) -> String { + public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, stringValue) } + public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, _1, _2) + } public func StickerPack_AddStickerCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessagePoll_VotedCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortHours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ForwardedFiles(_ value: Int32) -> String { + public func Call_ShortMinutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func MuteExpires_Minutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Years(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_Exceptions(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedLocations(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Contacts_ImportersCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_StickerCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Months(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Days(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Map_ETAHours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortSeconds(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) - } - public func InviteText_ContactsCountText(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedGifs(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteFor_Hours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedPolls(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusMembers(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_Minutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Passport_Scans(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_AddMaskCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func ForwardedMessages(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) - } - public func QuickSend_Photos(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteExpires_Days(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Minutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_DeleteConfirmation(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_File(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func MessageTimer_ShortDays(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) - } - public func GroupInfo_ParticipantCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue) } public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) - } - public func UserCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ForwardedVideoMessages(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_ShortSeconds(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Video(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Seconds(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Invitation_Members(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LastSeen_HoursAgo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_ShareItem(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendGif(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) } public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) } - public func Call_Seconds(_ value: Int32) -> String { + public func ForwardedPolls(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedPhotos(_ value: Int32) -> String { + public func MessageTimer_Months(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedAudios(_ value: Int32) -> String { + public func Map_ETAMinutes(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func AttachmentMenu_SendItem(_ value: Int32) -> String { + public func GroupInfo_ParticipantCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSimple(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortMinutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreExtended(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_SharePhoto(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func MessageTimer_Hours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_SelectedChats(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_UserInfo_Mute(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Generic(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedContacts(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) - } - public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendVideo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortWeeks(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Photo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue) } public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, _2, _1, _3) + return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, _2, _1, _3) } - public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { + public func MuteFor_Days(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedVideos(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, stringValue) } public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, stringValue) } - public func MuteExpires_Hours(_ value: Int32) -> String { + public func ForwardedPhotos(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_File(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_StickerCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendGif(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortMinutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Link(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_DeleteConfirmation(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func Contacts_ImportersCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_ShareItem(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_ShareVideo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Hours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_Minutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) } public func ForwardedStickers(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Days(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_AddMaskCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedContacts(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Seconds(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Map_ETAHours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func ForwardedAudios(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func SharedMedia_Video(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessagePoll_VotedCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSimple(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Minutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteFor_Hours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedFiles(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) } public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_UserInfo_Mute(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedMessages(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func ForwardedVideos(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Generic(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortSeconds(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_ShortSeconds(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Days(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue) + } + public func QuickSend_Photos(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Minutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) + } + public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedGifs(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Conversation_StatusSubscribers(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Hours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue) + } + public func InviteText_ContactsCountText(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Passport_Scans(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_SharePhoto(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_Seconds(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) + } + public func UserCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Invitation_Members(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Weeks(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendItem(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) } public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, _0, _1) + return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, _0, _1) } - public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { + public func ForwardedVideoMessages(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Years(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusOnline(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreExtended(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Photo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func MessageTimer_ShortHours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func ForwardedLocations(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_Exceptions(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LastSeen_HoursAgo(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_StatusOnline(_ value: Int32) -> String { + public func MessageTimer_ShortDays(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, stringValue) diff --git a/submodules/TelegramUI/TelegramUI/AnimatedStickerUtils.swift b/submodules/TelegramUI/TelegramUI/AnimatedStickerUtils.swift index 60b52b783e..0ae8f57051 100644 --- a/submodules/TelegramUI/TelegramUI/AnimatedStickerUtils.swift +++ b/submodules/TelegramUI/TelegramUI/AnimatedStickerUtils.swift @@ -149,6 +149,8 @@ func experimentalConvertCompressedLottieToCombinedMp4(data: Data, size: CGSize, let appendStartTime = CACurrentMediaTime() + //compressRGBAToBC1(currentFrameData.assumingMemoryBound(to: UInt8.self), Int32(size.width), Int32(size.height), yuvaFrameData.assumingMemoryBound(to: UInt8.self)) + encodeRGBAToYUVA(yuvaFrameData.assumingMemoryBound(to: UInt8.self), currentFrameData.assumingMemoryBound(to: UInt8.self), Int32(size.width), Int32(size.height)) //decodeYUVAToRGBA(yuvaFrameData.assumingMemoryBound(to: UInt8.self), singleContext.bytes.assumingMemoryBound(to: UInt8.self), Int32(size.width), Int32(size.height)) diff --git a/submodules/TelegramUI/TelegramUI/ChatController.swift b/submodules/TelegramUI/TelegramUI/ChatController.swift index 6b7abb46ee..fd91ab7fc2 100644 --- a/submodules/TelegramUI/TelegramUI/ChatController.swift +++ b/submodules/TelegramUI/TelegramUI/ChatController.swift @@ -196,6 +196,8 @@ public final class ChatController: TelegramController, GalleryHiddenMediaTarget, private var historyNavigationStack = ChatHistoryNavigationStack() let canReadHistory = ValuePromise(true, ignoreRepeated: true) + private var reminderActivity: NSUserActivity? + private var isReminderActivityEnabled: Bool = false private var canReadHistoryValue = false private var canReadHistoryDisposable: Disposable? @@ -1646,13 +1648,15 @@ public final class ChatController: TelegramController, GalleryHiddenMediaTarget, } strongSelf.updateChatPresentationInterfaceState(animated: animated, interactive: false, { - return $0.updatedPeer { _ in return renderedPeer + return $0.updatedPeer { _ in + return renderedPeer }.updatedIsNotAccessible(isNotAccessible).updatedContactStatus(contactStatus).updatedHasBots(hasBots).updatedIsArchived(isArchived).updatedPeerIsMuted(peerIsMuted).updatedPeerDiscussionId(peerDiscussionId).updatedPeerGeoLocation(peerGeoLocation).updatedExplicitelyCanPinMessages(explicitelyCanPinMessages) }) if !strongSelf.didSetChatLocationInfoReady { strongSelf.didSetChatLocationInfoReady = true strongSelf._chatLocationInfoReady.set(.single(true)) } + strongSelf.updateReminderActivity() if let upgradedToPeerId = upgradedToPeerId { if let navigationController = strongSelf.navigationController as? NavigationController { var viewControllers = navigationController.viewControllers @@ -1898,6 +1902,8 @@ public final class ChatController: TelegramController, GalleryHiddenMediaTarget, if let strongSelf = self, strongSelf.canReadHistoryValue != value { strongSelf.canReadHistoryValue = value strongSelf.raiseToListen?.enabled = value + strongSelf.isReminderActivityEnabled = value + strongSelf.updateReminderActivity() } }) @@ -1963,6 +1969,7 @@ public final class ChatController: TelegramController, GalleryHiddenMediaTarget, self.context.sharedContext.mediaManager.galleryHiddenMediaManager.removeTarget(self) self.preloadHistoryPeerIdDisposable.dispose() self.reportIrrelvantGeoDisposable?.dispose() + self.reminderActivity?.invalidate() } public func updatePresentationMode(_ mode: ChatControllerPresentationMode) { @@ -6935,4 +6942,32 @@ public final class ChatController: TelegramController, GalleryHiddenMediaTarget, }) } } + + private func updateReminderActivity() { + if (self.isReminderActivityEnabled) { + if #available(iOS 9.0, *) { + if self.reminderActivity == nil, case let .peer(peerId) = self.chatLocation, let peer = self.presentationInterfaceState.renderedPeer?.chatMainPeer { + let reminderActivity = NSUserActivity(activityType: "RemindAboutChatIntent") + self.reminderActivity = reminderActivity + if peer is TelegramGroup { + reminderActivity.title = self.presentationData.strings.Activity_RemindAboutGroup(peer.displayTitle).0 + } else if let channel = peer as? TelegramChannel { + if case .broadcast = channel.info { + reminderActivity.title = self.presentationData.strings.Activity_RemindAboutChannel(peer.displayTitle).0 + } else { + reminderActivity.title = self.presentationData.strings.Activity_RemindAboutGroup(peer.displayTitle).0 + } + } else { + reminderActivity.title = self.presentationData.strings.Activity_RemindAboutUser(peer.displayTitle).0 + } + reminderActivity.userInfo = ["peerId": peerId.toInt64(), "peerTitle": peer.displayTitle] + reminderActivity.isEligibleForHandoff = true + reminderActivity.becomeCurrent() + } + } + } else if let reminderActivity = self.reminderActivity { + self.reminderActivity = nil + reminderActivity.invalidate() + } + } } diff --git a/submodules/TelegramUI/TelegramUI/Resources/PresentationStrings.mapping b/submodules/TelegramUI/TelegramUI/Resources/PresentationStrings.mapping index 43f28b412f..a017c8121f 100644 Binary files a/submodules/TelegramUI/TelegramUI/Resources/PresentationStrings.mapping and b/submodules/TelegramUI/TelegramUI/Resources/PresentationStrings.mapping differ diff --git a/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj b/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj index dafe61f683..a1c30d172d 100644 --- a/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj +++ b/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj @@ -545,6 +545,42 @@ D0AEAE272080D6970013176E /* PaneSearchBarNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AEAE262080D6970013176E /* PaneSearchBarNode.swift */; }; D0AEAE292080FD660013176E /* StickerPaneSearchGlobaltem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AEAE282080FD660013176E /* StickerPaneSearchGlobaltem.swift */; }; D0AF323A1FB1D8D60097362B /* ChatOverlayNavigationBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AF32391FB1D8D60097362B /* ChatOverlayNavigationBar.swift */; }; + D0AF796E22C2E26500CECCB8 /* astc.cc in Sources */ = {isa = PBXBuildFile; fileRef = D0AF793622C2E26500CECCB8 /* astc.cc */; }; + D0AF796F22C2E26500CECCB8 /* compress_texture.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF793822C2E26500CECCB8 /* compress_texture.h */; }; + D0AF797022C2E26500CECCB8 /* integer_sequence_encoding.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF793922C2E26500CECCB8 /* integer_sequence_encoding.h */; }; + D0AF797122C2E26500CECCB8 /* range.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF793A22C2E26500CECCB8 /* range.h */; }; + D0AF797222C2E26500CECCB8 /* misc.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF793B22C2E26500CECCB8 /* misc.h */; }; + D0AF797322C2E26500CECCB8 /* tables_data_size.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF793C22C2E26500CECCB8 /* tables_data_size.h */; }; + D0AF797422C2E26500CECCB8 /* matrix.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF793D22C2E26500CECCB8 /* matrix.h */; }; + D0AF797522C2E26500CECCB8 /* colors.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF793E22C2E26500CECCB8 /* colors.h */; }; + D0AF797622C2E26500CECCB8 /* endpoints_principal_components.cc in Sources */ = {isa = PBXBuildFile; fileRef = D0AF793F22C2E26500CECCB8 /* endpoints_principal_components.cc */; }; + D0AF797722C2E26500CECCB8 /* data_size.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794022C2E26500CECCB8 /* data_size.h */; }; + D0AF797822C2E26500CECCB8 /* meson.build in Resources */ = {isa = PBXBuildFile; fileRef = D0AF794122C2E26500CECCB8 /* meson.build */; }; + D0AF797922C2E26500CECCB8 /* endpoints_bounding_box.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794222C2E26500CECCB8 /* endpoints_bounding_box.h */; }; + D0AF797A22C2E26500CECCB8 /* tables_color_quantization.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794322C2E26500CECCB8 /* tables_color_quantization.h */; }; + D0AF797B22C2E26500CECCB8 /* tables_integer_sequence_encoding.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794422C2E26500CECCB8 /* tables_integer_sequence_encoding.h */; }; + D0AF797C22C2E26500CECCB8 /* constants.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794522C2E26500CECCB8 /* constants.h */; }; + D0AF797D22C2E26500CECCB8 /* endpoints_min_max.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794622C2E26500CECCB8 /* endpoints_min_max.h */; }; + D0AF797E22C2E26500CECCB8 /* dcheck.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794722C2E26500CECCB8 /* dcheck.h */; }; + D0AF797F22C2E26500CECCB8 /* weights_quantize_table.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794822C2E26500CECCB8 /* weights_quantize_table.h */; }; + D0AF798022C2E26500CECCB8 /* compress_block.cc in Sources */ = {isa = PBXBuildFile; fileRef = D0AF794922C2E26500CECCB8 /* compress_block.cc */; }; + D0AF798122C2E26500CECCB8 /* endpoints_principal_components.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794A22C2E26500CECCB8 /* endpoints_principal_components.h */; }; + D0AF798222C2E26500CECCB8 /* bitmanip.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794B22C2E26500CECCB8 /* bitmanip.h */; }; + D0AF798322C2E26500CECCB8 /* endpoints.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794C22C2E26500CECCB8 /* endpoints.h */; }; + D0AF798422C2E26500CECCB8 /* compress_block.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794D22C2E26500CECCB8 /* compress_block.h */; }; + D0AF798522C2E26500CECCB8 /* endpoints_encode.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794E22C2E26500CECCB8 /* endpoints_encode.h */; }; + D0AF798622C2E26500CECCB8 /* weights_quantize.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF794F22C2E26500CECCB8 /* weights_quantize.h */; }; + D0AF798722C2E26500CECCB8 /* compress_texture.cc in Sources */ = {isa = PBXBuildFile; fileRef = D0AF795022C2E26500CECCB8 /* compress_texture.cc */; }; + D0AF798822C2E26500CECCB8 /* matrix.cc in Sources */ = {isa = PBXBuildFile; fileRef = D0AF795122C2E26500CECCB8 /* matrix.cc */; }; + D0AF798922C2E26500CECCB8 /* vector.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF795222C2E26500CECCB8 /* vector.h */; }; + D0AF798A22C2E26500CECCB8 /* endpoints_quantize.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF795322C2E26500CECCB8 /* endpoints_quantize.h */; }; + D0AF798B22C2E26500CECCB8 /* store_block.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF795422C2E26500CECCB8 /* store_block.h */; }; + D0AF798C22C2E26500CECCB8 /* color.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF795622C2E26500CECCB8 /* color.h */; }; + D0AF798D22C2E26500CECCB8 /* bgra.cc in Sources */ = {isa = PBXBuildFile; fileRef = D0AF795722C2E26500CECCB8 /* bgra.cc */; }; + D0AF798E22C2E26500CECCB8 /* compressed.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF795822C2E26500CECCB8 /* compressed.h */; }; + D0AF798F22C2E26500CECCB8 /* compressed.cc in Sources */ = {isa = PBXBuildFile; fileRef = D0AF795922C2E26500CECCB8 /* compressed.cc */; }; + D0AF799022C2E26500CECCB8 /* bgra.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF795A22C2E26500CECCB8 /* bgra.h */; }; + D0AF79A322C2E36400CECCB8 /* astc.h in Headers */ = {isa = PBXBuildFile; fileRef = D0AF79A222C2E36400CECCB8 /* astc.h */; }; D0AFCC791F4C8D2C000720C6 /* InstantPageSlideshowItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AFCC781F4C8D2C000720C6 /* InstantPageSlideshowItem.swift */; }; D0AFCC7B1F4C8D39000720C6 /* InstantPageSlideshowItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AFCC7A1F4C8D39000720C6 /* InstantPageSlideshowItemNode.swift */; }; D0B21B13220D6E8C003F741D /* ActionSheetPeerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B21B12220D6E8C003F741D /* ActionSheetPeerItem.swift */; }; @@ -1950,6 +1986,42 @@ D0AEAE262080D6970013176E /* PaneSearchBarNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaneSearchBarNode.swift; sourceTree = ""; }; D0AEAE282080FD660013176E /* StickerPaneSearchGlobaltem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StickerPaneSearchGlobaltem.swift; sourceTree = ""; }; D0AF32391FB1D8D60097362B /* ChatOverlayNavigationBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatOverlayNavigationBar.swift; sourceTree = ""; }; + D0AF793622C2E26500CECCB8 /* astc.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = astc.cc; sourceTree = ""; }; + D0AF793822C2E26500CECCB8 /* compress_texture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = compress_texture.h; sourceTree = ""; }; + D0AF793922C2E26500CECCB8 /* integer_sequence_encoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = integer_sequence_encoding.h; sourceTree = ""; }; + D0AF793A22C2E26500CECCB8 /* range.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = range.h; sourceTree = ""; }; + D0AF793B22C2E26500CECCB8 /* misc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = misc.h; sourceTree = ""; }; + D0AF793C22C2E26500CECCB8 /* tables_data_size.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tables_data_size.h; sourceTree = ""; }; + D0AF793D22C2E26500CECCB8 /* matrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = matrix.h; sourceTree = ""; }; + D0AF793E22C2E26500CECCB8 /* colors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = colors.h; sourceTree = ""; }; + D0AF793F22C2E26500CECCB8 /* endpoints_principal_components.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = endpoints_principal_components.cc; sourceTree = ""; }; + D0AF794022C2E26500CECCB8 /* data_size.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = data_size.h; sourceTree = ""; }; + D0AF794122C2E26500CECCB8 /* meson.build */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = meson.build; sourceTree = ""; }; + D0AF794222C2E26500CECCB8 /* endpoints_bounding_box.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = endpoints_bounding_box.h; sourceTree = ""; }; + D0AF794322C2E26500CECCB8 /* tables_color_quantization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tables_color_quantization.h; sourceTree = ""; }; + D0AF794422C2E26500CECCB8 /* tables_integer_sequence_encoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tables_integer_sequence_encoding.h; sourceTree = ""; }; + D0AF794522C2E26500CECCB8 /* constants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = constants.h; sourceTree = ""; }; + D0AF794622C2E26500CECCB8 /* endpoints_min_max.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = endpoints_min_max.h; sourceTree = ""; }; + D0AF794722C2E26500CECCB8 /* dcheck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dcheck.h; sourceTree = ""; }; + D0AF794822C2E26500CECCB8 /* weights_quantize_table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = weights_quantize_table.h; sourceTree = ""; }; + D0AF794922C2E26500CECCB8 /* compress_block.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = compress_block.cc; sourceTree = ""; }; + D0AF794A22C2E26500CECCB8 /* endpoints_principal_components.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = endpoints_principal_components.h; sourceTree = ""; }; + D0AF794B22C2E26500CECCB8 /* bitmanip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bitmanip.h; sourceTree = ""; }; + D0AF794C22C2E26500CECCB8 /* endpoints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = endpoints.h; sourceTree = ""; }; + D0AF794D22C2E26500CECCB8 /* compress_block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = compress_block.h; sourceTree = ""; }; + D0AF794E22C2E26500CECCB8 /* endpoints_encode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = endpoints_encode.h; sourceTree = ""; }; + D0AF794F22C2E26500CECCB8 /* weights_quantize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = weights_quantize.h; sourceTree = ""; }; + D0AF795022C2E26500CECCB8 /* compress_texture.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = compress_texture.cc; sourceTree = ""; }; + D0AF795122C2E26500CECCB8 /* matrix.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = matrix.cc; sourceTree = ""; }; + D0AF795222C2E26500CECCB8 /* vector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vector.h; sourceTree = ""; }; + D0AF795322C2E26500CECCB8 /* endpoints_quantize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = endpoints_quantize.h; sourceTree = ""; }; + D0AF795422C2E26500CECCB8 /* store_block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = store_block.h; sourceTree = ""; }; + D0AF795622C2E26500CECCB8 /* color.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = color.h; sourceTree = ""; }; + D0AF795722C2E26500CECCB8 /* bgra.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bgra.cc; sourceTree = ""; }; + D0AF795822C2E26500CECCB8 /* compressed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = compressed.h; sourceTree = ""; }; + D0AF795922C2E26500CECCB8 /* compressed.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = compressed.cc; sourceTree = ""; }; + D0AF795A22C2E26500CECCB8 /* bgra.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bgra.h; sourceTree = ""; }; + D0AF79A222C2E36400CECCB8 /* astc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = astc.h; sourceTree = ""; }; D0AFCC781F4C8D2C000720C6 /* InstantPageSlideshowItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageSlideshowItem.swift; sourceTree = ""; }; D0AFCC7A1F4C8D39000720C6 /* InstantPageSlideshowItemNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageSlideshowItemNode.swift; sourceTree = ""; }; D0B21B12220D6E8C003F741D /* ActionSheetPeerItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionSheetPeerItem.swift; sourceTree = ""; }; @@ -2828,6 +2900,7 @@ D01590A922BD46690017C33E /* Animation */ = { isa = PBXGroup; children = ( + D0AF793422C2E26500CECCB8 /* astc */, D01590B622BDAEBC0017C33E /* BC1Compression.cpp */, D01590B122BDAEBB0017C33E /* BC1Compression.h */, D01590B922BDAEBC0017C33E /* BMPImage.cpp */, @@ -3688,6 +3761,74 @@ path = "Bridge Audio"; sourceTree = ""; }; + D0AF793422C2E26500CECCB8 /* astc */ = { + isa = PBXGroup; + children = ( + D0AF793522C2E26500CECCB8 /* compress */, + D0AF793722C2E26500CECCB8 /* astc */, + D0AF795522C2E26500CECCB8 /* image */, + ); + name = astc; + path = "third-party/astc"; + sourceTree = SOURCE_ROOT; + }; + D0AF793522C2E26500CECCB8 /* compress */ = { + isa = PBXGroup; + children = ( + D0AF79A222C2E36400CECCB8 /* astc.h */, + D0AF793622C2E26500CECCB8 /* astc.cc */, + ); + path = compress; + sourceTree = ""; + }; + D0AF793722C2E26500CECCB8 /* astc */ = { + isa = PBXGroup; + children = ( + D0AF793822C2E26500CECCB8 /* compress_texture.h */, + D0AF793922C2E26500CECCB8 /* integer_sequence_encoding.h */, + D0AF793A22C2E26500CECCB8 /* range.h */, + D0AF793B22C2E26500CECCB8 /* misc.h */, + D0AF793C22C2E26500CECCB8 /* tables_data_size.h */, + D0AF793D22C2E26500CECCB8 /* matrix.h */, + D0AF793E22C2E26500CECCB8 /* colors.h */, + D0AF793F22C2E26500CECCB8 /* endpoints_principal_components.cc */, + D0AF794022C2E26500CECCB8 /* data_size.h */, + D0AF794122C2E26500CECCB8 /* meson.build */, + D0AF794222C2E26500CECCB8 /* endpoints_bounding_box.h */, + D0AF794322C2E26500CECCB8 /* tables_color_quantization.h */, + D0AF794422C2E26500CECCB8 /* tables_integer_sequence_encoding.h */, + D0AF794522C2E26500CECCB8 /* constants.h */, + D0AF794622C2E26500CECCB8 /* endpoints_min_max.h */, + D0AF794722C2E26500CECCB8 /* dcheck.h */, + D0AF794822C2E26500CECCB8 /* weights_quantize_table.h */, + D0AF794922C2E26500CECCB8 /* compress_block.cc */, + D0AF794A22C2E26500CECCB8 /* endpoints_principal_components.h */, + D0AF794B22C2E26500CECCB8 /* bitmanip.h */, + D0AF794C22C2E26500CECCB8 /* endpoints.h */, + D0AF794D22C2E26500CECCB8 /* compress_block.h */, + D0AF794E22C2E26500CECCB8 /* endpoints_encode.h */, + D0AF794F22C2E26500CECCB8 /* weights_quantize.h */, + D0AF795022C2E26500CECCB8 /* compress_texture.cc */, + D0AF795122C2E26500CECCB8 /* matrix.cc */, + D0AF795222C2E26500CECCB8 /* vector.h */, + D0AF795322C2E26500CECCB8 /* endpoints_quantize.h */, + D0AF795422C2E26500CECCB8 /* store_block.h */, + ); + path = astc; + sourceTree = ""; + }; + D0AF795522C2E26500CECCB8 /* image */ = { + isa = PBXGroup; + children = ( + D0AF795622C2E26500CECCB8 /* color.h */, + D0AF795722C2E26500CECCB8 /* bgra.cc */, + D0AF795822C2E26500CECCB8 /* compressed.h */, + D0AF795922C2E26500CECCB8 /* compressed.cc */, + D0AF795A22C2E26500CECCB8 /* bgra.h */, + ); + path = image; + sourceTree = ""; + }; D0AF7C441ED84BB000CD8E0F /* Language Selection */ = { isa = PBXGroup; children = ( @@ -4909,7 +5050,9 @@ buildActionMask = 2147483647; files = ( D0E9BA221F05577700F079A4 /* STPCard.h in Headers */, + D0AF798622C2E26500CECCB8 /* weights_quantize.h in Headers */, D0E9BA591F055A2200F079A4 /* STPWeakStrongMacros.h in Headers */, + D0AF799022C2E26500CECCB8 /* bgra.h in Headers */, D0E9BADE1F0574D800F079A4 /* STPBackendAPIAdapter.h in Headers */, D0E9BAD11F0573C000F079A4 /* STPToken.h in Headers */, D01590C222BDAEBC0017C33E /* TypeDefinitions.h in Headers */, @@ -4917,8 +5060,12 @@ D0E9BAE71F0574FF00F079A4 /* STPCustomer.h in Headers */, D0208AD51FA33D14001F0D5F /* RaiseToListenActivator.h in Headers */, D00817DA22B47A14008A895F /* TGPresentationAutoNightPreferences.h in Headers */, + D0AF797D22C2E26500CECCB8 /* endpoints_min_max.h in Headers */, D0E9BAE31F0574D800F079A4 /* STPBankAccountParams.h in Headers */, + D0AF797222C2E26500CECCB8 /* misc.h in Headers */, + D0AF798222C2E26500CECCB8 /* bitmanip.h in Headers */, D0E9BA361F05585000F079A4 /* STPPhoneNumberValidator.h in Headers */, + D0AF797C22C2E26500CECCB8 /* constants.h in Headers */, D0E9BA511F0559DA00F079A4 /* STPImageLibrary.h in Headers */, D0E9BA4C1F0559C700F079A4 /* NSString+Stripe_CardBrands.h in Headers */, D00817E022B47A14008A895F /* UIImage+ImageEffects.h in Headers */, @@ -4926,6 +5073,8 @@ D0E9BAE11F0574D800F079A4 /* STPBankAccount.h in Headers */, D0E9BACE1F0573AF00F079A4 /* STPBlocks.h in Headers */, D0E9BA2A1F0557A600F079A4 /* STPFormEncoder.h in Headers */, + D0AF797422C2E26500CECCB8 /* matrix.h in Headers */, + D0AF79A322C2E36400CECCB8 /* astc.h in Headers */, D0E9BA321F05583A00F079A4 /* STPPostalCodeValidator.h in Headers */, D0E9BADC1F0574D800F079A4 /* PKPayment+Stripe.h in Headers */, D0E9BA491F0559B600F079A4 /* STPPaymentMethod.h in Headers */, @@ -4936,10 +5085,20 @@ D008177B22B46B7E008A895F /* TGContactModel.h in Headers */, D0E9BA291F0557A600F079A4 /* STPFormEncodable.h in Headers */, D0E9BA141F05574500F079A4 /* STPCardValidationState.h in Headers */, + D0AF797922C2E26500CECCB8 /* endpoints_bounding_box.h in Headers */, D00701A12029F6D0006B9E34 /* TGMimeTypeMap.h in Headers */, D0E9BA461F0559A500F079A4 /* NSDictionary+Stripe.h in Headers */, + D0AF798A22C2E26500CECCB8 /* endpoints_quantize.h in Headers */, + D0AF797322C2E26500CECCB8 /* tables_data_size.h in Headers */, + D0AF797E22C2E26500CECCB8 /* dcheck.h in Headers */, + D0AF797F22C2E26500CECCB8 /* weights_quantize_table.h in Headers */, D0208AD91FA34017001F0D5F /* DeviceProximityManager.h in Headers */, + D0AF798B22C2E26500CECCB8 /* store_block.h in Headers */, + D0AF797122C2E26500CECCB8 /* range.h in Headers */, + D0AF797722C2E26500CECCB8 /* data_size.h in Headers */, D0AE303722B1D3620058D3BC /* TGBridgeAudioEncoder.h in Headers */, + D0AF798422C2E26500CECCB8 /* compress_block.h in Headers */, + D0AF798E22C2E26500CECCB8 /* compressed.h in Headers */, D0E9BAC61F05738600F079A4 /* STPAPIClient.h in Headers */, D0E9BA531F0559DA00F079A4 /* STPImageLibrary+Private.h in Headers */, D0E9BA601F055A4300F079A4 /* STPDelegateProxy.h in Headers */, @@ -4948,26 +5107,36 @@ D0E9BACB1F05738600F079A4 /* STPAPIPostRequest.h in Headers */, D0E9BA561F055A0B00F079A4 /* STPFormTextField.h in Headers */, D01590C122BDAEBC0017C33E /* DDSImage.h in Headers */, + D0AF798122C2E26500CECCB8 /* endpoints_principal_components.h in Headers */, D008177C22B46B7E008A895F /* TGItemProviderSignals.h in Headers */, + D0AF798322C2E26500CECCB8 /* endpoints.h in Headers */, D0E9BABE1F05735F00F079A4 /* STPPaymentConfiguration+Private.h in Headers */, D01590BB22BDAEBC0017C33E /* BC1Compression.h in Headers */, D0E9BACA1F05738600F079A4 /* STPAPIClient+Private.h in Headers */, D01590BC22BDAEBC0017C33E /* BMPImage.h in Headers */, D0E9BA251F05578900F079A4 /* STPCardBrand.h in Headers */, + D0AF797522C2E26500CECCB8 /* colors.h in Headers */, D0E9BAC81F05738600F079A4 /* STPAPIClient+ApplePay.h in Headers */, D0E9BA451F0559A500F079A4 /* STPAPIResponseDecodable.h in Headers */, D0E9BA201F05577700F079A4 /* STPCardParams.h in Headers */, D0E9BA151F05574500F079A4 /* STPCardValidator.h in Headers */, + D0AF797B22C2E26500CECCB8 /* tables_integer_sequence_encoding.h in Headers */, + D0AF798C22C2E26500CECCB8 /* color.h in Headers */, D00817D722B47A14008A895F /* TGBridgeServer.h in Headers */, + D0AF796F22C2E26500CECCB8 /* compress_texture.h in Headers */, + D0AF798922C2E26500CECCB8 /* vector.h in Headers */, D00817CE22B47A14008A895F /* TGProxyItem.h in Headers */, D0E9BA401F0558FE00F079A4 /* StripeError.h in Headers */, D01590C922BE62C40017C33E /* TextureCompression.h in Headers */, D0E9BA191F05574500F079A4 /* STPPaymentCardTextField.h in Headers */, D0E9BA3F1F0558FE00F079A4 /* STPSource.h in Headers */, + D0AF797A22C2E26500CECCB8 /* tables_color_quantization.h in Headers */, D008177A22B46B7E008A895F /* TGShareLocationSignals.h in Headers */, + D0AF798522C2E26500CECCB8 /* endpoints_encode.h in Headers */, D0E9BABC1F05735F00F079A4 /* STPPaymentConfiguration.h in Headers */, D01590BF22BDAEBC0017C33E /* Image.h in Headers */, D0E9BA2E1F0557D400F079A4 /* STPAddress.h in Headers */, + D0AF797022C2E26500CECCB8 /* integer_sequence_encoding.h in Headers */, D0E9BA5C1F055A3300F079A4 /* STPBINRange.h in Headers */, D0E9BA3A1F0558E800F079A4 /* NSString+Stripe.h in Headers */, ); @@ -5130,6 +5299,7 @@ D0E9BA981F056F4C00F079A4 /* stp_card_applepay_template@3x.png in Resources */, D0E9BAA51F056F4C00F079A4 /* stp_card_form_applepay@2x.png in Resources */, D0E9BAB81F056F4C00F079A4 /* stp_card_visa_template@3x.png in Resources */, + D0AF797822C2E26500CECCB8 /* meson.build in Resources */, D0E9BA9B1F056F4C00F079A4 /* stp_card_cvc_amex@2x.png in Resources */, D0E9BAB61F056F4C00F079A4 /* stp_card_visa@3x.png in Resources */, D0E9BAA61F056F4C00F079A4 /* stp_card_form_applepay@3x.png in Resources */, @@ -5172,6 +5342,7 @@ D079FCDD1F05C4F20038FADE /* LocalAuth.swift in Sources */, 09DD5D5221ED175300D7007A /* WallpaperColorPickerNode.swift in Sources */, D0B2F76820528E3D00D3BFB9 /* UserInfoEditingPhoneActionItem.swift in Sources */, + D0AF798D22C2E26500CECCB8 /* bgra.cc in Sources */, 09F79A0321C8225600820234 /* WebSearchVideoGalleryItem.swift in Sources */, D0E9BA631F055AD200F079A4 /* BotPaymentCardInputItemNode.swift in Sources */, D01848E821A03BDA00B6DEBD /* ChatSearchState.swift in Sources */, @@ -5212,6 +5383,7 @@ D0EC6CC71EB9F58800EBF1C3 /* PeerNotificationSoundStrings.swift in Sources */, D01C06C01FBF118A001561AB /* MessageUtils.swift in Sources */, D0104F281F47171F004E4881 /* InstantPageGalleryController.swift in Sources */, + D0AF798F22C2E26500CECCB8 /* compressed.cc in Sources */, D0EC6CC81EB9F58800EBF1C3 /* ProgressiveImage.swift in Sources */, D081E108217F583F003CD921 /* LanguageLinkPreviewContentNode.swift in Sources */, D0EC6CC91EB9F58800EBF1C3 /* WebP.swift in Sources */, @@ -5552,6 +5724,7 @@ D099D7511EEFF91E00A3128C /* GameControllerTitleView.swift in Sources */, D0EC6D711EB9F58800EBF1C3 /* AuthorizationSequencePasswordEntryController.swift in Sources */, D0EC6D721EB9F58800EBF1C3 /* AuthorizationSequencePasswordEntryControllerNode.swift in Sources */, + D0AF797622C2E26500CECCB8 /* endpoints_principal_components.cc in Sources */, D0EC6D731EB9F58800EBF1C3 /* AuthorizationSequenceSignUpController.swift in Sources */, 0979787C210642CB0077D77F /* WebEmbedPlayerNode.swift in Sources */, D0C12EB01F9A8D1300600BB2 /* ListMessageDateHeader.swift in Sources */, @@ -5897,6 +6070,8 @@ D0208AD61FA33D14001F0D5F /* RaiseToListenActivator.m in Sources */, D0EC6E061EB9F58900EBF1C3 /* ChatDocumentGalleryItem.swift in Sources */, D0EC6E071EB9F58900EBF1C3 /* ChatExternalFileGalleryItem.swift in Sources */, + D0AF798022C2E26500CECCB8 /* compress_block.cc in Sources */, + D0AF798722C2E26500CECCB8 /* compress_texture.cc in Sources */, D0EC6E081EB9F58900EBF1C3 /* ChatImageGalleryItem.swift in Sources */, D048EA891F4F297500188713 /* InstantPageSettingsFontFamilyItemNode.swift in Sources */, 09DD88F321BF907C000766BC /* WebSearchRecentQueryItem.swift in Sources */, @@ -5999,12 +6174,14 @@ D0EC6E3C1EB9F58900EBF1C3 /* ItemListPeerActionItem.swift in Sources */, D0EC6E3D1EB9F58900EBF1C3 /* ItemListMultilineInputItem.swift in Sources */, D0CE8CE71F6F35A300AA2DB0 /* ChatTextInputPanelState.swift in Sources */, + D0AF796E22C2E26500CECCB8 /* astc.cc in Sources */, D0CE6F70213EEE5000BCD44B /* CreatePasswordController.swift in Sources */, D0EC6E3E1EB9F58900EBF1C3 /* ItemListSectionHeaderItem.swift in Sources */, D0EC6E3F1EB9F58900EBF1C3 /* ItemListTextItem.swift in Sources */, D0EC6E401EB9F58900EBF1C3 /* ItemListActivityTextItem.swift in Sources */, 0958FBB9218AD6AF00E0CBD8 /* InstantPageFeedbackItem.swift in Sources */, D00817D022B47A14008A895F /* WakeupManager.swift in Sources */, + D0AF798822C2E26500CECCB8 /* matrix.cc in Sources */, D0EC6E411EB9F58900EBF1C3 /* ItemListEditableItem.swift in Sources */, D0EC6E421EB9F58900EBF1C3 /* ItemListRevealOptionsNode.swift in Sources */, D0E8175920122FE100B82BBB /* ChatRecentActionsFilterController.swift in Sources */, diff --git a/submodules/TelegramUI/third-party/astc/astc/bitmanip.h b/submodules/TelegramUI/third-party/astc/astc/bitmanip.h new file mode 100644 index 0000000000..e117c39e23 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/bitmanip.h @@ -0,0 +1,168 @@ +#ifndef ASTC_BITMANIP_H_ +#define ASTC_BITMANIP_H_ + +#include +#include + +#include "dcheck.h" + +inline bool getbit(size_t number, size_t n) { + return (number >> n) & 1; +} + +inline uint8_t getbits(uint8_t number, uint8_t msb, uint8_t lsb) { + int count = msb - lsb + 1; + return static_cast((number >> lsb) & ((1 << count) - 1)); +} + +inline size_t getbits(size_t number, size_t msb, size_t lsb) { + size_t count = msb - lsb + 1; + return (number >> lsb) & (static_cast(1 << count) - 1); +} + +inline void orbits8_ptr(uint8_t* ptr, + size_t bitoffset, + size_t number, + size_t bitcount) { + DCHECK(bitcount <= 8); + DCHECK((number >> bitcount) == 0); + + size_t index = bitoffset / 8; + size_t shift = bitoffset % 8; + + // Depending on the offset we might have to consider two bytes when + // writing, for instance if we are writing 8 bits and the offset is 4, + // then we have to write 4 bits to the first byte (ptr[index]) and 4 bits + // to the second byte (ptr[index+1]). + // + // FIXME: Writing to the last byte when the number of bytes is a multiple of 2 + // will write past the allocated memory. + + uint8_t* p = ptr + index; + size_t mask = number << shift; + + DCHECK((p[0] & mask) == 0); + DCHECK((p[1] & (mask >> 8)) == 0); + + p[0] |= static_cast(mask & 0xFF); + p[1] |= static_cast((mask >> 8) & 0xFF); +} + +inline void orbits16_ptr(uint8_t* ptr, + size_t bitoffset, + size_t number, + size_t bitcount) { + DCHECK(bitcount > 8 && bitcount <= 16); + + size_t index = bitoffset / 8; + size_t shift = bitoffset % 8; + + uint8_t* p = ptr + index; + size_t mask = number << shift; + + p[0] |= static_cast(mask & 0xFF); + p[1] |= static_cast((mask >> 8) & 0xFF); + p[2] |= static_cast((mask >> 16) & 0xFF); + p[3] |= static_cast((mask >> 24) & 0xFF); +} + +inline uint16_t getbytes2(const uint8_t* ptr, size_t byteoffset) { + const uint8_t* p = ptr + byteoffset; + return static_cast((p[1] << 8) | p[0]); +} + +inline void setbytes2(uint8_t* ptr, size_t byteoffset, uint16_t bytes) { + ptr[byteoffset + 0] = static_cast(bytes & 0xFF); + ptr[byteoffset + 1] = static_cast((bytes >> 8) & 0xFF); +} + +inline void split_high_low(uint8_t n, size_t i, uint8_t& high, uint8_t& low) { + DCHECK(i < 8); + + uint8_t low_mask = static_cast((1 << i) - 1); + + low = n & low_mask; + high = static_cast(n >> i); +} + +class bitwriter { + public: + explicit bitwriter(uint8_t* ptr) : ptr_(ptr), bitoffset_(0) { + // assumption that all bits in ptr are zero after the offset + + // writing beyound the bounds of the allocated memory is undefined + // behaviour + } + + // Specialized function that can't write more than 8 bits. + void write8(uint8_t number, size_t bitcount) { + orbits8_ptr(ptr_, bitoffset_, number, bitcount); + + bitoffset_ += bitcount; + } + + size_t offset() const { return bitoffset_; } + + private: + uint8_t* ptr_; + size_t bitoffset_; // in bits +}; + +const uint8_t bit_reverse_table[256] = { + 0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0, 0x10, 0x90, 0x50, 0xD0, + 0x30, 0xB0, 0x70, 0xF0, 0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8, + 0x18, 0x98, 0x58, 0xD8, 0x38, 0xB8, 0x78, 0xF8, 0x04, 0x84, 0x44, 0xC4, + 0x24, 0xA4, 0x64, 0xE4, 0x14, 0x94, 0x54, 0xD4, 0x34, 0xB4, 0x74, 0xF4, + 0x0C, 0x8C, 0x4C, 0xCC, 0x2C, 0xAC, 0x6C, 0xEC, 0x1C, 0x9C, 0x5C, 0xDC, + 0x3C, 0xBC, 0x7C, 0xFC, 0x02, 0x82, 0x42, 0xC2, 0x22, 0xA2, 0x62, 0xE2, + 0x12, 0x92, 0x52, 0xD2, 0x32, 0xB2, 0x72, 0xF2, 0x0A, 0x8A, 0x4A, 0xCA, + 0x2A, 0xAA, 0x6A, 0xEA, 0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA, + 0x06, 0x86, 0x46, 0xC6, 0x26, 0xA6, 0x66, 0xE6, 0x16, 0x96, 0x56, 0xD6, + 0x36, 0xB6, 0x76, 0xF6, 0x0E, 0x8E, 0x4E, 0xCE, 0x2E, 0xAE, 0x6E, 0xEE, + 0x1E, 0x9E, 0x5E, 0xDE, 0x3E, 0xBE, 0x7E, 0xFE, 0x01, 0x81, 0x41, 0xC1, + 0x21, 0xA1, 0x61, 0xE1, 0x11, 0x91, 0x51, 0xD1, 0x31, 0xB1, 0x71, 0xF1, + 0x09, 0x89, 0x49, 0xC9, 0x29, 0xA9, 0x69, 0xE9, 0x19, 0x99, 0x59, 0xD9, + 0x39, 0xB9, 0x79, 0xF9, 0x05, 0x85, 0x45, 0xC5, 0x25, 0xA5, 0x65, 0xE5, + 0x15, 0x95, 0x55, 0xD5, 0x35, 0xB5, 0x75, 0xF5, 0x0D, 0x8D, 0x4D, 0xCD, + 0x2D, 0xAD, 0x6D, 0xED, 0x1D, 0x9D, 0x5D, 0xDD, 0x3D, 0xBD, 0x7D, 0xFD, + 0x03, 0x83, 0x43, 0xC3, 0x23, 0xA3, 0x63, 0xE3, 0x13, 0x93, 0x53, 0xD3, + 0x33, 0xB3, 0x73, 0xF3, 0x0B, 0x8B, 0x4B, 0xCB, 0x2B, 0xAB, 0x6B, 0xEB, + 0x1B, 0x9B, 0x5B, 0xDB, 0x3B, 0xBB, 0x7B, 0xFB, 0x07, 0x87, 0x47, 0xC7, + 0x27, 0xA7, 0x67, 0xE7, 0x17, 0x97, 0x57, 0xD7, 0x37, 0xB7, 0x77, 0xF7, + 0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF, 0x1F, 0x9F, 0x5F, 0xDF, + 0x3F, 0xBF, 0x7F, 0xFF}; + +/** + * Reverse a byte, total function. + */ +inline uint8_t reverse_byte(uint8_t number) { + return bit_reverse_table[number]; +} + +/** + * Reverse a sequence of bytes. + * + * Assumes that the bits written to (using bitwise or) are zero and that they + * will not clash with bits already written to target sequence. That is it is + * possible to write to a non-zero byte as long as the bits that are actually + * written to are zero. + */ +inline void reverse_bytes(const uint8_t* source, + size_t bytecount, + uint8_t* target) { + for (int i = 0; i < static_cast(bytecount); ++i) { + DCHECK((reverse_byte(source[i]) & target[-i]) == 0); + target[-i] = target[-i] | reverse_byte(source[i]); + } +} + +inline void copy_bytes(const uint8_t* source, + size_t bytecount, + uint8_t* target, + size_t bitoffset) { + for (size_t i = 0; i < bytecount; ++i) { + orbits8_ptr(target, bitoffset + i * 8, source[i], 8); + } +} + +#endif // ASTC_BITMANIP_H_ diff --git a/submodules/TelegramUI/third-party/astc/astc/colors.h b/submodules/TelegramUI/third-party/astc/astc/colors.h new file mode 100644 index 0000000000..8ec2e3c095 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/colors.h @@ -0,0 +1,132 @@ +#ifndef ASTC_COLORS_H_ +#define ASTC_COLORS_H_ + +#include +#include + +#include "misc.h" +#include "vector.h" + +const int APPROX_COLOR_EPSILON = 50; + +union unorm8_t { + struct RgbaColorType { + uint8_t b, g, r, a; + } channels; + uint8_t components[4]; + uint32_t bits; +}; + +union unorm16_t { + struct RgbaColorType { + uint16_t b, g, r, a; + } channels; + uint16_t components[4]; + uint64_t bits; +}; + +inline bool is_greyscale(vec3i_t color) { + // integer equality is transitive + return color.r == color.g && color.g == color.b; +} + +inline int luminance(vec3i_t color) { + return (color.r + color.g + color.b) / 3; +} + +inline bool approx_equal(vec3i_t a, vec3i_t b) { + return quadrance(a - b) <= APPROX_COLOR_EPSILON; +} + +inline vec3i_t clamp_rgb(vec3i_t color) { + vec3i_t result; + result.r = clamp(0, 255, color.r); + result.g = clamp(0, 255, color.g); + result.b = clamp(0, 255, color.b); + return result; +} + +inline vec3f_t clamp_rgb(vec3f_t color) { + vec3f_t result; + result.r = clamp(0.0f, 255.0f, color.r); + result.g = clamp(0.0f, 255.0f, color.g); + result.b = clamp(0.0f, 255.0f, color.b); + return result; +} + +inline bool is_rgb(float color) { + return color >= 0.0f && color <= 255.0f; +} + +inline bool is_rgb(vec3f_t color) { + return is_rgb(color.r) && is_rgb(color.g) && is_rgb(color.b); +} + +inline vec3i_t floor(vec3f_t color) { + vec3i_t result; + result.r = static_cast(floor(color.r)); + result.g = static_cast(floor(color.g)); + result.b = static_cast(floor(color.b)); + return result; +} + +inline vec3i_t round(vec3f_t color) { + vec3i_t result; + result.r = static_cast(round(color.r)); + result.g = static_cast(round(color.g)); + result.b = static_cast(round(color.b)); + return result; +} + +inline vec3i_t to_vec3i(unorm8_t color) { + vec3i_t result; + result.r = color.channels.r; + result.g = color.channels.g; + result.b = color.channels.b; + return result; +} + +inline vec3i_t to_vec3i(vec3f_t color) { + vec3i_t result; + result.r = static_cast(color.r); + result.g = static_cast(color.g); + result.b = static_cast(color.b); + return result; +} + +inline vec3f_t to_vec3f(unorm8_t color) { + vec3f_t result; + result.r = color.channels.r; + result.g = color.channels.g; + result.b = color.channels.b; + return result; +} + +inline vec3f_t to_vec3f(vec3i_t color) { + vec3f_t result; + result.r = static_cast(color.r); + result.g = static_cast(color.g); + result.b = static_cast(color.b); + return result; +} + +inline unorm8_t to_unorm8(vec3i_t color) { + unorm8_t result; + result.channels.r = static_cast(color.r); + result.channels.g = static_cast(color.g); + result.channels.b = static_cast(color.b); + result.channels.a = 255; + return result; +} + +inline unorm16_t unorm8_to_unorm16(unorm8_t c8) { + // (x / 255) * (2^16-1) = x * 65535 / 255 = x * 257 + unorm16_t result; + result.channels.r = static_cast(c8.channels.r * 257); + result.channels.g = static_cast(c8.channels.g * 257); + result.channels.b = static_cast(c8.channels.b * 257); + result.channels.a = static_cast(c8.channels.a * 257); + return result; +} + +#endif // ASTC_COLORS_H_ diff --git a/submodules/TelegramUI/third-party/astc/astc/compress_block.cc b/submodules/TelegramUI/third-party/astc/astc/compress_block.cc new file mode 100644 index 0000000000..5bf89e883d --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/compress_block.cc @@ -0,0 +1,155 @@ +#include "compress_block.h" + +#include +#include +#include + +#include "colors.h" +#include "constants.h" +#include "data_size.h" +#include "endpoints.h" +#include "endpoints_encode.h" +#include "endpoints_min_max.h" +#include "endpoints_principal_components.h" +#include "integer_sequence_encoding.h" +#include "misc.h" +#include "range.h" +#include "store_block.h" +#include "vector.h" +#include "weights_quantize.h" + +/** + * Write void extent block bits for LDR mode and unused extent coordinates. + */ +void encode_void_extent(vec3i_t color, PhysicalBlock* physical_block) { + void_extent_to_physical(unorm8_to_unorm16(to_unorm8(color)), physical_block); +} + +void encode_luminance(const uint8_t texels[BLOCK_TEXEL_COUNT], + PhysicalBlock* physical_block) { + size_t partition_count = 1; + size_t partition_index = 0; + + color_endpoint_mode_t color_endpoint_mode = CEM_LDR_LUMINANCE_DIRECT; + range_t weight_quant = RANGE_32; + range_t endpoint_quant = + endpoint_quantization(partition_count, weight_quant, color_endpoint_mode); + + uint8_t l0 = 255; + uint8_t l1 = 0; + for (size_t i = 0; i < BLOCK_TEXEL_COUNT; ++i) { + l0 = std::min(l0, texels[i]); + l1 = std::max(l1, texels[i]); + } + + uint8_t endpoint_unquantized[2]; + uint8_t endpoint_quantized[2]; + encode_luminance_direct(endpoint_quant, l0, l1, endpoint_quantized, + endpoint_unquantized); + + uint8_t weights_quantized[BLOCK_TEXEL_COUNT]; + calculate_quantized_weights_luminance( + texels, weight_quant, endpoint_unquantized[0], endpoint_unquantized[1], + weights_quantized); + + uint8_t endpoint_ise[MAXIMUM_ENCODED_COLOR_ENDPOINT_BYTES] = {0}; + integer_sequence_encode(endpoint_quantized, 2, RANGE_256, endpoint_ise); + + uint8_t weights_ise[MAXIMUM_ENCODED_WEIGHT_BYTES + 1] = {0}; + integer_sequence_encode(weights_quantized, BLOCK_TEXEL_COUNT, RANGE_32, + weights_ise); + + symbolic_to_physical(color_endpoint_mode, endpoint_quant, weight_quant, + partition_count, partition_index, endpoint_ise, + weights_ise, physical_block); +} + +void encode_rgb_single_partition(const unorm8_t texels[BLOCK_TEXEL_COUNT], + vec3f_t e0, + vec3f_t e1, + PhysicalBlock* physical_block) { + size_t partition_index = 0; + size_t partition_count = 1; + + color_endpoint_mode_t color_endpoint_mode = CEM_LDR_RGB_DIRECT; + range_t weight_quant = RANGE_12; + range_t endpoint_quant = + endpoint_quantization(partition_count, weight_quant, color_endpoint_mode); + + vec3i_t endpoint_unquantized[2]; + uint8_t endpoint_quantized[6]; + encode_rgb_direct(endpoint_quant, round(e0), round(e1), endpoint_quantized, + endpoint_unquantized); + + uint8_t weights_quantized[BLOCK_TEXEL_COUNT]; + calculate_quantized_weights_rgb(texels, weight_quant, endpoint_unquantized[0], + endpoint_unquantized[1], weights_quantized); + + uint8_t endpoint_ise[MAXIMUM_ENCODED_COLOR_ENDPOINT_BYTES] = {0}; + integer_sequence_encode(endpoint_quantized, 6, endpoint_quant, endpoint_ise); + + uint8_t weights_ise[MAXIMUM_ENCODED_WEIGHT_BYTES + 1] = {0}; + integer_sequence_encode(weights_quantized, BLOCK_TEXEL_COUNT, weight_quant, + weights_ise); + + symbolic_to_physical(color_endpoint_mode, endpoint_quant, weight_quant, + partition_count, partition_index, endpoint_ise, + weights_ise, physical_block); +} + +bool is_solid(const unorm8_t texels[BLOCK_TEXEL_COUNT], + size_t count, + unorm8_t* color) { + for (size_t i = 0; i < count; ++i) { + if (!approx_equal(to_vec3i(texels[i]), to_vec3i(texels[0]))) { + return false; + } + } + + // TODO: Calculate average color? + *color = texels[0]; + return true; +} + +bool is_greyscale(const unorm8_t texels[BLOCK_TEXEL_COUNT], + size_t count, + uint8_t luminances[BLOCK_TEXEL_COUNT]) { + for (size_t i = 0; i < count; ++i) { + vec3i_t color = to_vec3i(texels[i]); + luminances[i] = static_cast(luminance(color)); + vec3i_t lum(luminances[i], luminances[i], luminances[i]); + if (!approx_equal(color, lum)) { + return false; + } + } + + return true; +} + +void compress_block(const unorm8_t texels[BLOCK_TEXEL_COUNT], + PhysicalBlock* physical_block) { + { + unorm8_t color; + if (is_solid(texels, BLOCK_TEXEL_COUNT, &color)) { + encode_void_extent(to_vec3i(color), physical_block); + /* encode_void_extent(vec3i_t(0, 0, 0), physical_block); */ + return; + } + } + + { + uint8_t luminances[BLOCK_TEXEL_COUNT]; + if (is_greyscale(texels, BLOCK_TEXEL_COUNT, luminances)) { + encode_luminance(luminances, physical_block); + /* encode_void_extent(vec3i_t(255, 0, 0), physical_block); */ + return; + } + } + + vec3f_t k, m; + principal_component_analysis_block(texels, k, m); + vec3f_t e0, e1; + find_min_max_block(texels, k, m, e0, e1); + encode_rgb_single_partition(texels, e0, e1, physical_block); + /* encode_void_extent(vec3i_t(0, 255, 0), physical_block); */ +} diff --git a/submodules/TelegramUI/third-party/astc/astc/compress_block.h b/submodules/TelegramUI/third-party/astc/astc/compress_block.h new file mode 100644 index 0000000000..955c312840 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/compress_block.h @@ -0,0 +1,12 @@ +#ifndef ASTC_COMPRESS_BLOCK_H_ +#define ASTC_COMPRESS_BLOCK_H_ + +#include "constants.h" + +union unorm8_t; +struct PhysicalBlock; + +void compress_block(const unorm8_t texels[BLOCK_TEXEL_COUNT], + PhysicalBlock* physical_block); + +#endif // ASTC_COMPRESS_BLOCK_H_ diff --git a/submodules/TelegramUI/third-party/astc/astc/compress_texture.cc b/submodules/TelegramUI/third-party/astc/astc/compress_texture.cc new file mode 100644 index 0000000000..df89e8eff9 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/compress_texture.cc @@ -0,0 +1,68 @@ +#include + +#include "colors.h" +#include "compress_block.h" +#include "compress_texture.h" +#include "constants.h" +#include "store_block.h" + +namespace { +void fetch_image_block(const unorm8_t* source, + size_t image_width, + size_t xpos, + size_t ypos, + unorm8_t texels[BLOCK_TEXEL_COUNT]) { + size_t topleft_index = ypos * image_width + xpos; + + const unorm8_t* row0 = source + topleft_index; + const unorm8_t* row1 = row0 + image_width; + const unorm8_t* row2 = row0 + 2 * image_width; + const unorm8_t* row3 = row0 + 3 * image_width; + + texels[0] = row0[0]; + texels[1] = row0[1]; + texels[2] = row0[2]; + texels[3] = row0[3]; + + texels[4] = row1[0]; + texels[5] = row1[1]; + texels[6] = row1[2]; + texels[7] = row1[3]; + + texels[8] = row2[0]; + texels[9] = row2[1]; + texels[10] = row2[2]; + texels[11] = row2[3]; + + texels[12] = row3[0]; + texels[13] = row3[1]; + texels[14] = row3[2]; + texels[15] = row3[3]; +} + +PhysicalBlock physical_block_zero = {0}; +} // namespace + +void compress_texture(const uint8_t* src, + uint8_t* dst, + int width_int, + int height_int) { + const unorm8_t* data = reinterpret_cast(src); + + size_t width = static_cast(width_int); + size_t height = static_cast(height_int); + + PhysicalBlock* dst_re = reinterpret_cast(dst); + + for (size_t ypos = 0; ypos < height; ypos += BLOCK_WIDTH) { + for (size_t xpos = 0; xpos < width; xpos += BLOCK_HEIGHT) { + unorm8_t texels[BLOCK_TEXEL_COUNT]; + fetch_image_block(data, width, xpos, ypos, texels); + + *dst_re = physical_block_zero; + compress_block(texels, dst_re); + + ++dst_re; + } + } +} diff --git a/submodules/TelegramUI/third-party/astc/astc/compress_texture.h b/submodules/TelegramUI/third-party/astc/astc/compress_texture.h new file mode 100644 index 0000000000..fe6f0b9398 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/compress_texture.h @@ -0,0 +1,16 @@ +#ifndef ASTC_COMPRESS_TEXTURE_H_ +#define ASTC_COMPRESS_TEXTURE_H_ + +#include + +/** + * Compress an texture with the ASTC format. + * + * @param src The source data, width*height*4 bytes with BGRA ordering. + * @param dst The output, width*height bytes. + * @param width The width of the input texture. + * @param height The height of the input texture. + */ +void compress_texture(const uint8_t* src, uint8_t* dst, int width, int height); + +#endif // ASTC_COMPRESS_TEXTURE_H_ diff --git a/submodules/TelegramUI/third-party/astc/astc/constants.h b/submodules/TelegramUI/third-party/astc/astc/constants.h new file mode 100644 index 0000000000..9e3a73cd21 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/constants.h @@ -0,0 +1,18 @@ +#ifndef ASTC_CONSTANTS_H_ +#define ASTC_CONSTANTS_H_ + +#include + +const size_t BLOCK_WIDTH = 4; +const size_t BLOCK_HEIGHT = 4; +const size_t BLOCK_TEXEL_COUNT = BLOCK_WIDTH * BLOCK_HEIGHT; +const size_t BLOCK_BYTES = 16; + +const size_t MAXIMUM_ENCODED_WEIGHT_BITS = 96; +const size_t MAXIMUM_ENCODED_WEIGHT_BYTES = 12; + +const size_t MAXIMUM_ENCODED_COLOR_ENDPOINT_BYTES = 12; + +const size_t MAX_ENDPOINT_VALUE_COUNT = 18; + +#endif // ASTC_CONSTANTS_H_ diff --git a/submodules/TelegramUI/third-party/astc/astc/data_size.h b/submodules/TelegramUI/third-party/astc/astc/data_size.h new file mode 100644 index 0000000000..d99ce9b016 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/data_size.h @@ -0,0 +1,21 @@ +#ifndef ASTC_DATA_SIZE_H_ +#define ASTC_DATA_SIZE_H_ + +#include +#include + +#include "dcheck.h" +#include "endpoints.h" +#include "range.h" +#include "tables_data_size.h" + +range_t endpoint_quantization(size_t partitions, + range_t weight_quant, + color_endpoint_mode_t endpoint_mode) { + int8_t ce_range = + color_endpoint_range_table[partitions - 1][weight_quant][endpoint_mode]; + DCHECK(ce_range >= 0 && ce_range <= RANGE_MAX); + return static_cast(ce_range); +} + +#endif // ASTC_DATA_SIZE_H_ diff --git a/submodules/TelegramUI/third-party/astc/astc/dcheck.h b/submodules/TelegramUI/third-party/astc/astc/dcheck.h new file mode 100644 index 0000000000..164bab32b6 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/dcheck.h @@ -0,0 +1,7 @@ +#ifndef ASTC_DCHECK_H_ +#define ASTC_DCHECK_H_ + +#include +#define DCHECK(x) assert(x) + +#endif // ASTC_DCHECK_H_ diff --git a/submodules/TelegramUI/third-party/astc/astc/endpoints.h b/submodules/TelegramUI/third-party/astc/astc/endpoints.h new file mode 100644 index 0000000000..5d1032b82d --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/endpoints.h @@ -0,0 +1,24 @@ +#ifndef ASTC_ENDPOINTS_H_ +#define ASTC_ENDPOINTS_H_ + +enum color_endpoint_mode_t { + CEM_LDR_LUMINANCE_DIRECT = 0, + CEM_LDR_LUMINANCE_BASE_OFFSET = 1, + CEM_HDR_LUMINANCE_LARGE_RANGE = 2, + CEM_HDR_LUMINANCE_SMALL_RANGE = 3, + CEM_LDR_LUMINANCE_ALPHA_DIRECT = 4, + CEM_LDR_LUMINANCE_ALPHA_BASE_OFFSET = 5, + CEM_LDR_RGB_BASE_SCALE = 6, + CEM_HDR_RGB_BASE_SCALE = 7, + CEM_LDR_RGB_DIRECT = 8, + CEM_LDR_RGB_BASE_OFFSET = 9, + CEM_LDR_RGB_BASE_SCALE_PLUS_TWO_ALPHA = 10, + CEM_HDR_RGB = 11, + CEM_LDR_RGBA_DIRECT = 12, + CEM_LDR_RGBA_BASE_OFFSET = 13, + CEM_HDR_RGB_LDR_ALPHA = 14, + CEM_HDR_RGB_HDR_ALPHA = 15, + CEM_MAX = 16 +}; + +#endif // ASTC_ENDPOINTS_H_ diff --git a/submodules/TelegramUI/third-party/astc/astc/endpoints_bounding_box.h b/submodules/TelegramUI/third-party/astc/astc/endpoints_bounding_box.h new file mode 100644 index 0000000000..ae769f80d2 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/endpoints_bounding_box.h @@ -0,0 +1,32 @@ +#ifndef ASTC_ENDPOINTS_BOUNDING_BOX_H_ +#define ASTC_ENDPOINTS_BOUNDING_BOX_H_ + +#include + +#include "astc/colors.h" +#include "astc/constants.h" +#include "astc/misc.h" +#include "astc/vector.h" + +void bounding_box(const unorm8_t* texels, + size_t count, + vec3i_t& e0, + vec3i_t& e1) { + vec3i_t a(255, 255, 255); + vec3i_t b(0, 0, 0); + for (size_t i = 0; i < count; ++i) { + vec3i_t t = to_vec3i(texels[i]); + a = vecmin(a, t); + b = vecmax(b, t); + } + e0 = a; + e1 = b; +} + +void bounding_box_block(const unorm8_t texels[BLOCK_TEXEL_COUNT], + vec3i_t& e0, + vec3i_t& e1) { + bounding_box(texels, BLOCK_TEXEL_COUNT, e0, e1); +} + +#endif // ASTC_ENDPOINTS_BOUNDING_BOX_H_ diff --git a/submodules/TelegramUI/third-party/astc/astc/endpoints_encode.h b/submodules/TelegramUI/third-party/astc/astc/endpoints_encode.h new file mode 100644 index 0000000000..1a3bb9d557 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/endpoints_encode.h @@ -0,0 +1,63 @@ +#ifndef ASTC_ENDPOINTS_ENCODE_H_ +#define ASTC_ENDPOINTS_ENCODE_H_ + +#include + +#include "endpoints_quantize.h" +#include "range.h" +#include "vector.h" + +int color_channel_sum(vec3i_t color) { + return color.r + color.g + color.b; +} + +void encode_luminance_direct(range_t endpoint_quant, + int v0, + int v1, + uint8_t endpoint_unquantized[2], + uint8_t endpoint_quantized[2]) { + endpoint_quantized[0] = quantize_color(endpoint_quant, v0); + endpoint_quantized[1] = quantize_color(endpoint_quant, v1); + endpoint_unquantized[0] = + unquantize_color(endpoint_quant, endpoint_quantized[0]); + endpoint_unquantized[1] = + unquantize_color(endpoint_quant, endpoint_quantized[1]); +} + +void encode_rgb_direct(range_t endpoint_quant, + vec3i_t e0, + vec3i_t e1, + uint8_t endpoint_quantized[6], + vec3i_t endpoint_unquantized[2]) { + vec3i_t e0q = quantize_color(endpoint_quant, e0); + vec3i_t e1q = quantize_color(endpoint_quant, e1); + vec3i_t e0u = unquantize_color(endpoint_quant, e0q); + vec3i_t e1u = unquantize_color(endpoint_quant, e1q); + + // ASTC uses a different blue contraction encoding when the sum of values for + // the first endpoint is larger than the sum of values in the second + // endpoint. Sort the endpoints to ensure that the normal encoding is used. + if (color_channel_sum(e0u) > color_channel_sum(e1u)) { + endpoint_quantized[0] = static_cast(e1q.r); + endpoint_quantized[1] = static_cast(e0q.r); + endpoint_quantized[2] = static_cast(e1q.g); + endpoint_quantized[3] = static_cast(e0q.g); + endpoint_quantized[4] = static_cast(e1q.b); + endpoint_quantized[5] = static_cast(e0q.b); + + endpoint_unquantized[0] = e1u; + endpoint_unquantized[1] = e0u; + } else { + endpoint_quantized[0] = static_cast(e0q.r); + endpoint_quantized[1] = static_cast(e1q.r); + endpoint_quantized[2] = static_cast(e0q.g); + endpoint_quantized[3] = static_cast(e1q.g); + endpoint_quantized[4] = static_cast(e0q.b); + endpoint_quantized[5] = static_cast(e1q.b); + + endpoint_unquantized[0] = e0u; + endpoint_unquantized[1] = e1u; + } +} + +#endif // ASTC_ENDPOINTS_ENCODE_H_ diff --git a/submodules/TelegramUI/third-party/astc/astc/endpoints_min_max.h b/submodules/TelegramUI/third-party/astc/astc/endpoints_min_max.h new file mode 100644 index 0000000000..0614062c8f --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/endpoints_min_max.h @@ -0,0 +1,47 @@ +#ifndef ASTC_ENDPOINTS_MIN_MAX_H_ +#define ASTC_ENDPOINTS_MIN_MAX_H_ + +#include +#include + +#include "colors.h" +#include "constants.h" +#include "dcheck.h" +#include "misc.h" +#include "vector.h" + +void find_min_max(const unorm8_t texels[BLOCK_TEXEL_COUNT], + size_t count, + vec3f_t line_k, + vec3f_t line_m, + vec3f_t& e0, + vec3f_t& e1) { + DCHECK(count <= BLOCK_TEXEL_COUNT); + DCHECK(approx_equal(quadrance(line_k), 1.0, 0.0001f)); + + float a, b; + { + float t = dot(to_vec3f(texels[0]) - line_m, line_k); + a = t; + b = t; + } + + for (size_t i = 1; i < count; ++i) { + float t = dot(to_vec3f(texels[i]) - line_m, line_k); + a = std::min(a, t); + b = std::max(b, t); + } + + e0 = clamp_rgb(line_k * a + line_m); + e1 = clamp_rgb(line_k * b + line_m); +} + +void find_min_max_block(const unorm8_t texels[BLOCK_TEXEL_COUNT], + vec3f_t line_k, + vec3f_t line_m, + vec3f_t& e0, + vec3f_t& e1) { + find_min_max(texels, BLOCK_TEXEL_COUNT, line_k, line_m, e0, e1); +} + +#endif // ASTC_ENDPOINTS_MIN_MAX_H_ diff --git a/submodules/TelegramUI/third-party/astc/astc/endpoints_principal_components.cc b/submodules/TelegramUI/third-party/astc/astc/endpoints_principal_components.cc new file mode 100644 index 0000000000..9ab692b4fb --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/endpoints_principal_components.cc @@ -0,0 +1,59 @@ +#include + +#include "colors.h" +#include "constants.h" +#include "dcheck.h" +#include "endpoints_principal_components.h" +#include "matrix.h" +#include "vector.h" + +vec3f_t mean(const unorm8_t texels[BLOCK_TEXEL_COUNT], size_t count) { + vec3i_t sum(0, 0, 0); + for (size_t i = 0; i < count; ++i) { + sum = sum + to_vec3i(texels[i]); + } + + return to_vec3f(sum) / static_cast(count); +} + +void subtract(const unorm8_t texels[BLOCK_TEXEL_COUNT], + size_t count, + vec3f_t v, + vec3f_t output[BLOCK_TEXEL_COUNT]) { + for (size_t i = 0; i < count; ++i) { + output[i] = to_vec3f(texels[i]) - v; + } +} + +mat3x3f_t covariance(const vec3f_t m[BLOCK_TEXEL_COUNT], size_t count) { + mat3x3f_t cov; + for (size_t i = 0; i < 3; ++i) { + for (size_t j = 0; j < 3; ++j) { + float s = 0; + for (size_t k = 0; k < count; ++k) { + s += m[k].components[i] * m[k].components[j]; + } + cov.at(i, j) = s / static_cast(count - 1); + } + } + + return cov; +} + +void principal_component_analysis(const unorm8_t texels[BLOCK_TEXEL_COUNT], + size_t count, + vec3f_t& line_k, + vec3f_t& line_m) { + // Since we are working with fixed sized blocks count we can cap count. This + // avoids dynamic allocation. + DCHECK(count <= BLOCK_TEXEL_COUNT); + + line_m = mean(texels, count); + + vec3f_t n[BLOCK_TEXEL_COUNT]; + subtract(texels, count, line_m, n); + + mat3x3f_t w = covariance(n, count); + + eigen_vector(w, line_k); +} diff --git a/submodules/TelegramUI/third-party/astc/astc/endpoints_principal_components.h b/submodules/TelegramUI/third-party/astc/astc/endpoints_principal_components.h new file mode 100644 index 0000000000..67a64f7f86 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/endpoints_principal_components.h @@ -0,0 +1,22 @@ +#ifndef ASTC_ENDPOINTS_PRINCIPAL_COMPONENTS_H_ +#define ASTC_ENDPOINTS_PRINCIPAL_COMPONENTS_H_ + +#include + +#include "colors.h" +#include "constants.h" +#include "vector.h" + +void principal_component_analysis(const unorm8_t texels[BLOCK_TEXEL_COUNT], + size_t count, + vec3f_t& line_k, + vec3f_t& line_m); + +inline void principal_component_analysis_block( + const unorm8_t texels[BLOCK_TEXEL_COUNT], + vec3f_t& line_k, + vec3f_t& line_m) { + principal_component_analysis(texels, BLOCK_TEXEL_COUNT, line_k, line_m); +} + +#endif // ASTC_ENDPOINTS_PRINCIPAL_COMPONENTS_H_ diff --git a/submodules/TelegramUI/third-party/astc/astc/endpoints_quantize.h b/submodules/TelegramUI/third-party/astc/astc/endpoints_quantize.h new file mode 100644 index 0000000000..9dd12c128a --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/endpoints_quantize.h @@ -0,0 +1,37 @@ +#ifndef ASTC_ENDPOINTS_QUANTIZE_H_ +#define ASTC_ENDPOINTS_QUANTIZE_H_ + +#include + +#include "dcheck.h" +#include "range.h" +#include "tables_color_quantization.h" +#include "vector.h" + +uint8_t quantize_color(range_t quant, int c) { + DCHECK(c >= 0 && c <= 255); + return color_quantize_table[quant][c]; +} + +vec3i_t quantize_color(range_t quant, vec3i_t c) { + vec3i_t result; + result.r = color_quantize_table[quant][c.r]; + result.g = color_quantize_table[quant][c.g]; + result.b = color_quantize_table[quant][c.b]; + return result; +} + +uint8_t unquantize_color(range_t quant, int c) { + DCHECK(c >= 0 && c <= 255); + return color_unquantize_table[quant][c]; +} + +vec3i_t unquantize_color(range_t quant, vec3i_t c) { + vec3i_t result; + result.r = color_unquantize_table[quant][c.r]; + result.g = color_unquantize_table[quant][c.g]; + result.b = color_unquantize_table[quant][c.b]; + return result; +} + +#endif // ASTC_ENDPOINTS_QUANTIZE_H_ diff --git a/submodules/TelegramUI/third-party/astc/astc/integer_sequence_encoding.h b/submodules/TelegramUI/third-party/astc/astc/integer_sequence_encoding.h new file mode 100644 index 0000000000..4044e88b46 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/integer_sequence_encoding.h @@ -0,0 +1,212 @@ +#ifndef ASTC_INTEGER_SEQUENCE_ENCODING_H_ +#define ASTC_INTEGER_SEQUENCE_ENCODING_H_ + +#include +#include + +#include "bitmanip.h" +#include "dcheck.h" +#include "tables_integer_sequence_encoding.h" +#include "range.h" + +/** + * Table that describes the number of trits or quints along with bits required + * for storing each range. + */ +const uint8_t bits_trits_quints_table[RANGE_MAX][3] = { + {1, 0, 0}, // RANGE_2 + {0, 1, 0}, // RANGE_3 + {2, 0, 0}, // RANGE_4 + {0, 0, 1}, // RANGE_5 + {1, 1, 0}, // RANGE_6 + {3, 0, 0}, // RANGE_8 + {1, 0, 1}, // RANGE_10 + {2, 1, 0}, // RANGE_12 + {4, 0, 0}, // RANGE_16 + {2, 0, 1}, // RANGE_20 + {3, 1, 0}, // RANGE_24 + {5, 0, 0}, // RANGE_32 + {3, 0, 1}, // RANGE_40 + {4, 1, 0}, // RANGE_48 + {6, 0, 0}, // RANGE_64 + {4, 0, 1}, // RANGE_80 + {5, 1, 0}, // RANGE_96 + {7, 0, 0}, // RANGE_128 + {5, 0, 1}, // RANGE_160 + {6, 1, 0}, // RANGE_192 + {8, 0, 0} // RANGE_256 +}; + +/** + * Encode a group of 5 numbers using trits and bits. + */ +inline void encode_trits(size_t bits, + uint8_t b0, + uint8_t b1, + uint8_t b2, + uint8_t b3, + uint8_t b4, + bitwriter& writer) { + uint8_t t0, t1, t2, t3, t4; + uint8_t m0, m1, m2, m3, m4; + + split_high_low(b0, bits, t0, m0); + split_high_low(b1, bits, t1, m1); + split_high_low(b2, bits, t2, m2); + split_high_low(b3, bits, t3, m3); + split_high_low(b4, bits, t4, m4); + + DCHECK(t0 < 3); + DCHECK(t1 < 3); + DCHECK(t2 < 3); + DCHECK(t3 < 3); + DCHECK(t4 < 3); + + uint8_t packed = integer_from_trits[t4][t3][t2][t1][t0]; + + writer.write8(m0, bits); + writer.write8(getbits(packed, 1, 0), 2); + writer.write8(m1, bits); + writer.write8(getbits(packed, 3, 2), 2); + writer.write8(m2, bits); + writer.write8(getbits(packed, 4, 4), 1); + writer.write8(m3, bits); + writer.write8(getbits(packed, 6, 5), 2); + writer.write8(m4, bits); + writer.write8(getbits(packed, 7, 7), 1); +} + +/** + * Encode a group of 3 numbers using quints and bits. + */ +inline void encode_quints(size_t bits, + uint8_t b0, + uint8_t b1, + uint8_t b2, + bitwriter& writer) { + uint8_t q0, q1, q2; + uint8_t m0, m1, m2; + + split_high_low(b0, bits, q0, m0); + split_high_low(b1, bits, q1, m1); + split_high_low(b2, bits, q2, m2); + + DCHECK(q0 < 5); + DCHECK(q1 < 5); + DCHECK(q2 < 5); + + uint8_t packed = integer_from_quints[q2][q1][q0]; + + writer.write8(m0, bits); + writer.write8(getbits(packed, 2, 0), 3); + writer.write8(m1, bits); + writer.write8(getbits(packed, 4, 3), 2); + writer.write8(m2, bits); + writer.write8(getbits(packed, 6, 5), 2); +} + +/** + * Encode a sequence of numbers using using one trit and a custom number of + * bits per number. + */ +inline void encode_trits(const uint8_t* numbers, + size_t count, + bitwriter& writer, + size_t bits) { + for (size_t i = 0; i < count; i += 5) { + uint8_t b0 = numbers[i + 0]; + uint8_t b1 = i + 1 >= count ? 0 : numbers[i + 1]; + uint8_t b2 = i + 2 >= count ? 0 : numbers[i + 2]; + uint8_t b3 = i + 3 >= count ? 0 : numbers[i + 3]; + uint8_t b4 = i + 4 >= count ? 0 : numbers[i + 4]; + + encode_trits(bits, b0, b1, b2, b3, b4, writer); + } +} + +/** + * Encode a sequence of numbers using one quint and the custom number of bits + * per number. + */ +inline void encode_quints(const uint8_t* numbers, + size_t count, + bitwriter& writer, + size_t bits) { + for (size_t i = 0; i < count; i += 3) { + uint8_t b0 = numbers[i + 0]; + uint8_t b1 = i + 1 >= count ? 0 : numbers[i + 1]; + uint8_t b2 = i + 2 >= count ? 0 : numbers[i + 2]; + encode_quints(bits, b0, b1, b2, writer); + } +} + +/** + * Encode a sequence of numbers using binary representation with the selected + * bit count. + */ +inline void encode_binary(const uint8_t* numbers, + size_t count, + bitwriter& writer, + size_t bits) { + DCHECK(count > 0); + for (size_t i = 0; i < count; ++i) { + writer.write8(numbers[i], bits); + } +} + +/** + * Encode a sequence of numbers in a specific range using the binary integer + * sequence encoding. The numbers are assumed to be in the correct range and + * the memory we are writing to is assumed to be zero-initialized. + */ +inline void integer_sequence_encode(const uint8_t* numbers, + size_t count, + range_t range, + bitwriter writer) { +#ifndef NDEBUG + for (size_t i = 0; i < count; ++i) { + DCHECK(numbers[i] <= range_max_table[range]); + } +#endif + + size_t bits = bits_trits_quints_table[range][0]; + size_t trits = bits_trits_quints_table[range][1]; + size_t quints = bits_trits_quints_table[range][2]; + + if (trits == 1) { + encode_trits(numbers, count, writer, bits); + } else if (quints == 1) { + encode_quints(numbers, count, writer, bits); + } else { + encode_binary(numbers, count, writer, bits); + } +} + +inline void integer_sequence_encode(const uint8_t* numbers, + size_t count, + range_t range, + uint8_t* output) { + integer_sequence_encode(numbers, count, range, bitwriter(output)); +} + +/** + * Compute the number of bits required to store a number of items in a specific + * range using the binary integer sequence encoding. + */ +inline size_t compute_ise_bitcount(size_t items, range_t range) { + size_t bits = bits_trits_quints_table[range][0]; + size_t trits = bits_trits_quints_table[range][1]; + size_t quints = bits_trits_quints_table[range][2]; + + if (trits) { + return ((8 + 5 * bits) * items + 4) / 5; + } + + if (quints) { + return ((7 + 3 * bits) * items + 2) / 3; + } + + return items * bits; +} + +#endif // ASTC_INTEGER_SEQUENCE_ENCODING_H_ diff --git a/submodules/TelegramUI/third-party/astc/astc/matrix.cc b/submodules/TelegramUI/third-party/astc/astc/matrix.cc new file mode 100644 index 0000000000..996066e246 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/matrix.cc @@ -0,0 +1,10 @@ +#include "matrix.h" + +void eigen_vector(const mat3x3f_t& a, vec3f_t& eig) { + vec3f_t b = signorm(vec3f_t(1, 5, 2)); // FIXME: Magic number + for (size_t i = 0; i < 8; ++i) { + b = signorm(a * b); + } + + eig = b; +} diff --git a/submodules/TelegramUI/third-party/astc/astc/matrix.h b/submodules/TelegramUI/third-party/astc/astc/matrix.h new file mode 100644 index 0000000000..761de6e8d0 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/matrix.h @@ -0,0 +1,45 @@ +#ifndef ASTC_MATRIX_H_ +#define ASTC_MATRIX_H_ + +#include + +#include "vector.h" + +struct mat3x3f_t { + public: + mat3x3f_t() {} + + mat3x3f_t(float m00, + float m01, + float m02, + float m10, + float m11, + float m12, + float m20, + float m21, + float m22) { + m[0] = vec3f_t(m00, m01, m02); + m[1] = vec3f_t(m10, m11, m12); + m[2] = vec3f_t(m20, m21, m22); + } + + const vec3f_t& row(size_t i) const { return m[i]; } + + float& at(size_t i, size_t j) { return m[i].components[j]; } + const float& at(size_t i, size_t j) const { return m[i].components[j]; } + + private: + vec3f_t m[3]; +}; + +inline vec3f_t operator*(const mat3x3f_t& a, vec3f_t b) { + vec3f_t tmp; + tmp.x = dot(a.row(0), b); + tmp.y = dot(a.row(1), b); + tmp.z = dot(a.row(2), b); + return tmp; +} + +void eigen_vector(const mat3x3f_t& a, vec3f_t& eig); + +#endif // ASTC_MATRIX_H_ diff --git a/submodules/TelegramUI/third-party/astc/astc/meson.build b/submodules/TelegramUI/third-party/astc/astc/meson.build new file mode 100644 index 0000000000..770a711cb9 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/meson.build @@ -0,0 +1,57 @@ +tables_color_quantization = custom_target( + 'gen-color-quantization', + input: [], + output: ['tables_color_quantization.h'], + command: [codegen, 'quantize', '@OUTPUT0@'] +) + +tables_data_size = custom_target( + 'gen-data-size', + input: [], + output: ['tables_data_size.h'], + command: [codegen, 'datasize', '@OUTPUT0@'] +) + +tables_integer_sequence_encoding = custom_target( + 'gen-integer_sequence_encoding-tables', + input: [], + output: ['tables_integer_sequence_encoding.h'], + command: [codegen, 'bise', '@OUTPUT0@'] +) + +astc_sources = [ + 'bitmanip.h', + 'colors.h', + 'compress_block.cc', + 'compress_block.h', + 'compress_texture.cc', + 'compress_texture.h', + 'constants.h', + 'data_size.h', + 'dcheck.h', + 'endpoints.h', + 'endpoints_bounding_box.h', + 'endpoints_encode.h', + 'endpoints_min_max.h', + 'endpoints_principal_components.cc', + 'endpoints_principal_components.h', + 'endpoints_quantize.h', + 'integer_sequence_encoding.h', + 'matrix.cc', + 'matrix.h', + 'misc.h', + 'range.h', + 'store_block.h', + 'vector.h', + 'weights_quantize.h', + 'weights_quantize_table.h', + tables_color_quantization, + tables_data_size, + tables_integer_sequence_encoding, +] + +astc = static_library( + 'astc', + sources: astc_sources, + include_directories: incdir +) diff --git a/submodules/TelegramUI/third-party/astc/astc/misc.h b/submodules/TelegramUI/third-party/astc/astc/misc.h new file mode 100644 index 0000000000..fa61b16f2a --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/misc.h @@ -0,0 +1,23 @@ +#ifndef ASTC_MISC_H_ +#define ASTC_MISC_H_ + +#include + +template +T clamp(T a, T b, T x) { + if (x < a) { + return a; + } + + if (x > b) { + return b; + } + + return x; +} + +inline bool approx_equal(float x, float y, float epsilon) { + return fabs(x - y) < epsilon; +} + +#endif // ASTC_MISC_H_ diff --git a/submodules/TelegramUI/third-party/astc/astc/range.h b/submodules/TelegramUI/third-party/astc/astc/range.h new file mode 100644 index 0000000000..34b0d57eda --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/range.h @@ -0,0 +1,42 @@ +#ifndef ASTC_RANGE_H_ +#define ASTC_RANGE_H_ + +#include + +/** + * Define normalized (starting at zero) numeric ranges that can be represented + * with 8 bits or less. + */ +enum range_t { + RANGE_2, + RANGE_3, + RANGE_4, + RANGE_5, + RANGE_6, + RANGE_8, + RANGE_10, + RANGE_12, + RANGE_16, + RANGE_20, + RANGE_24, + RANGE_32, + RANGE_40, + RANGE_48, + RANGE_64, + RANGE_80, + RANGE_96, + RANGE_128, + RANGE_160, + RANGE_192, + RANGE_256, + RANGE_MAX +}; + +/** + * Table of maximum value for each range, minimum is always zero. + */ +const uint8_t range_max_table[RANGE_MAX] = {1, 2, 3, 4, 5, 7, 9, + 11, 15, 19, 23, 31, 39, 47, + 63, 79, 95, 127, 159, 191, 255}; + +#endif // ASTC_RANGE_H_ diff --git a/submodules/TelegramUI/third-party/astc/astc/store_block.h b/submodules/TelegramUI/third-party/astc/astc/store_block.h new file mode 100644 index 0000000000..ead60d6629 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/store_block.h @@ -0,0 +1,113 @@ +#ifndef ASTC_STORE_BLOCK_H_ +#define ASTC_STORE_BLOCK_H_ + +#include +#include + +#include "bitmanip.h" +#include "colors.h" +#include "constants.h" +#include "dcheck.h" +#include "endpoints.h" +#include "integer_sequence_encoding.h" +#include "range.h" + +struct PhysicalBlock { + uint8_t data[BLOCK_BYTES]; +}; + +inline void void_extent_to_physical(unorm16_t color, PhysicalBlock* pb) { + pb->data[0] = 0xFC; + pb->data[1] = 0xFD; + pb->data[2] = 0xFF; + pb->data[3] = 0xFF; + pb->data[4] = 0xFF; + pb->data[5] = 0xFF; + pb->data[6] = 0xFF; + pb->data[7] = 0xFF; + + setbytes2(pb->data, 8, color.channels.r); + setbytes2(pb->data, 10, color.channels.g); + setbytes2(pb->data, 12, color.channels.b); + setbytes2(pb->data, 14, color.channels.a); +} + +inline void symbolic_to_physical( + color_endpoint_mode_t color_endpoint_mode, + range_t endpoint_quant, + range_t weight_quant, + + size_t partition_count, + size_t partition_index, + + const uint8_t endpoint_ise[MAXIMUM_ENCODED_COLOR_ENDPOINT_BYTES], + + // FIXME: +1 needed here because orbits_8ptr breaks when the offset reaches + // the last byte which always happens if the weight mode is RANGE_32. + const uint8_t weights_ise[MAXIMUM_ENCODED_WEIGHT_BYTES + 1], + + PhysicalBlock* pb) { + DCHECK(weight_quant <= RANGE_32); + DCHECK(endpoint_quant < RANGE_MAX); + DCHECK(color_endpoint_mode < CEM_MAX); + DCHECK(partition_count == 1 || partition_index < 1024); + DCHECK(partition_count >= 1 && partition_count <= 4); + DCHECK(compute_ise_bitcount(BLOCK_TEXEL_COUNT, weight_quant) < + MAXIMUM_ENCODED_WEIGHT_BITS); + + size_t n = BLOCK_WIDTH; + size_t m = BLOCK_HEIGHT; + + static const bool h_table[RANGE_32 + 1] = {0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1}; + + static const uint8_t r_table[RANGE_32 + 1] = {0x2, 0x3, 0x4, 0x5, 0x6, 0x7, + 0x2, 0x3, 0x4, 0x5, 0x6, 0x7}; + + bool h = h_table[weight_quant]; + size_t r = r_table[weight_quant]; + + // Use the first row of Table 11 in the ASTC specification. Beware that + // this has to be changed if another block-size is used. + size_t a = m - 2; + size_t b = n - 4; + + bool d = 0; // TODO: dual plane + + bool multi_part = partition_count > 1; + + size_t part_value = partition_count - 1; + size_t part_index = multi_part ? partition_index : 0; + + size_t cem_offset = multi_part ? 23 : 13; + size_t ced_offset = multi_part ? 29 : 17; + + size_t cem_bits = multi_part ? 6 : 4; + size_t cem = color_endpoint_mode; + cem = multi_part ? cem << 2 : cem; + + // Block mode + orbits8_ptr(pb->data, 0, getbit(r, 1), 1); + orbits8_ptr(pb->data, 1, getbit(r, 2), 1); + orbits8_ptr(pb->data, 2, 0, 1); + orbits8_ptr(pb->data, 3, 0, 1); + orbits8_ptr(pb->data, 4, getbit(r, 0), 1); + orbits8_ptr(pb->data, 5, a, 2); + orbits8_ptr(pb->data, 7, b, 2); + orbits8_ptr(pb->data, 9, h, 1); + orbits8_ptr(pb->data, 10, d, 1); + + // Partitions + orbits8_ptr(pb->data, 11, part_value, 2); + orbits16_ptr(pb->data, 13, part_index, 10); + + // CEM + orbits8_ptr(pb->data, cem_offset, cem, cem_bits); + + copy_bytes(endpoint_ise, MAXIMUM_ENCODED_COLOR_ENDPOINT_BYTES, pb->data, + ced_offset); + + reverse_bytes(weights_ise, MAXIMUM_ENCODED_WEIGHT_BYTES, pb->data + 15); +} + +#endif // ASTC_STORE_BLOCK_H_ diff --git a/submodules/TelegramUI/third-party/astc/astc/tables_color_quantization.h b/submodules/TelegramUI/third-party/astc/astc/tables_color_quantization.h new file mode 100644 index 0000000000..eebc4e97ca --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/tables_color_quantization.h @@ -0,0 +1,7 @@ +#ifndef ASTC_TABLES_COLOR_QUANTIZATION_H_ +#define ASTC_TABLES_COLOR_QUANTIZATION_H_ + +const uint8_t color_unquantize_table[21][256] = {{0,255},{0,128,255},{0,85,170,255},{0,64,128,192,255},{0,255,51,204,102,153},{0,36,73,109,146,182,219,255},{0,255,28,227,56,199,84,171,113,142},{0,255,69,186,23,232,92,163,46,209,116,139},{0,17,34,51,68,85,102,119,136,153,170,187,204,221,238,255},{0,255,67,188,13,242,80,175,27,228,94,161,40,215,107,148,54,201,121,134},{0,255,33,222,66,189,99,156,11,244,44,211,77,178,110,145,22,233,55,200,88,167,121,134},{0,8,16,24,33,41,49,57,66,74,82,90,99,107,115,123,132,140,148,156,165,173,181,189,198,206,214,222,231,239,247,255},{0,255,32,223,65,190,97,158,6,249,39,216,71,184,104,151,13,242,45,210,78,177,110,145,19,236,52,203,84,171,117,138,26,229,58,197,91,164,123,132},{0,255,16,239,32,223,48,207,65,190,81,174,97,158,113,142,5,250,21,234,38,217,54,201,70,185,86,169,103,152,119,136,11,244,27,228,43,212,59,196,76,179,92,163,108,147,124,131},{0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,65,69,73,77,81,85,89,93,97,101,105,109,113,117,121,125,130,134,138,142,146,150,154,158,162,166,170,174,178,182,186,190,195,199,203,207,211,215,219,223,227,231,235,239,243,247,251,255},{0,255,16,239,32,223,48,207,64,191,80,175,96,159,112,143,3,252,19,236,35,220,51,204,67,188,83,172,100,155,116,139,6,249,22,233,38,217,54,201,71,184,87,168,103,152,119,136,9,246,25,230,42,213,58,197,74,181,90,165,106,149,122,133,13,242,29,226,45,210,61,194,77,178,93,162,109,146,125,130},{0,255,8,247,16,239,24,231,32,223,40,215,48,207,56,199,64,191,72,183,80,175,88,167,96,159,104,151,112,143,120,135,2,253,10,245,18,237,26,229,35,220,43,212,51,204,59,196,67,188,75,180,83,172,91,164,99,156,107,148,115,140,123,132,5,250,13,242,21,234,29,226,37,218,45,210,53,202,61,194,70,185,78,177,86,169,94,161,102,153,110,145,118,137,126,129},{0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,129,131,133,135,137,139,141,143,145,147,149,151,153,155,157,159,161,163,165,167,169,171,173,175,177,179,181,183,185,187,189,191,193,195,197,199,201,203,205,207,209,211,213,215,217,219,221,223,225,227,229,231,233,235,237,239,241,243,245,247,249,251,253,255},{0,255,8,247,16,239,24,231,32,223,40,215,48,207,56,199,64,191,72,183,80,175,88,167,96,159,104,151,112,143,120,135,1,254,9,246,17,238,25,230,33,222,41,214,49,206,57,198,65,190,73,182,81,174,89,166,97,158,105,150,113,142,121,134,3,252,11,244,19,236,27,228,35,220,43,212,51,204,59,196,67,188,75,180,83,172,91,164,99,156,107,148,115,140,123,132,4,251,12,243,20,235,28,227,36,219,44,211,52,203,60,195,68,187,76,179,84,171,92,163,100,155,108,147,116,139,124,131,6,249,14,241,22,233,30,225,38,217,46,209,54,201,62,193,70,185,78,177,86,169,94,161,102,153,110,145,118,137,126,129},{0,255,4,251,8,247,12,243,16,239,20,235,24,231,28,227,32,223,36,219,40,215,44,211,48,207,52,203,56,199,60,195,64,191,68,187,72,183,76,179,80,175,84,171,88,167,92,163,96,159,100,155,104,151,108,147,112,143,116,139,120,135,124,131,1,254,5,250,9,246,13,242,17,238,21,234,25,230,29,226,33,222,37,218,41,214,45,210,49,206,53,202,57,198,61,194,65,190,69,186,73,182,77,178,81,174,85,170,89,166,93,162,97,158,101,154,105,150,109,146,113,142,117,138,121,134,125,130,2,253,6,249,10,245,14,241,18,237,22,233,26,229,30,225,34,221,38,217,42,213,46,209,50,205,54,201,58,197,62,193,66,189,70,185,74,181,78,177,82,173,86,169,90,165,94,161,98,157,102,153,106,149,110,145,114,141,118,137,122,133,126,129},{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255}}; +const uint8_t color_quantize_table[21][256] = {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},{0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,1,1,1,1,1,1,1,1,1,1},{0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15},{0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,12,12,12,12,12,12,12,12,12,12,12,12,12,12,16,16,16,16,16,16,16,16,16,16,16,16,16,2,2,2,2,2,2,2,2,2,2,2,2,2,6,6,6,6,6,6,6,6,6,6,6,6,6,6,10,10,10,10,10,10,10,10,10,10,10,10,10,14,14,14,14,14,14,14,14,14,14,14,14,14,14,18,18,18,18,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,15,15,15,15,15,15,15,15,15,15,15,15,15,15,11,11,11,11,11,11,11,11,11,11,11,11,11,7,7,7,7,7,7,7,7,7,7,7,7,7,7,3,3,3,3,3,3,3,3,3,3,3,3,3,17,17,17,17,17,17,17,17,17,17,17,17,17,13,13,13,13,13,13,13,13,13,13,13,13,13,13,9,9,9,9,9,9,9,9,9,9,9,9,9,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,1,1,1,1,1},{0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,2,2,2,2,2,2,2,2,2,2,2,10,10,10,10,10,10,10,10,10,10,10,18,18,18,18,18,18,18,18,18,18,18,4,4,4,4,4,4,4,4,4,4,4,12,12,12,12,12,12,12,12,12,12,12,20,20,20,20,20,20,20,20,20,20,20,6,6,6,6,6,6,6,6,6,6,6,14,14,14,14,14,14,14,14,14,14,14,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,15,15,15,15,15,15,15,15,15,15,15,7,7,7,7,7,7,7,7,7,7,7,21,21,21,21,21,21,21,21,21,21,21,13,13,13,13,13,13,13,13,13,13,13,5,5,5,5,5,5,5,5,5,5,5,19,19,19,19,19,19,19,19,19,19,19,11,11,11,11,11,11,11,11,11,11,11,3,3,3,3,3,3,3,3,3,3,3,17,17,17,17,17,17,17,17,17,17,17,9,9,9,9,9,9,9,9,9,9,9,1,1,1,1,1,1},{0,0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,16,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,30,30,30,30,30,30,30,30,31,31,31,31},{0,0,0,0,8,8,8,8,8,8,16,16,16,16,16,16,16,24,24,24,24,24,24,32,32,32,32,32,32,2,2,2,2,2,2,2,10,10,10,10,10,10,10,18,18,18,18,18,18,26,26,26,26,26,26,26,34,34,34,34,34,34,4,4,4,4,4,4,4,12,12,12,12,12,12,20,20,20,20,20,20,20,28,28,28,28,28,28,36,36,36,36,36,36,6,6,6,6,6,6,6,14,14,14,14,14,14,14,22,22,22,22,22,22,30,30,30,30,30,30,30,38,38,38,38,38,38,38,39,39,39,39,39,39,39,31,31,31,31,31,31,31,23,23,23,23,23,23,15,15,15,15,15,15,15,7,7,7,7,7,7,7,37,37,37,37,37,37,29,29,29,29,29,29,21,21,21,21,21,21,21,13,13,13,13,13,13,5,5,5,5,5,5,5,35,35,35,35,35,35,27,27,27,27,27,27,27,19,19,19,19,19,19,11,11,11,11,11,11,11,3,3,3,3,3,3,3,33,33,33,33,33,33,25,25,25,25,25,25,17,17,17,17,17,17,17,9,9,9,9,9,9,1,1,1,1},{0,0,0,16,16,16,16,16,16,32,32,32,32,32,2,2,2,2,2,18,18,18,18,18,18,34,34,34,34,34,4,4,4,4,4,4,20,20,20,20,20,36,36,36,36,36,6,6,6,6,6,6,22,22,22,22,22,38,38,38,38,38,8,8,8,8,8,8,24,24,24,24,24,24,40,40,40,40,40,10,10,10,10,10,26,26,26,26,26,26,42,42,42,42,42,12,12,12,12,12,12,28,28,28,28,28,44,44,44,44,44,14,14,14,14,14,14,30,30,30,30,30,46,46,46,46,46,46,47,47,47,47,47,47,31,31,31,31,31,15,15,15,15,15,15,45,45,45,45,45,29,29,29,29,29,13,13,13,13,13,13,43,43,43,43,43,27,27,27,27,27,27,11,11,11,11,11,41,41,41,41,41,25,25,25,25,25,25,9,9,9,9,9,9,39,39,39,39,39,23,23,23,23,23,7,7,7,7,7,7,37,37,37,37,37,21,21,21,21,21,5,5,5,5,5,5,35,35,35,35,35,19,19,19,19,19,19,3,3,3,3,3,33,33,33,33,33,17,17,17,17,17,17,1,1,1},{0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63},{0,0,16,16,16,32,32,32,48,48,48,48,64,64,64,2,2,2,18,18,18,34,34,34,50,50,50,50,66,66,66,4,4,4,20,20,20,36,36,36,36,52,52,52,68,68,68,6,6,6,22,22,22,38,38,38,38,54,54,54,70,70,70,8,8,8,24,24,24,24,40,40,40,56,56,56,72,72,72,10,10,10,26,26,26,26,42,42,42,58,58,58,74,74,74,12,12,12,12,28,28,28,44,44,44,60,60,60,76,76,76,14,14,14,14,30,30,30,46,46,46,62,62,62,78,78,78,78,79,79,79,79,63,63,63,47,47,47,31,31,31,15,15,15,15,77,77,77,61,61,61,45,45,45,29,29,29,13,13,13,13,75,75,75,59,59,59,43,43,43,27,27,27,27,11,11,11,73,73,73,57,57,57,41,41,41,25,25,25,25,9,9,9,71,71,71,55,55,55,39,39,39,39,23,23,23,7,7,7,69,69,69,53,53,53,37,37,37,37,21,21,21,5,5,5,67,67,67,51,51,51,51,35,35,35,19,19,19,3,3,3,65,65,65,49,49,49,49,33,33,33,17,17,17,1,1},{0,0,32,32,64,64,64,2,2,2,34,34,66,66,66,4,4,4,36,36,68,68,68,6,6,6,38,38,70,70,70,8,8,8,40,40,40,72,72,10,10,10,42,42,42,74,74,12,12,12,44,44,44,76,76,14,14,14,46,46,46,78,78,16,16,16,48,48,48,80,80,18,18,18,50,50,50,82,82,20,20,20,52,52,52,84,84,22,22,22,54,54,54,86,86,24,24,24,56,56,56,88,88,26,26,26,58,58,58,90,90,28,28,28,60,60,60,92,92,30,30,30,62,62,62,94,94,94,95,95,95,63,63,63,31,31,31,93,93,61,61,61,29,29,29,91,91,59,59,59,27,27,27,89,89,57,57,57,25,25,25,87,87,55,55,55,23,23,23,85,85,53,53,53,21,21,21,83,83,51,51,51,19,19,19,81,81,49,49,49,17,17,17,79,79,47,47,47,15,15,15,77,77,45,45,45,13,13,13,75,75,43,43,43,11,11,11,73,73,41,41,41,9,9,9,71,71,71,39,39,7,7,7,69,69,69,37,37,5,5,5,67,67,67,35,35,3,3,3,65,65,65,33,33,1,1},{0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,49,49,50,50,51,51,52,52,53,53,54,54,55,55,56,56,57,57,58,58,59,59,60,60,61,61,62,62,63,63,64,64,64,65,65,66,66,67,67,68,68,69,69,70,70,71,71,72,72,73,73,74,74,75,75,76,76,77,77,78,78,79,79,80,80,81,81,82,82,83,83,84,84,85,85,86,86,87,87,88,88,89,89,90,90,91,91,92,92,93,93,94,94,95,95,96,96,97,97,98,98,99,99,100,100,101,101,102,102,103,103,104,104,105,105,106,106,107,107,108,108,109,109,110,110,111,111,112,112,113,113,114,114,115,115,116,116,117,117,118,118,119,119,120,120,121,121,122,122,123,123,124,124,125,125,126,126,127},{0,32,32,64,96,96,128,2,2,34,34,66,98,98,130,4,4,36,36,68,100,100,132,6,6,38,38,70,102,102,134,8,8,40,40,72,104,104,136,10,10,42,42,74,106,106,138,12,12,44,44,76,108,108,140,14,14,46,46,78,110,110,142,16,16,48,48,80,112,112,144,18,18,50,50,82,114,114,146,20,20,52,52,84,116,116,148,22,22,54,54,86,118,118,150,24,24,56,56,88,120,120,152,26,26,58,58,90,122,122,154,28,28,60,60,92,124,124,156,30,30,62,62,94,126,126,158,158,159,159,127,127,95,63,63,31,31,157,125,125,93,61,61,29,29,155,123,123,91,59,59,27,27,153,121,121,89,57,57,25,25,151,119,119,87,55,55,23,23,149,117,117,85,53,53,21,21,147,115,115,83,51,51,19,19,145,113,113,81,49,49,17,17,143,111,111,79,47,47,15,15,141,109,109,77,45,45,13,13,139,107,107,75,43,43,11,11,137,105,105,73,41,41,9,9,135,103,103,71,39,39,7,7,133,101,101,69,37,37,5,5,131,99,99,67,35,35,3,3,129,97,97,65,33,33,1},{0,64,128,2,2,66,130,4,4,68,132,6,6,70,134,8,8,72,136,10,10,74,138,12,12,76,140,14,14,78,142,16,16,80,144,18,18,82,146,20,20,84,148,22,22,86,150,24,24,88,152,26,26,90,154,28,28,92,156,30,30,94,158,32,32,96,160,34,34,98,162,36,36,100,164,38,38,102,166,40,40,104,168,42,42,106,170,44,44,108,172,46,46,110,174,48,48,112,176,50,50,114,178,52,52,116,180,54,54,118,182,56,56,120,184,58,58,122,186,60,60,124,188,62,62,126,190,190,191,191,127,63,63,189,125,61,61,187,123,59,59,185,121,57,57,183,119,55,55,181,117,53,53,179,115,51,51,177,113,49,49,175,111,47,47,173,109,45,45,171,107,43,43,169,105,41,41,167,103,39,39,165,101,37,37,163,99,35,35,161,97,33,33,159,95,31,31,157,93,29,29,155,91,27,27,153,89,25,25,151,87,23,23,149,85,21,21,147,83,19,19,145,81,17,17,143,79,15,15,141,77,13,13,139,75,11,11,137,73,9,9,135,71,7,7,133,69,5,5,131,67,3,3,129,65,1},{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255}}; + +#endif diff --git a/submodules/TelegramUI/third-party/astc/astc/tables_data_size.h b/submodules/TelegramUI/third-party/astc/astc/tables_data_size.h new file mode 100644 index 0000000000..e1c4633dcc --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/tables_data_size.h @@ -0,0 +1,6 @@ +#ifndef ASTC_TABLES_DATA_SIZE_H_ +#define ASTC_TABLES_DATA_SIZE_H_ + +const int8_t color_endpoint_range_table[2][12][16] = {{{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20},{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20},{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20},{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20},{20,20,20,20,20,20,20,20,20,20,20,20,19,19,19,19},{20,20,20,20,20,20,20,20,20,20,20,20,17,17,17,17},{20,20,20,20,20,20,20,20,20,20,20,20,16,16,16,16},{20,20,20,20,20,20,20,20,19,19,19,19,13,13,13,13},{20,20,20,20,20,20,20,20,16,16,16,16,11,11,11,11},{20,20,20,20,20,20,20,20,14,14,14,14,10,10,10,10},{20,20,20,20,19,19,19,19,11,11,11,11,7,7,7,7}},{{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},{20,20,20,20,20,20,20,20,14,14,14,14,9,9,9,9},{20,20,20,20,20,20,20,20,12,12,12,12,8,8,8,8},{20,20,20,20,19,19,19,19,11,11,11,11,7,7,7,7},{20,20,20,20,17,17,17,17,10,10,10,10,6,6,6,6},{20,20,20,20,15,15,15,15,8,8,8,8,5,5,5,5},{20,20,20,20,13,13,13,13,7,7,7,7,4,4,4,4},{20,20,20,20,11,11,11,11,6,6,6,6,3,3,3,3},{20,20,20,20,9,9,9,9,4,4,4,4,2,2,2,2},{17,17,17,17,7,7,7,7,3,3,3,3,1,1,1,1},{14,14,14,14,5,5,5,5,2,2,2,2,0,0,0,0},{10,10,10,10,3,3,3,3,0,0,0,0,0,0,0,0}}}; + +#endif diff --git a/submodules/TelegramUI/third-party/astc/astc/tables_integer_sequence_encoding.h b/submodules/TelegramUI/third-party/astc/astc/tables_integer_sequence_encoding.h new file mode 100644 index 0000000000..3bdcb37b8c --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/tables_integer_sequence_encoding.h @@ -0,0 +1,7 @@ +#ifndef ASTC_TABLES_INTEGER_SEQUENCE_ENCODING_H_ +#define ASTC_TABLES_INTEGER_SEQUENCE_ENCODING_H_ + +const uint8_t integer_from_trits[3][3][3][3][3] = {{{{{0,1,2},{4,5,6},{8,9,10}},{{16,17,18},{20,21,22},{24,25,26}},{{3,7,15},{19,23,27},{12,13,14}}},{{{32,33,34},{36,37,38},{40,41,42}},{{48,49,50},{52,53,54},{56,57,58}},{{35,39,47},{51,55,59},{44,45,46}}},{{{64,65,66},{68,69,70},{72,73,74}},{{80,81,82},{84,85,86},{88,89,90}},{{67,71,79},{83,87,91},{76,77,78}}}},{{{{128,129,130},{132,133,134},{136,137,138}},{{144,145,146},{148,149,150},{152,153,154}},{{131,135,143},{147,151,155},{140,141,142}}},{{{160,161,162},{164,165,166},{168,169,170}},{{176,177,178},{180,181,182},{184,185,186}},{{163,167,175},{179,183,187},{172,173,174}}},{{{192,193,194},{196,197,198},{200,201,202}},{{208,209,210},{212,213,214},{216,217,218}},{{195,199,207},{211,215,219},{204,205,206}}}},{{{{96,97,98},{100,101,102},{104,105,106}},{{112,113,114},{116,117,118},{120,121,122}},{{99,103,111},{115,119,123},{108,109,110}}},{{{224,225,226},{228,229,230},{232,233,234}},{{240,241,242},{244,245,246},{248,249,250}},{{227,231,239},{243,247,251},{236,237,238}}},{{{28,29,30},{60,61,62},{92,93,94}},{{156,157,158},{188,189,190},{220,221,222}},{{31,63,127},{159,191,255},{252,253,254}}}}}; +const uint8_t integer_from_quints[5][5][5] = {{{0,1,2,3,4},{8,9,10,11,12},{16,17,18,19,20},{24,25,26,27,28},{5,13,21,29,6}},{{32,33,34,35,36},{40,41,42,43,44},{48,49,50,51,52},{56,57,58,59,60},{37,45,53,61,14}},{{64,65,66,67,68},{72,73,74,75,76},{80,81,82,83,84},{88,89,90,91,92},{69,77,85,93,22}},{{96,97,98,99,100},{104,105,106,107,108},{112,113,114,115,116},{120,121,122,123,124},{101,109,117,125,30}},{{102,103,70,71,38},{110,111,78,79,46},{118,119,86,87,54},{126,127,94,95,62},{39,47,55,63,31}}}; + +#endif diff --git a/submodules/TelegramUI/third-party/astc/astc/vector.h b/submodules/TelegramUI/third-party/astc/astc/vector.h new file mode 100644 index 0000000000..46700184cc --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/vector.h @@ -0,0 +1,148 @@ +#ifndef ASTC_VECTOR_H_ +#define ASTC_VECTOR_H_ + +#include +#include + +#include "dcheck.h" + +template +union vec3_t { + public: + vec3_t() {} + vec3_t(T x_, T y_, T z_) : x(x_), y(y_), z(z_) {} + + struct { + T x, y, z; + }; + struct { + T r, g, b; + }; + T components[3]; +}; + +typedef vec3_t vec3f_t; +typedef vec3_t vec3i_t; + +template +vec3_t operator+(vec3_t a, vec3_t b) { + vec3_t result; + result.x = a.x + b.x; + result.y = a.y + b.y; + result.z = a.z + b.z; + return result; +} + +template +vec3_t operator-(vec3_t a, vec3_t b) { + vec3_t result; + result.x = a.x - b.x; + result.y = a.y - b.y; + result.z = a.z - b.z; + return result; +} + +template +vec3_t operator*(vec3_t a, vec3_t b) { + vec3_t result; + result.x = a.x * b.x; + result.y = a.y * b.y; + result.z = a.z * b.z; + return result; +} + +template +vec3_t operator*(vec3_t a, T b) { + vec3_t result; + result.x = a.x * b; + result.y = a.y * b; + result.z = a.z * b; + return result; +} + +template +vec3_t operator/(vec3_t a, T b) { + vec3_t result; + result.x = a.x / b; + result.y = a.y / b; + result.z = a.z / b; + return result; +} + +template +vec3_t operator/(vec3_t a, vec3_t b) { + vec3_t result; + result.x = a.x / b.x; + result.y = a.y / b.y; + result.z = a.z / b.z; + return result; +} + +template +bool operator==(vec3_t a, vec3_t b) { + return a.x == b.x && a.y == b.y && a.z == b.z; +} + +template +bool operator!=(vec3_t a, vec3_t b) { + return a.x != b.x || a.y != b.y || a.z != b.z; +} + +template +T dot(vec3_t a, vec3_t b) { + return a.x * b.x + a.y * b.y + a.z * b.z; +} + +template +T quadrance(vec3_t a) { + return dot(a, a); +} + +template +T norm(vec3_t a) { + return static_cast(sqrt(quadrance(a))); +} + +template +T distance(vec3_t a, vec3_t b) { + return norm(a - b); +} + +template +T qd(vec3_t a, vec3_t b) { + return quadrance(a - b); +} + +template +vec3_t signorm(vec3_t a) { + T x = norm(a); + DCHECK(x != 0.0); + return a / x; +} + +template +vec3_t vecmin(vec3_t a, vec3_t b) { + vec3_t result; + result.x = std::min(a.x, b.x); + result.y = std::min(a.y, b.y); + result.z = std::min(a.z, b.z); + return result; +} + +template +vec3_t vecmax(vec3_t a, vec3_t b) { + vec3_t result; + result.x = std::max(a.x, b.x); + result.y = std::max(a.y, b.y); + result.z = std::max(a.z, b.z); + return result; +} + +template +T qd_to_line(vec3_t m, vec3_t k, T kk, vec3_t p) { + T t = dot(p - m, k) / kk; + vec3_t q = k * t + m; + return qd(p, q); +} + +#endif // ASTC_VECTOR_H_ diff --git a/submodules/TelegramUI/third-party/astc/astc/weights_quantize.h b/submodules/TelegramUI/third-party/astc/astc/weights_quantize.h new file mode 100644 index 0000000000..cb53f2978b --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/weights_quantize.h @@ -0,0 +1,88 @@ +#ifndef ASTC_WEIGHTS_QUANTIZE_H_ +#define ASTC_WEIGHTS_QUANTIZE_H_ + +#include +#include + +#include "colors.h" +#include "constants.h" +#include "dcheck.h" +#include "misc.h" +#include "range.h" +#include "vector.h" +#include "weights_quantize_table.h" + +uint8_t quantize_weight(range_t weight_quant, size_t weight) { + DCHECK(weight_quant <= RANGE_32); + DCHECK(weight <= 1024); + return weight_quantize_table[weight_quant][weight]; +} + +/** + * Project a texel to a line and quantize the result in 1 dimension. + * + * The line is defined by t=k*x + m. This function calculates and quantizes x + * by projecting n=t-m onto k, x=|n|/|k|. Since k and m is derived from the + * minimum and maximum of all texel values the result will be in the range [0, + * 1]. + * + * To quantize the result using the weight_quantize_table the value needs to + * be extended to the range [0, 1024]. + * + * @param k the derivative of the line + * @param m the minimum endpoint + * @param t the texel value + */ +size_t project(size_t k, size_t m, size_t t) { + DCHECK(k > 0); + return size_t((t - m) * 1024) / k; +} + +/** + * Project a texel to a line and quantize the result in 3 dimensions. + */ +size_t project(vec3i_t k, int kk, vec3i_t m, vec3i_t t) { + DCHECK(kk > 0); + + return static_cast(clamp(0, 1024, dot(t - m, k) * 1024 / kk)); +} + +void calculate_quantized_weights_luminance( + const uint8_t texels[BLOCK_TEXEL_COUNT], + range_t quant, + uint8_t l0, + uint8_t l1, + uint8_t weights[BLOCK_TEXEL_COUNT]) { + DCHECK(l0 < l1); + + size_t k = l1 - l0; + size_t m = l0; + + for (size_t i = 0; i < BLOCK_TEXEL_COUNT; ++i) { + size_t t = static_cast(texels[i]); + weights[i] = quantize_weight(quant, project(k, m, t)); + } +} + +void calculate_quantized_weights_rgb(const unorm8_t texels[BLOCK_TEXEL_COUNT], + range_t quant, + vec3i_t e0, + vec3i_t e1, + uint8_t weights[BLOCK_TEXEL_COUNT]) { + if (e0 == e1) { + for (size_t i = 0; i < BLOCK_TEXEL_COUNT; ++i) { + weights[i] = 0; // quantize_weight(quant, 0) is always 0 + } + } else { + vec3i_t k = e1 - e0; + vec3i_t m = e0; + + int kk = dot(k, k); + for (size_t i = 0; i < BLOCK_TEXEL_COUNT; ++i) { + weights[i] = + quantize_weight(quant, project(k, kk, m, to_vec3i(texels[i]))); + } + } +} + +#endif // ASTC_WEIGHTS_QUANTIZE_H_ diff --git a/submodules/TelegramUI/third-party/astc/astc/weights_quantize_table.h b/submodules/TelegramUI/third-party/astc/astc/weights_quantize_table.h new file mode 100644 index 0000000000..2b1bcc04ec --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/astc/weights_quantize_table.h @@ -0,0 +1,566 @@ +#ifndef ASTC_WEIGHTS_QUANTIZE_TABLE_H_ +#define ASTC_WEIGHTS_QUANTIZE_TABLE_H_ + +#include + +// FIXME: This is copied from ARM-code +const uint8_t weight_quantize_table[12][1025] = { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, + 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31}}; + +#endif // ASTC_WEIGHTS_QUANTIZE_TABLE_H_ diff --git a/submodules/TelegramUI/third-party/astc/compress/astc.cc b/submodules/TelegramUI/third-party/astc/compress/astc.cc new file mode 100644 index 0000000000..581fe5186c --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/compress/astc.cc @@ -0,0 +1,74 @@ +#include + +#include "astc.h" + +#include +#include +#include +#include +#include + +#include "compress_texture.h" +#include "constants.h" +#include "bgra.h" +#include "compressed.h" + +int64_t usecs_passed(const timeval& t1, const timeval& t2) { + return (t2.tv_sec - t1.tv_sec) * 1000000 + (t2.tv_usec - t1.tv_usec); +} + +void compress_astc(const BgraImage& image, CompressedImage* compressed) { + compress_texture(reinterpret_cast(image.buffer), compressed->buffer, static_cast(image.width), static_cast(image.height)); +} + +/*int main(int argc, const char** argv) { + if (argc < 3 || argc > 4) { + fprintf(stderr, "Usage: %s [-q | --quiet] INPUT OUTPUT\n", argv[0]); + return 1; + } + + bool quiet = false; + const char* input = nullptr; + const char* output = nullptr; + + int i = 1; + if (strcmp(argv[i], "-q") == 0 || strcmp(argv[i], "--quiet") == 0) { + quiet = true; + ++i; + } + input = argv[i]; + output = argv[i + 1]; + + try { + BgraImage image = ReadTGAFile(input); + + if (image.width % BLOCK_WIDTH != 0 || image.height % BLOCK_HEIGHT != 0) { + fprintf(stderr, + "Error: image size (%ldx%ld) not a multiple of block size " + "(%ldx%ld)\n", + image.width, image.height, BLOCK_WIDTH, BLOCK_HEIGHT); + return 1; + } + + CompressedImage compressed(image.width, image.height, BLOCK_WIDTH, + BLOCK_HEIGHT, BLOCK_BYTES); + + if (quiet) { + compress_astc(image, &compressed); + } else { + timeval t1; + gettimeofday(&t1, NULL); + compress_astc(image, &compressed); + timeval t2; + gettimeofday(&t2, NULL); + fprintf(stdout, "Time passed: %ldus\n", usecs_passed(t1, t2)); + } + + WriteASTCFile(compressed, output); + } catch (const char* err) { + fprintf(stderr, "Error: %s\n", err); + return 1; + } + + return 0; +}*/ diff --git a/submodules/TelegramUI/third-party/astc/compress/astc.h b/submodules/TelegramUI/third-party/astc/compress/astc.h new file mode 100644 index 0000000000..2f7f29fbd9 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/compress/astc.h @@ -0,0 +1,9 @@ +#ifndef astc_h +#define astc_h + +#include "bgra.h" +#include "compressed.h" + +void compress_astc(const BgraImage& image, CompressedImage* compressed); + +#endif /* astc_h */ diff --git a/submodules/TelegramUI/third-party/astc/image/bgra.cc b/submodules/TelegramUI/third-party/astc/image/bgra.cc new file mode 100644 index 0000000000..5e3099a9f8 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/image/bgra.cc @@ -0,0 +1,18 @@ +#include "bgra.h" + +#include + +struct TGAHeader { + uint8_t id_length; + uint8_t color_map_type; + uint8_t image_type; + + uint8_t first_entry_index[2]; + uint8_t color_map_length[2]; + uint8_t color_map_entry_size; + + uint8_t origin_x[2], origin_y[2]; + uint8_t width[2], height[2]; + uint8_t pixel_depth; + uint8_t image_descriptor; +}; diff --git a/submodules/TelegramUI/third-party/astc/image/bgra.h b/submodules/TelegramUI/third-party/astc/image/bgra.h new file mode 100644 index 0000000000..4a48f66e01 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/image/bgra.h @@ -0,0 +1,38 @@ +#ifndef IMAGE_BGRA_H_ +#define IMAGE_BGRA_H_ + +#include + +#include "color.h" + +class BgraImage { + public: + BgraImage(size_t width_, size_t height_, uint8_t *bytes) + : width(width_), + height(height_), + pixel_count(width_ * height_), + buffer_size(pixel_count * sizeof(bgra8_t)), + buffer((bgra8_t *)bytes) {} + + BgraImage(BgraImage&& other) + : width(other.width), + height(other.height), + buffer_size(other.buffer_size), + buffer(other.buffer) { + other.buffer = nullptr; + } + + BgraImage(const BgraImage&) = delete; + BgraImage& operator=(const BgraImage&) = delete; + + ~BgraImage() { + } + + size_t width, height; + + size_t pixel_count; + size_t buffer_size; + bgra8_t* buffer; +}; + +#endif // IMAGE_BGRA_H_ diff --git a/submodules/TelegramUI/third-party/astc/image/color.h b/submodules/TelegramUI/third-party/astc/image/color.h new file mode 100644 index 0000000000..6c5cc3199c --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/image/color.h @@ -0,0 +1,37 @@ +#ifndef IMAGE_COLOR_H_ +#define IMAGE_COLOR_H_ + +#include + +union rgba8_t { + struct type { + uint8_t r, g, b, a; + } channels; + uint32_t bits; +}; +union bgra8_t { + struct type { + uint8_t b, g, r, a; + } channels; + uint32_t bits; +}; + +inline bgra8_t swap_red_blue(rgba8_t color) { + bgra8_t output; + output.channels.r = color.channels.r; + output.channels.g = color.channels.g; + output.channels.b = color.channels.b; + output.channels.a = color.channels.a; + return output; +} + +inline rgba8_t swap_red_blue(bgra8_t color) { + rgba8_t output; + output.channels.r = color.channels.r; + output.channels.g = color.channels.g; + output.channels.b = color.channels.b; + output.channels.a = color.channels.a; + return output; +} + +#endif // IMAGE_COLOR_H_ diff --git a/submodules/TelegramUI/third-party/astc/image/compressed.cc b/submodules/TelegramUI/third-party/astc/image/compressed.cc new file mode 100644 index 0000000000..69ee8693b5 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/image/compressed.cc @@ -0,0 +1,44 @@ +#include "compressed.h" + +#include + +static int MAGIC_FILE_CONSTANT = 0x5CA1AB13; + +struct ASTCHeader { + uint8_t magic[4]; + uint8_t blockdim_x; + uint8_t blockdim_y; + uint8_t blockdim_z; + uint8_t xsize[3]; + uint8_t ysize[3]; + uint8_t zsize[3]; +}; + +void WriteASTCFile(const CompressedImage& compressed, const char* file_path) { + std::ofstream file(file_path, std::ios::binary); + if (file.fail()) { + throw "could not open file for writing"; + } + + ASTCHeader hdr; + hdr.magic[0] = static_cast(MAGIC_FILE_CONSTANT & 0xFF); + hdr.magic[1] = static_cast((MAGIC_FILE_CONSTANT >> 8) & 0xFF); + hdr.magic[2] = static_cast((MAGIC_FILE_CONSTANT >> 16) & 0xFF); + hdr.magic[3] = static_cast((MAGIC_FILE_CONSTANT >> 24) & 0xFF); + hdr.blockdim_x = static_cast(compressed.xdim); + hdr.blockdim_y = static_cast(compressed.ydim); + hdr.blockdim_z = 1; + hdr.xsize[0] = compressed.xsize & 0xFF; + hdr.xsize[1] = (compressed.xsize >> 8) & 0xFF; + hdr.xsize[2] = (compressed.xsize >> 16) & 0xFF; + hdr.ysize[0] = compressed.ysize & 0xFF; + hdr.ysize[1] = (compressed.ysize >> 8) & 0xFF; + hdr.ysize[2] = (compressed.ysize >> 16) & 0xFF; + hdr.zsize[0] = 1 & 0xFF; + hdr.zsize[1] = (1 >> 8) & 0xFF; + hdr.zsize[2] = (1 >> 16) & 0xFF; + + file.write(reinterpret_cast(&hdr), sizeof(ASTCHeader)); + file.write(reinterpret_cast(compressed.buffer), + static_cast(compressed.buffer_size)); +} diff --git a/submodules/TelegramUI/third-party/astc/image/compressed.h b/submodules/TelegramUI/third-party/astc/image/compressed.h new file mode 100644 index 0000000000..aa61f96702 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/image/compressed.h @@ -0,0 +1,61 @@ +#ifndef IMAGE_COMPRESSED_H_ +#define IMAGE_COMPRESSED_H_ + +#include +#include +#include + +class CompressedImage { + public: + CompressedImage(size_t width, + size_t height, + size_t block_width, + size_t block_height, + size_t bytes_per_block_) + : xdim(block_width), + ydim(block_height), + xsize(width), + ysize(height), + xblocks(width / xdim), + yblocks(height / ydim), + block_count(yblocks * xblocks), + bytes_per_block(bytes_per_block_), + buffer_size(block_count * bytes_per_block), + buffer(new uint8_t[buffer_size]) { + assert(width % xdim == 0); + assert(height % ydim == 0); + } + + CompressedImage(CompressedImage&& other) + : xdim(other.xdim), + ydim(other.ydim), + xsize(other.xsize), + ysize(other.ysize), + xblocks(other.xblocks), + yblocks(other.yblocks), + block_count(other.block_count), + bytes_per_block(other.bytes_per_block), + buffer_size(other.buffer_size), + buffer(other.buffer) { + other.buffer = nullptr; + } + + CompressedImage(const CompressedImage&) = delete; + CompressedImage& operator=(const CompressedImage&) = delete; + + ~CompressedImage() { delete[] buffer; } + + size_t xdim, ydim; + size_t xsize, ysize; + size_t xblocks, yblocks; + + size_t block_count; + + size_t bytes_per_block; + size_t buffer_size; + uint8_t* buffer; +}; + +void WriteASTCFile(const CompressedImage&, const char* file_path); + +#endif // IMAGE_COMPRESSED_H_ diff --git a/submodules/TelegramUI/third-party/astc/pybits/__pycache__/bise.cpython-37.pyc b/submodules/TelegramUI/third-party/astc/pybits/__pycache__/bise.cpython-37.pyc new file mode 100644 index 0000000000..0cb2864c49 Binary files /dev/null and b/submodules/TelegramUI/third-party/astc/pybits/__pycache__/bise.cpython-37.pyc differ diff --git a/submodules/TelegramUI/third-party/astc/pybits/__pycache__/bitset.cpython-37.pyc b/submodules/TelegramUI/third-party/astc/pybits/__pycache__/bitset.cpython-37.pyc new file mode 100644 index 0000000000..5fe429061d Binary files /dev/null and b/submodules/TelegramUI/third-party/astc/pybits/__pycache__/bitset.cpython-37.pyc differ diff --git a/submodules/TelegramUI/third-party/astc/pybits/__pycache__/datasize.cpython-37.pyc b/submodules/TelegramUI/third-party/astc/pybits/__pycache__/datasize.cpython-37.pyc new file mode 100644 index 0000000000..97e9e5be04 Binary files /dev/null and b/submodules/TelegramUI/third-party/astc/pybits/__pycache__/datasize.cpython-37.pyc differ diff --git a/submodules/TelegramUI/third-party/astc/pybits/__pycache__/endpointmodes.cpython-37.pyc b/submodules/TelegramUI/third-party/astc/pybits/__pycache__/endpointmodes.cpython-37.pyc new file mode 100644 index 0000000000..5e22d61247 Binary files /dev/null and b/submodules/TelegramUI/third-party/astc/pybits/__pycache__/endpointmodes.cpython-37.pyc differ diff --git a/submodules/TelegramUI/third-party/astc/pybits/__pycache__/partitions.cpython-37.pyc b/submodules/TelegramUI/third-party/astc/pybits/__pycache__/partitions.cpython-37.pyc new file mode 100644 index 0000000000..188489db4e Binary files /dev/null and b/submodules/TelegramUI/third-party/astc/pybits/__pycache__/partitions.cpython-37.pyc differ diff --git a/submodules/TelegramUI/third-party/astc/pybits/__pycache__/quantize.cpython-37.pyc b/submodules/TelegramUI/third-party/astc/pybits/__pycache__/quantize.cpython-37.pyc new file mode 100644 index 0000000000..03f32f5a75 Binary files /dev/null and b/submodules/TelegramUI/third-party/astc/pybits/__pycache__/quantize.cpython-37.pyc differ diff --git a/submodules/TelegramUI/third-party/astc/pybits/__pycache__/range.cpython-37.pyc b/submodules/TelegramUI/third-party/astc/pybits/__pycache__/range.cpython-37.pyc new file mode 100644 index 0000000000..cae04e54a2 Binary files /dev/null and b/submodules/TelegramUI/third-party/astc/pybits/__pycache__/range.cpython-37.pyc differ diff --git a/submodules/TelegramUI/third-party/astc/pybits/bise.py b/submodules/TelegramUI/third-party/astc/pybits/bise.py new file mode 100644 index 0000000000..c20237575c --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/pybits/bise.py @@ -0,0 +1,229 @@ +from bitset import bitset +from range import * +import math + +# Define the number of trits, quints and bits used for an encoded range, this +# table is indexed by N-1 where N is the number of elements in a range. +TRITS_QUINTS_BITS_TABLE = \ + [ + (0, 0, 1), # RANGE_2 + (1, 0, 0), # RANGE_3 + (0, 0, 2), # RANGE_4 + (0, 1, 0), # RANGE_5 + (1, 0, 1), # RANGE_6 + (0, 0, 3), # RANGE_8 + (0, 1, 1), # RANGE_10 + (1, 0, 2), # RANGE_12 + (0, 0, 4), # RANGE_16 + (0, 1, 2), # RANGE_20 + (1, 0, 3), # RANGE_24 + (0, 0, 5), # RANGE_32 + (0, 1, 3), # RANGE_40 + (1, 0, 4), # RANGE_48 + (0, 0, 6), # RANGE_64 + (0, 1, 4), # RANGE_80 + (1, 0, 5), # RANGE_96 + (0, 0, 7), # RANGE_128 + (0, 1, 5), # RANGE_160 + (1, 0, 6), # RANGE_192 + (0, 0, 8) # RANGE_256 + ] + +def bits_bise_bitcount(items, bits): + """ + Compute the number of bits needed for regular binary encoding. + """ + + assert items > 0 and bits > 0 + return items * bits + +def trits_bise_bitcount(items, bits): + """ + Compute the number of bits needed for trit-based encoding. + """ + + assert items > 0 and bits >= 0 + #return math.ceil((8.0 + 5.0*bits) * items / 5.0) + return math.ceil(8.0*items / 5.0 + bits*items) + +def quints_bise_bitcount(items, bits): + """ + Compute the number of bits needed for quint-based encoding. + """ + + assert items > 0 and bits >= 0 + #return math.ceil((7.0 + 3.0*bits) * items / 3.0) + return math.ceil(7.0*items / 3.0 + bits*items) + +def compute_bise_bitcount(items, quant): + """ + Compute the number of bits needed for the BISE stream. + """ + assert type(items) is int + assert type(quant) is int + assert items > 0 + assert quant >= RANGE_2 and quant <= RANGE_256 + + trits, quints, bits = TRITS_QUINTS_BITS_TABLE[quant] + + if trits == 0 and quints == 0: + return bits_bise_bitcount(items, bits) + elif trits != 0: + return trits_bise_bitcount(items, bits) + elif quints != 0: + return quints_bise_bitcount(items, bits) + else: + assert False + +def last_index(lst, a): + last = -1 + for i in range(len(lst)): + if a == lst[i]: + last = i + if last == -1: + raise ValueError("%s is not in the list" % repr(a)) + return last + +# From ASTC specification, decode the a encoded set of 5 trits. +def decode_trits(T): + assert isinstance(T, bitset) + assert T.size() == 8 + + t4 = -1 + t3 = -1 + t2 = -1 + t1 = -1 + + C = bitset(5, 0) + if T.substr(4, 2) == bitset(3, 0b111): + C.set(4, T.get(7)) + C.set(3, T.get(6)) + C.set(2, T.get(5)) + C.set(1, T.get(1)) + C.set(0, T.get(0)) + t4 = 2 + t3 = 2 + else: + C = T.substr(4, 0) + if T.substr(6, 5) == bitset(2, 0b11): + t4 = 2 + t3 = T.get(7) + else: + t4 = T.get(7) + t3 = T.substr(6, 5).number() + + if C.substr(1, 0) == bitset(2, 0b11): + t2 = 2 + t1 = C.get(4) + t0 = bitset.from_args(C.get(3), C.get(2) & (not C.get(3))).number() + elif C.substr(3, 2) == bitset(2, 0b11): + t2 = 2 + t1 = 2 + t0 = C.substr(1, 0).number() + else: + t2 = C.get(4) + t1 = C.substr(3, 2).number() + t0 = bitset.from_args(C.get(1), C.get(0) & (not C.get(1))).number() + + assert t4 >= 0 and t4 <= 2, t4 + assert t3 >= 0 and t3 <= 2, t3 + assert t2 >= 0 and t2 <= 2, t2 + assert t1 >= 0 and t1 <= 2, t1 + assert t0 >= 0 and t0 <= 2, t0 + + return (t0, t1, t2, t3, t4) + +# From ASTC specification, decode a encoded set of 3 quints. +def decode_quints(Q): + assert Q.size() == 7 + + q2 = -1 + q1 = -1 + q0 = -1 + + if Q.substr(2, 1) == bitset(2, 0b11) and Q.substr(6, 5) == bitset(2, 0b00): + q2 = bitset.from_args( + Q.get(0), Q.get(4) & (not Q.get(0)), Q.get(3) & (not Q.get(0))).number() + q1 = 4 + q0 = 4 + else: + C = None + if Q.substr(2, 1) == bitset(2, 0b11): + q2 = 4 + C = bitset.from_args( + Q.get(4), + Q.get(3), + not Q.get(6), + not Q.get(5), + Q.get(0)) + else: + q2 = Q.substr(6, 5).number() + C = Q.substr(4, 0) + + if C.substr(2, 0) == bitset(3, 0b101): + q1 = 4 + q0 = C.substr(4, 3).number() + else: + q1 = C.substr(4, 3).number() + q0 = C.substr(2, 0).number() + + assert q2 >= 0 and q2 <= 4, q2 + assert q1 >= 0 and q1 <= 4, q1 + assert q0 >= 0 and q0 <= 4, q0 + + return (q0, q1, q2) + +# Generate table for trit decoding for all possible 8 bit numbers, [0, 255]. +def trits_from_integer_table(): + return [decode_trits(bitset(8, i)) for i in range(256)] + +# Generate table for trit decoding by brute force searching the encoding table. +# Exhaustive search solution works because the search space is small. +def integer_from_trits_table(trits): + return \ + [ + [ + [ + [ + [ + last_index(trits, (t0, t1, t2, t3, t4)) + for t0 in range(3) + ] + for t1 in range(3) + ] + for t2 in range(3) + ] + for t3 in range(3) + ] + for t4 in range(3) + ] + +# Generate table for quint encoding for all possible 7 bit numbers, [0, 127]. +def quints_from_integer_table(): + return [decode_quints(bitset(7, i)) for i in range(128)] + +# Generate table for quint decoding by brute force searching the encoding +# table. Exhaustive search solution works because the search space is small. +def integer_from_quints_table(quints): + return \ + [ + [ + [ + last_index(quints, (q0, q1, q2)) + for q0 in range(5) + ] + for q1 in range(5) + ] + for q2 in range(5) + ] + +if __name__ == "__main__": + trits_from_integer = trits_from_integer_table() + integer_from_trits = integer_from_trits_table(trits_from_integer) + quints_from_integer = quints_from_integer_table() + integer_from_quints = integer_from_quints_table(quints_from_integer) + + print(trits_from_integer) + print(integer_from_trits) + print(quints_from_integer) + print(integer_from_quints) diff --git a/submodules/TelegramUI/third-party/astc/pybits/bitset.py b/submodules/TelegramUI/third-party/astc/pybits/bitset.py new file mode 100644 index 0000000000..e907e80ea4 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/pybits/bitset.py @@ -0,0 +1,77 @@ +# A bitset represents a fixed number of bits and have some helper methods for +# manipulating them. +class bitset: + def __init__(self, n, val): + assert n > 0 + assert val < pow(2, n) # number should fit within the available bits + + self.n = n + self.data = val + + def size(self): + return self.n + + def get(self, i): + assert i >= 0 and i < self.n + return (self.data >> i) & 1 + + def get_msb(self): + return self.get(self.n-1) + + def get_lsb(self): + return self.get(0) + + def set(self, i, x): + assert isinstance(x, bool) or isinstance(x, int) + assert i >= 0 and i < self.n + self.data ^= (-x ^ self.data) & (1 << i) + + def substr(self, msb, lsb): + assert msb >= lsb + assert lsb >= 0 + assert msb < self.n + + count = msb - lsb + 1 + newdata = self.data >> lsb & ((1 << count) - 1) + return bitset(count, newdata) + + def number(self): + return self.data + + def bits(self): + return [self.get(i) for i in range(self.n-1, -1, -1)] + + def __eq__(self, other): + assert isinstance(other, bitset) + + return self.n == other.n and self.data == other.data + + def __str__(self): + return ''.join('1' if x else '0' for x in self.bits()) + + def __repr__(self): + return "bitset(%d, 0b%s)" % (self.n, self.__str__()) + + @staticmethod + def from_list(lst): + num = 0 + n = len(lst) - 1 + for x in lst: + assert x >= 0 and x <= 1 + num = num | (x << n) + n = n - 1 + + return bitset(len(lst), num) + + @staticmethod + def from_args(*args): + return bitset.from_list(list(args)) + + @staticmethod + def join(a, b): + assert isinstance(a, bitset) + assert isinstance(b, bitset) + + count = a.size()+b.size() + number = b.number() | (a.number() << b.size()) + return bitset(count, number) diff --git a/submodules/TelegramUI/third-party/astc/pybits/codegen.py b/submodules/TelegramUI/third-party/astc/pybits/codegen.py new file mode 100644 index 0000000000..eb44320157 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/pybits/codegen.py @@ -0,0 +1,154 @@ +#!/usr/bin/env python + +import bise +import datasize +import partitions +import quantize +import sys + + +def safe_head(lst, default): + try: + return lst[0] + except: + return default + + +def compute_dimensions(array): + if isinstance(array, list): + yield len(array) + yield from compute_dimensions(array[-1]) + + +def pretty_array(element, fmt): + if isinstance(element, int): + return fmt % element + elif isinstance(element, tuple) or isinstance(element, list): + return pretty_array(iter(element), fmt) + else: + first = next(element) + + out = "{" + out += pretty_array(first, fmt) + for x in element: + out += "," + out += pretty_array(x, fmt) + out += "}" + return out + + +def pretty_dimensions(dimensions): + out = "" + for dimension in dimensions: + out += "[" + str(dimension) + "]" + return out + +header_template = """#ifndef {guard} +#define {guard} + +{content} + +#endif +""" + +array_template = "const {type} {name}{dimensions} = {array};" + + +def build_header(guard, content): + return header_template.format(guard=guard, content=content) + + +def build_array(type, name, array): + return array_template.format( + name=name, + type=type, + dimensions=pretty_dimensions(compute_dimensions(array)), + array=pretty_array(array, "%d"), + ) + + +def print_bise_tables(file): + trits_from_integer = bise.trits_from_integer_table() + integer_from_trits = bise.integer_from_trits_table(trits_from_integer) + quints_from_integer = bise.quints_from_integer_table() + integer_from_quints = bise.integer_from_quints_table(quints_from_integer) + + file.write(build_header( + "ASTC_TABLES_INTEGER_SEQUENCE_ENCODING_H_", + build_array("uint8_t", "integer_from_trits", integer_from_trits) + + '\n' + + build_array("uint8_t", "integer_from_quints", integer_from_quints) + )) + + +def print_partitions_tables(file): + table = list(partitions.compute_partitioning_table( + partition_count=2, + block_width=4, + block_height=4)) + lookup_table = partitions.compute_partitioning_lookup_table(table) + + file.write(build_header( + "ASTC_TABLES_PARTITIONS_H_", + build_array( + "uint16_t", + "partition_2_4x4_mask_table", + [part.partition_mask for part in table] + ) + '\n' + + build_array( + "int16_t", + "partition_2_4x4_lookup_table", + [safe_head(parts, -1) for parts in lookup_table] + ) + )) + + +def print_data_size_table(file, block_width, block_height): + table = datasize.color_endpoint_range_table(block_width, block_height) + file.write(build_header( + "ASTC_TABLES_DATA_SIZE_H_", + build_array("int8_t", "color_endpoint_range_table", table) + )) + + +def print_color_quantization_tables(file): + unquantize_table = quantize.color_unquantize_table() + quantize_table = quantize.color_quantize_table(unquantize_table) + + file.write(build_header( + "ASTC_TABLES_COLOR_QUANTIZATION_H_", + build_array("uint8_t", "color_unquantize_table", unquantize_table) + + '\n' + + build_array("uint8_t", "color_quantize_table", quantize_table) + )) + + +def print_usage(prog): + sys.stderr.write( + ("Usage: %s COMMAND\n" + " Commands:\n" + " bise\n" + " partitions\n" + " datasize\n" + " quantize\n") % prog) + + +def main(kind, path): + file = open(path, 'w') if path != '-' else sys.stdout + if kind == "bise": + print_bise_tables(file) + elif kind == "partitions": + print_partitions_tables(file) + elif kind == "datasize": + print_data_size_table(file, 4, 4) + elif kind == "quantize": + print_color_quantization_tables(file) + else: + sys.stderr.write("Error: unknown mode {}\n".format(kind)) + sys.exit(1) + + +if len(sys.argv) != 3: + print_usage(sys.argv[0]) +else: + main(sys.argv[1], sys.argv[2]) diff --git a/submodules/TelegramUI/third-party/astc/pybits/datainfo.py b/submodules/TelegramUI/third-party/astc/pybits/datainfo.py new file mode 100644 index 0000000000..e3b41f6f0e --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/pybits/datainfo.py @@ -0,0 +1,46 @@ +from bise import compute_bise_bitcount +from datasize import data_size, cem_values_count, color_endpoint_range +from range import RANGE_CARDINALITY_TABLE +import sys + + +def print_data_size_info(block_width, block_height, cem, partitions, + weight_range): + config_bits, weight_bits, remaining_bits = data_size( + partitions=partitions, + single_cem=True, + block_width=block_width, + block_height=block_height, + block_depth=1, + dual_plane=False, + weight_range=weight_range + ) + + ce_values = cem_values_count(cem, partitions) + ce_range = color_endpoint_range(cem, remaining_bits, partitions) + cem_bits = compute_bise_bitcount(ce_values, ce_range) + + print("block width:", block_width) + print("block height:", block_height) + print("config bits:", config_bits) + print("weight count:", block_width * block_height) + print("weight range:", RANGE_CARDINALITY_TABLE[weight_range]) + print("weight bits:", weight_bits) + print("remaining bits:", remaining_bits) + print("color endpoint values:", ce_values) + print("color endpoint range:", RANGE_CARDINALITY_TABLE[ce_range]) + print("color endpoint bits:", cem_bits) + print("unused bits:", remaining_bits - cem_bits) + + +if len(sys.argv) != 6: + sys.stderr.write( + "Usage: {} BLOCKWIDTH BLOCKHEIGHT CEM PARTITIONS WEIGHTRANGE\n".format( + sys.argv[0])) +else: + print_data_size_info( + int(sys.argv[1]), + int(sys.argv[2]), + int(sys.argv[3]), + int(sys.argv[4]), + int(sys.argv[5])) diff --git a/submodules/TelegramUI/third-party/astc/pybits/datasize.py b/submodules/TelegramUI/third-party/astc/pybits/datasize.py new file mode 100644 index 0000000000..53000b026c --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/pybits/datasize.py @@ -0,0 +1,137 @@ +from bise import compute_bise_bitcount +from endpointmodes import * +from range import * + +# Count the number of set bits in a number. +def count_bits(x): + assert type(x) is int + assert x >= 0 # negative integers are undefined behaviour + + count = 0 + while x != 0: + if x & 1: + count = count + 1 + x = x >> 1 + + return count + +# Calculate the number of bits used for config data, texel weight data and +# color endpoint data for an ASTC block. +def data_size( + partitions, + single_cem, + block_width, + block_height, + block_depth, + dual_plane, + weight_range): + + assert partitions >= 1 and partitions <= 4 + assert isinstance(single_cem, bool), single_cem + assert block_width >= 1 and block_width <= 12 + assert block_height >= 1 and block_height <= 12 + assert block_depth >= 1 and block_depth <= 12 + assert isinstance(dual_plane, bool) + assert weight_range < WEIGHT_RANGE_MAX + + if partitions == 4 and dual_plane: + raise ValueError("illegal encoding with 4 partitions and dual planes") + + config_bits = 17 + if partitions > 1: + if single_cem: + config_bits = 29 + else: + config_bits = 24 + 3 * partitions + + weights = block_width * block_height * block_depth + + if weights > 64: + raise ValueError("illegal encoding with {} (> 64) weights".format(weights)) + + if dual_plane: + config_bits += 2 + weights *= 2 + + weight_bits = compute_bise_bitcount(weights, weight_range) + + if weight_bits < 24: + raise ValueError("illegal encoding with {} (< 24) weight bits".format(weight_bits)) + + if weight_bits > 96: + raise ValueError("illegal encoding with {} (> 96) weight bits".format(weight_bits)) + + remaining_bits = 128 - config_bits - weight_bits + + return config_bits, weight_bits, remaining_bits + +# Define the class for every color endpoint mode. Used to derive the range for +# color endpoint encoding. +CEM_VALUE_COUNT_TABLE = \ + [ + 2, 2, 2, 2, + 4, 4, 4, 4, + 6, 6, 6, 6, + 8, 8, 8, 8 + ] + +# Count the number of encoded color endpoint values we are storing. +def cem_values_count(cem, partitions): + assert cem < CEM_MAX + + # The ASTC specification derives this count from the CEM class and a value + # they call extra_CEM_bits. I do not understand what extra_CEM_bits is + # referring to, I use the CEM_VALUE_COUNT_TABLE instead and assume that + # there is one set of endpoint values for each partition. + return CEM_VALUE_COUNT_TABLE[cem] * partitions + +# Calculate the range for color endpoint encoding for a given number of +# remaining bits. +def color_endpoint_range(cem, remaining_bits, partitions): + assert cem < CEM_MAX + + cem_values = cem_values_count(cem, partitions) + + if cem_values > 18: + raise ValueError("illegal encoding with {} (> 18) integers for color endpoints".format(cem_values)) + + # Brute-force search for the biggest range which fits in the remaining + # bits. + for ce_range in reversed(range(RANGE_MAX)): + cem_bits = compute_bise_bitcount(cem_values, ce_range) + + if cem_bits <= remaining_bits: + return ce_range + + raise ValueError("illegal encoding with not enough bits for cem {}".format(remaining_bits)) + +def color_endpoint_range_table(block_width, block_height): + def handle_except(partitions, cem, weight_range): + assert weight_range < WEIGHT_RANGE_MAX + try: + _, _, remaining_bits = data_size( + partitions = partitions, + single_cem = True, + block_width = block_width, + block_height = block_height, + block_depth = 1, + dual_plane = False, + weight_range = weight_range) + return color_endpoint_range(cem, remaining_bits, partitions) + except ValueError: + return -1 + + return \ + [ + [ + [ + handle_except(partitions, cem, weight_range) + for cem in range(CEM_MAX) + ] + for weight_range in range(WEIGHT_RANGE_MAX) + ] + for partitions in [1, 2] + ] + +if __name__ == "__main__": + print(color_endpoint_range_table(4, 4)) diff --git a/submodules/TelegramUI/third-party/astc/pybits/endpointmodes.py b/submodules/TelegramUI/third-party/astc/pybits/endpointmodes.py new file mode 100644 index 0000000000..6582cb36da --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/pybits/endpointmodes.py @@ -0,0 +1,17 @@ +CEM_LDR_LUMINANCE_DIRECT = 0 +CEM_LDR_LUMINANCE_BASE_OFFSET = 1 +CEM_HDR_LUMINANCE_LARGE_RANGE = 2 +CEM_HDR_LUMINANCE_SMALL_RANGE = 3 +CEM_LDR_LUMINANCE_ALPHA_DIRECT = 4 +CEM_LDR_LUMINANCE_ALPHA_BASE_OFFSET = 5 +CEM_LDR_RGB_BASE_SCALE = 6 +CEM_HDR_RGB_BASE_SCALE = 7 +CEM_LDR_RGB_DIRECT = 8 +CEM_LDR_RGB_BASE_OFFSET = 9 +CEM_LDR_RGB_BASE_SCALE_PLUS_TWO_ALPHA = 10 +CEM_HDR_RGB = 11 +CEM_LDR_RGBA_DIRECT = 12 +CEM_LDR_RGBA_BASE_OFFSET = 13 +CEM_HDR_RGB_LDR_ALPHA = 14 +CEM_HDR_RGB_HDR_ALPHA = 15 +CEM_MAX = 16 diff --git a/submodules/TelegramUI/third-party/astc/pybits/partition-images.py b/submodules/TelegramUI/third-party/astc/pybits/partition-images.py new file mode 100644 index 0000000000..a98cea8882 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/pybits/partition-images.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python + +from partitions import compute_partitioning_table +import matplotlib.image as mpimg +import numpy as np + +def masks_to_image(block_width, block_height, masks): + colors = [ (1, 0, 0), (0, 0, 1), (0, 1, 0), (1, 1, 1) ] + + xblocks = 32 + yblocks = 32 + + img_width = xblocks * (block_width + 1) + 1 + img_height = yblocks * (block_height + 1) + 1 + + pixels = np.zeros((img_height, img_width, 3)) + + i = 0 + for mask in masks: + xblock = i % xblocks + yblock = i // xblocks + + xtopleft = xblock * (block_width + 1) + 1 + ytopleft = yblock * (block_height + 1) + 1 + + j = 0 + for partition in mask: + x = j % block_width + y = j // block_width + pixels[ytopleft+y, xtopleft+x] = colors[partition] + j = j + 1 + + i = i + 1 + + assert i == 1024 + + return pixels + +def write_image(partition_count, block_width, block_height): + table = compute_partitioning_table( + partition_count = partition_count, + block_width = block_width, + block_height = block_height) + + img = masks_to_image( + block_width = block_width, + block_height = block_height, + masks = table) + + path = "/tmp/%dx%d-blocks-%d-partitions.png" % (block_width, block_height, partition_count) + mpimg.imsave(path, img) + +if __name__ == "__main__": + write_image(2, 4, 4) + write_image(3, 4, 4) + write_image(4, 4, 4) + write_image(4, 6, 12) + write_image(4, 12, 6) + write_image(4, 12, 12) diff --git a/submodules/TelegramUI/third-party/astc/pybits/partitions.py b/submodules/TelegramUI/third-party/astc/pybits/partitions.py new file mode 100644 index 0000000000..8aeb3f99cb --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/pybits/partitions.py @@ -0,0 +1,289 @@ +def square(x): + return x*x + +def shiftr32(x, y): + return (x >> y) & (2**32-1) + +def shiftl32(x, y): + return (x << y) & (2**32-1) + +def xor32(x, y): + return x ^ y + +def add32(x, y): + return (x + y) % 2**32 + +def sub32(x, y): + return (x - y) % 2**32 + +def hash52(p): + p = xor32(p, shiftr32(p, 15)) + p = sub32(p, shiftl32(p, 17)) + p = add32(p, shiftl32(p, 7)) + p = add32(p, shiftl32(p, 4)) + p = xor32(p, shiftr32(p, 5)) + p = add32(p, shiftl32(p, 16)) + p = xor32(p, shiftr32(p, 7)) + p = xor32(p, shiftr32(p, 3)) + p = xor32(p, shiftl32(p, 6)) + p = xor32(p, shiftr32(p, 17)) + + assert p >= 0 and p < 2**32 + + return p + +# Select partion index as defined by ASTC specification. +def select_partition(seed, x, y, z, partition_count, small_block): + assert seed >= 0 and seed < 2**10 + assert partition_count >= 1 and partition_count <= 4 + + if small_block: + x = x << 1 + y = y << 1 + z = z << 1 + + seed += (partition_count - 1) * 1024 + + rnum = hash52(seed) + + seed1 = square(rnum & 0xF) + seed2 = square((rnum >> 4) & 0xF) + seed3 = square((rnum >> 8) & 0xF) + seed4 = square((rnum >> 12) & 0xF) + seed5 = square((rnum >> 16) & 0xF) + seed6 = square((rnum >> 20) & 0xF) + seed7 = square((rnum >> 24) & 0xF) + seed8 = square((rnum >> 28) & 0xF) + seed9 = square((rnum >> 18) & 0xF) + seed10 = square((rnum >> 22) & 0xF) + seed11 = square((rnum >> 26) & 0xF) + seed12 = square(((rnum >> 30) | (rnum << 2)) & 0xF) + + sh1 = 4 if seed & 2 else 5 + sh2 = 6 if partition_count == 3 else 5 + + if not (seed & 1): + sh1, sh2 = (sh2, sh1) + + sh3 = sh1 if seed & 0x10 else sh2 + + seed1 = seed1 >> sh1 + seed2 = seed2 >> sh2 + seed3 = seed3 >> sh1 + seed4 = seed4 >> sh2 + seed5 = seed5 >> sh1 + seed6 = seed6 >> sh2 + seed7 = seed7 >> sh1 + seed8 = seed8 >> sh2 + seed9 = seed9 >> sh3 + seed10 = seed10 >> sh3 + seed11 = seed11 >> sh3 + seed12 = seed12 >> sh3 + + a = seed1*x + seed2*y + seed11*z + (rnum >> 14) + b = seed3*x + seed4*y + seed12*z + (rnum >> 10) + c = seed5*x + seed6*y + seed9*z + (rnum >> 6) + d = seed7*x + seed8*y + seed10*z + (rnum >> 2) + + a = a & 0x3F + b = b & 0x3F if partition_count > 1 else 0 + c = c & 0x3F if partition_count > 2 else 0 + d = d & 0x3F if partition_count > 3 else 0 + + if a >= b and a >= c and a >= d: + return 0 + elif b >= c and b >= d: + return 1 + elif c >= d: + return 2 + else: + return 3 + +# Convert a list of digits to a number with a specific base. +def digits_to_num(base, lst): + sum = 0 + power = 0 + for x in lst: + sum = sum + x * (base**power) + power = power + 1 + return sum + +# Convert a number to a list of digits for a certain base. +def num_to_digits(base, digits, num): + for x in range(0, digits): + yield num % base + num = num // base + +class partitioning: + bit_masks = [0x1, 0x1, 0x3, 0x3] + shift_counts = [1, 1, 2, 2] + + def __init__(self, partition_count, block_width, block_height, partition_mask): + assert isinstance(partition_mask, int) + assert partition_count >= 1 and partition_count <= 4 + + self.block_width = block_width + self.block_height = block_height + self.texel_count = block_width * block_height + self.partition_count = partition_count + self.partition_mask = partition_mask + + self.bit_mask = partitioning.bit_masks[partition_count-1] + self.shift_count = partitioning.shift_counts[partition_count-1] + + def __eq__(self, other): + return \ + self.partition_count == other.partition_count and \ + self.block_width == other.block_width and \ + self.block_height == other.block_height and \ + self.partition_mask == other.partition_mask + + def __iter__(self): + return num_to_digits( + self.partition_count, + self.texel_count, + self.partition_mask) + + def __str__(self): + return "%#x" % self.partition_mask + + def __repr__(self): + return "partitioning({}, {}, {}, [{}])".format( + self.partition_count, + self.block_width, + self.block_height, + ",".join((str(x) for x in self))) + +def invert(part): + assert isinstance(part, partitioning) + assert part.partition_count == 2 + + return partitioning( + part.partition_count, + part.block_width, + part.block_height, + part.partition_mask ^ (2**part.texel_count-1)) + +def distance(a, b): + assert isinstance(a, partitioning) + assert isinstance(b, partitioning) + assert a.partition_count == b.partition_count + assert a.block_width == b.block_width + assert a.block_height == b.block_height + + def cost(m, n): + return 0 if m == n else 1 + + return sum((cost(m, n) for (m, n) in zip(a, b))) + +# Create human readable format for a partition mask. +def show_ascii(part): + assert isinstance(part, partitioning) + + s = "" + i = 0 + j = 0 + for p in part: + s = s + str(p) + i = i + 1 + + if i == part.block_width and j < part.block_height-1: + s = s + "\n" + i = 0 + j = j + 1 + + return s + +# Compute the partition bitmask for a given block size, partition count and +# seed. The bitmask is a list of numbers in range [0, partition count-1] +# starting in top left corner of the block in row major order. +def compute_partitioning(partition_count, block_width, block_height, seed): + width_range = range(0, block_width) + height_range = range(0, block_height) + + def f(x, y): + return select_partition(seed, x, y, 0, partition_count, True) + + return partitioning( + partition_count, + block_width, + block_height, + digits_to_num( + partition_count, + (f(x, y) for y in height_range for x in width_range))) + +# Compute the table that maps partition seeds to partition block masks for a +# given block size and partition count. +def compute_partitioning_table(partition_count, block_width, block_height): + def f(seed): + return compute_partitioning( + partition_count = partition_count, + block_width = block_width, + block_height = block_height, + seed = seed) + + return (f(seed) for seed in range(0, 2**10)) + +# Compute the lookup table from a partition mask to a matching partition index. +# Matching is done according to the edit distance between the partitioning and +# all availible partitions. +def compute_partitioning_lookup_table(table): + assert len(table) == 1024 + + partition_count = 2 + block_width = 4 + block_height = 4 + + for ideal in range(0, 2**16): + ideal_part = partitioning( + partition_count = partition_count, + block_width = block_width, + block_height = block_height, + partition_mask = ideal) + ideal_inverted_part = invert(ideal_part) + + best_score = 100000 + best_indices = [] + for index, actual_part in enumerate(table): + score = min( + distance(ideal_part, actual_part), + distance(ideal_inverted_part, actual_part)) + if score < 2: + if score == best_score: + best_indices.append(index) + elif score < best_score: + best_score = score + best_indices = [index] + + yield best_indices + +def compute_partitioning_lookup_table_equality(table): + assert len(table) == 1024 + + partition_count = 2 + block_width = 4 + block_height = 4 + + for ideal in range(0, 2**16): + ideal_part = partitioning( + partition_count = partition_count, + block_width = block_width, + block_height = block_height, + partition_mask = ideal) + ideal_inverted_part = invert(ideal_part) + + for index, actual_part in enumerate(table): + if ideal_part == actual_part or ideal_inverted_part == actual_part: + yield index + + yield -1 + + +if __name__ == "__main__": + table = list(compute_partitioning_table( + partition_count=2, + block_width=4, + block_height=4)) + print([list(part) for part in table]) + lookup_table = compute_partitioning_lookup_table(table) + print(list(lookup_table)) diff --git a/submodules/TelegramUI/third-party/astc/pybits/quantize.py b/submodules/TelegramUI/third-party/astc/pybits/quantize.py new file mode 100644 index 0000000000..97f57bc9ef --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/pybits/quantize.py @@ -0,0 +1,123 @@ +from bitset import bitset +from range import * + +def unquantize_color(i, quant): + assert i >= 0 and i < RANGE_CARDINALITY_TABLE[quant] + assert quant >= RANGE_2 and quant <= RANGE_256 + + def unquant(a, b, c, d): + """ + This is the magic bit twiddling hack ARM uses in the ASTC decoder + specification to avoid full-width multipliers. + + T = D * C + B; + T = T ^ A; + T = (A & 0x80) | (T >> 2); + """ + return (a & 0x80) | (((d*c + b) ^ a) >> 2) + + def bit_only(lst): + return bitset.from_list(lst).number() + + def trit_quint(A, B, C, D): + return unquant( + bitset.from_list(A).number(), + bitset.from_list(B).number(), + C, + bitset.from_list(D).number()) + + bits = bitset(8, i) + a = bits.get(0) + b = bits.get(1) + c = bits.get(2) + d = bits.get(3) + e = bits.get(4) + f = bits.get(5) + g = bits.get(6) + h = bits.get(7) + + if quant == RANGE_2: + return bit_only([a,a,a,a,a,a,a,a]) + elif quant == RANGE_3: + return [0, 128, 255][i] + elif quant == RANGE_4: + return bit_only([b,a,b,a,b,a,b,a]) + elif quant == RANGE_5: + return [0, 64, 128, 192, 255][i] + elif quant == RANGE_6: + return trit_quint([a,a,a,a,a,a,a,a,a], [0,0,0,0,0,0,0,0,0], 204, [c,b]) + elif quant == RANGE_8: + return bit_only([c,b,a,c,b,a,c,b]) + elif quant == RANGE_10: + return trit_quint([a,a,a,a,a,a,a,a,a], [0,0,0,0,0,0,0,0,0], 113, [d,c,b]) + elif quant == RANGE_12: + return trit_quint([a,a,a,a,a,a,a,a,a], [b,0,0,0,b,0,b,b,0], 93, [d,c]) + elif quant == RANGE_16: + return bit_only([d,c,b,a,d,c,b,a]) + elif quant == RANGE_20: + return trit_quint([a,a,a,a,a,a,a,a,a], [b,0,0,0,0,b,b,0,0], 54, [e,d,c]) + elif quant == RANGE_24: + return trit_quint([a,a,a,a,a,a,a,a,a], [c,b,0,0,0,c,b,c,b], 44, [e,d]) + elif quant == RANGE_32: + return bit_only([e,d,c,b,a,e,d,c]) + elif quant == RANGE_40: + return trit_quint([a,a,a,a,a,a,a,a,a], [c,b,0,0,0,0,c,b,c], 26, [f,e,d]) + elif quant == RANGE_48: + return trit_quint([a,a,a,a,a,a,a,a,a], [d,c,b,0,0,0,d,c,b], 22, [f,e]) + elif quant == RANGE_64: + return bit_only([f,e,d,c,b,a,f,e]) + elif quant == RANGE_80: + return trit_quint([a,a,a,a,a,a,a,a,a], [d,c,b,0,0,0,0,d,c], 13, [g,f,e]) + elif quant == RANGE_96: + return trit_quint([a,a,a,a,a,a,a,a,a], [e,d,c,b,0,0,0,e,d], 11, [g,f]) + elif quant == RANGE_128: + return bit_only([g,f,e,d,c,b,a,g]) + elif quant == RANGE_160: + return trit_quint([a,a,a,a,a,a,a,a,a], [e,d,c,b,0,0,0,0,e], 6, [h,g,f]) + elif quant == RANGE_192: + return trit_quint([a,a,a,a,a,a,a,a,a], [f,e,d,c,b,0,0,0,f], 5, [h,g]) + elif quant == RANGE_256: + return bit_only([h,g,f,e,d,c,b,a]) + + assert False + +def find_closest(unquantized, value): + assert isinstance(unquantized, list) + assert len(unquantized) > 0 + assert isinstance(value, int) + + class Item: + def __init__(self, index): + self.index = index + self.cost = abs(value - unquantized[self.index]) + + def __lt__(self, other): + return self.cost < other.cost + + return min(map(Item, range(len(unquantized)))).index + +def color_quantize_table(color_unquantize_table): + return \ + [ + [ + find_closest(color_unquantize_table[quant], i) + for i in range(256) + ] + for quant in range(RANGE_MAX) + ] + +def color_unquantize_table(): + return \ + [ + [ + unquantize_color(i, quant) + for i in range(RANGE_CARDINALITY_TABLE[quant]) + ] + for quant in range(RANGE_MAX) + ] + +if __name__ == "__main__": + unquantize_table = color_unquantize_table() + quantize_table = color_quantize_table(unquantize_table) + print(unquantize_table) + print(quantize_table) diff --git a/submodules/TelegramUI/third-party/astc/pybits/range.py b/submodules/TelegramUI/third-party/astc/pybits/range.py new file mode 100644 index 0000000000..c3423e44f7 --- /dev/null +++ b/submodules/TelegramUI/third-party/astc/pybits/range.py @@ -0,0 +1,67 @@ +# There are 21 ranges (intervals in math lingo) for endpoint values. +RANGE_2 = 0 +RANGE_3 = 1 +RANGE_4 = 2 +RANGE_5 = 3 +RANGE_6 = 4 +RANGE_8 = 5 +RANGE_10 = 6 +RANGE_12 = 7 +RANGE_16 = 8 +RANGE_20 = 9 +RANGE_24 = 10 +RANGE_32 = 11 +RANGE_40 = 12 +RANGE_48 = 13 +RANGE_64 = 14 +RANGE_80 = 15 +RANGE_96 = 16 +RANGE_128 = 17 +RANGE_160 = 18 +RANGE_192 = 19 +RANGE_256 = 20 +RANGE_MAX = 21 + +# Table of each range's cardinality, that is the number of representable +# integers in each range. +RANGE_CARDINALITY_TABLE = \ + [ + 2, + 3, + 4, + 5, + 6, + 8, + 10, + 12, + 16, + 20, + 24, + 32, + 40, + 48, + 64, + 80, + 96, + 128, + 160, + 192, + 256 + ] + +# There are 12 ranges for texel weights. +WEIGHT_RANGE_MAX = 12 + +def range_lookup(count): + """ + Find what quantization range an number of elements can be represented with. + """ + + assert type(count) is int + assert count >= 2 and count <= 256 + + for i in range(RANGE_MAX): + if count <= RANGE_CARDINALITY_TABLE[i]: + return i + + assert False diff --git a/submodules/TelegramUI/third-party/bc1/TextureCompression.cpp b/submodules/TelegramUI/third-party/bc1/TextureCompression.cpp index 8aed619664..e99405dfd2 100644 --- a/submodules/TelegramUI/third-party/bc1/TextureCompression.cpp +++ b/submodules/TelegramUI/third-party/bc1/TextureCompression.cpp @@ -1,6 +1,11 @@ #import "TextureCompression.h" +#import "astc.h" + void compressRGBAToBC1(uint8_t const * _Nonnull argb, int width, int height, uint8_t * _Nonnull bc1) { + BgraImage image(width, height, (uint8_t *)argb); + CompressedImage compressed(width, height, 4, 4, 16); + compress_astc(image, &compressed); /*Javelin::RgbaBitmap bitmap(width, height); uint8_t *data = (uint8_t *)bitmap.GetData(); for (int i = 0; i < width * height; i++) {