From 683b2988fcfb83e15a93c127c47ac7f207074d8b Mon Sep 17 00:00:00 2001 From: overtake Date: Tue, 29 Sep 2020 17:57:25 +0300 Subject: [PATCH 01/15] -small fix for logs [skip ci] --- submodules/TelegramCore/Sources/ChannelAdminEventLogs.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/submodules/TelegramCore/Sources/ChannelAdminEventLogs.swift b/submodules/TelegramCore/Sources/ChannelAdminEventLogs.swift index 247a8ecf3c..152e90d5cd 100644 --- a/submodules/TelegramCore/Sources/ChannelAdminEventLogs.swift +++ b/submodules/TelegramCore/Sources/ChannelAdminEventLogs.swift @@ -223,6 +223,10 @@ public func channelAdminLogEvents(postbox: Postbox, network: Network, peerId: Pe return postbox.transaction { transaction -> AdminLogEventsResult in updatePeers(transaction: transaction, peers: peers.map { $0.1 }, update: { return $1 }) + var peers = peers + if peers[peerId] == nil, let peer = transaction.getPeer(peerId) { + peers[peer.id] = peer + } return AdminLogEventsResult(peerId: peerId, peers: peers, events: events) } |> castError(MTRpcError.self) } From 7b63a7a050746a265c475cd0437892ea0c27ca74 Mon Sep 17 00:00:00 2001 From: Ali <> Date: Wed, 30 Sep 2020 19:31:11 +0100 Subject: [PATCH 02/15] Fix channel merge in update resolution --- submodules/TelegramCore/Sources/ApiGroupOrChannel.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/TelegramCore/Sources/ApiGroupOrChannel.swift b/submodules/TelegramCore/Sources/ApiGroupOrChannel.swift index 246cb0a565..3130aa051c 100644 --- a/submodules/TelegramCore/Sources/ApiGroupOrChannel.swift +++ b/submodules/TelegramCore/Sources/ApiGroupOrChannel.swift @@ -152,7 +152,7 @@ func mergeGroupOrChannel(lhs: Peer?, rhs: Api.Chat) -> Peer? { return TelegramChannel(id: lhs.id, accessHash: lhs.accessHash, title: title, username: username, photo: imageRepresentationsForApiChatPhoto(photo), creationDate: lhs.creationDate, version: lhs.version, participationStatus: lhs.participationStatus, info: info, flags: channelFlags, restrictionInfo: lhs.restrictionInfo, adminRights: lhs.adminRights, bannedRights: lhs.bannedRights, defaultBannedRights: defaultBannedRights.flatMap(TelegramChatBannedRights.init)) } else { - return nil + return parseTelegramGroupOrChannel(chat: rhs) } } } From c78d11b88aaef532c260f9d53f5c4d1ef36f9fc2 Mon Sep 17 00:00:00 2001 From: Ali <> Date: Thu, 1 Oct 2020 20:04:12 +0100 Subject: [PATCH 03/15] Update tgcalls --- submodules/TgVoipWebrtc/BUCK | 1 + submodules/TgVoipWebrtc/BUILD | 1 + submodules/TgVoipWebrtc/tgcalls | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/submodules/TgVoipWebrtc/BUCK b/submodules/TgVoipWebrtc/BUCK index 8237d58a13..4b2e1816ca 100644 --- a/submodules/TgVoipWebrtc/BUCK +++ b/submodules/TgVoipWebrtc/BUCK @@ -18,6 +18,7 @@ static_library( "tgcalls/tgcalls/platform/darwin/VideoCameraCapturerMac.*", "tgcalls/tgcalls/platform/darwin/VideoMetalViewMac.*", "tgcalls/tgcalls/platform/darwin/GLVideoViewMac.*", + "tgcalls/tgcalls/platform/darwin/ScreenCapturer.*", ]), has_cpp = True, headers = merge_maps([ diff --git a/submodules/TgVoipWebrtc/BUILD b/submodules/TgVoipWebrtc/BUILD index 094b3b4c13..87ddd993c9 100644 --- a/submodules/TgVoipWebrtc/BUILD +++ b/submodules/TgVoipWebrtc/BUILD @@ -19,6 +19,7 @@ objc_library( "tgcalls/tgcalls/platform/darwin/VideoCameraCapturerMac.*", "tgcalls/tgcalls/platform/darwin/VideoMetalViewMac.*", "tgcalls/tgcalls/platform/darwin/GLVideoViewMac.*", + "tgcalls/tgcalls/platform/darwin/ScreenCapturer.*", ]), hdrs = glob([ "PublicHeaders/**/*.h", diff --git a/submodules/TgVoipWebrtc/tgcalls b/submodules/TgVoipWebrtc/tgcalls index b906b5a955..abf983bf49 160000 --- a/submodules/TgVoipWebrtc/tgcalls +++ b/submodules/TgVoipWebrtc/tgcalls @@ -1 +1 @@ -Subproject commit b906b5a955f1e6e195cb91c4513d4cb7b3620ea6 +Subproject commit abf983bf498ed0ddbdc3a4e2326b218f62a69d0c From 00642ecbe73c63e1c9183aa8b80205d79a366ce4 Mon Sep 17 00:00:00 2001 From: Ali <> Date: Thu, 1 Oct 2020 20:04:36 +0100 Subject: [PATCH 04/15] Fix channel merge --- submodules/TelegramCore/Sources/ApiGroupOrChannel.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/TelegramCore/Sources/ApiGroupOrChannel.swift b/submodules/TelegramCore/Sources/ApiGroupOrChannel.swift index 3130aa051c..5bbb5a10eb 100644 --- a/submodules/TelegramCore/Sources/ApiGroupOrChannel.swift +++ b/submodules/TelegramCore/Sources/ApiGroupOrChannel.swift @@ -188,6 +188,6 @@ func mergeChannel(lhs: TelegramChannel?, rhs: TelegramChannel) -> TelegramChanne accessHash = rhs.accessHash ?? lhs.accessHash } - return TelegramChannel(id: lhs.id, accessHash: accessHash, title: rhs.title, username: rhs.username, photo: rhs.photo, creationDate: rhs.creationDate, version: rhs.version, participationStatus: rhs.participationStatus, info: info, flags: channelFlags, restrictionInfo: rhs.restrictionInfo, adminRights: rhs.adminRights, bannedRights: rhs.bannedRights, defaultBannedRights: rhs.defaultBannedRights) + return TelegramChannel(id: lhs.id, accessHash: accessHash, title: rhs.title, username: rhs.username, photo: rhs.photo, creationDate: rhs.creationDate, version: rhs.version, participationStatus: lhs.participationStatus, info: info, flags: channelFlags, restrictionInfo: rhs.restrictionInfo, adminRights: rhs.adminRights, bannedRights: rhs.bannedRights, defaultBannedRights: rhs.defaultBannedRights) } From d94d771febb198a573ee9b1f7df2e6e6959be281 Mon Sep 17 00:00:00 2001 From: Ali <> Date: Fri, 2 Oct 2020 17:14:59 +0100 Subject: [PATCH 05/15] Comments [WIP] --- .../Telegram-iOS/en.lproj/Localizable.strings | 2 + .../Sources/AnimatedCountLabelNode.swift | 79 +- submodules/AppLock/Sources/AppLock.swift | 2 - submodules/MtProtoKit/Sources/MTContext.m | 5 +- .../Sources/MTDatacenterAuthMessageService.m | 9 + .../Sources/ReplyThreadHistory.swift | 25 +- .../Sources/PresentationStrings.swift | 1747 +++++++++-------- .../Resources/PresentationStrings.mapping | Bin 156903 -> 156951 bytes .../TelegramUI/Sources/ChatController.swift | 15 +- .../Sources/ChatControllerNode.swift | 40 + .../Sources/ChatHistoryEntriesForView.swift | 2 +- .../Sources/ChatHistoryListNode.swift | 12 +- .../ChatInterfaceStateContextMenus.swift | 2 +- .../ChatMessageAnimatedStickerItemNode.swift | 12 +- .../Sources/ChatMessageBubbleItemNode.swift | 9 +- .../ChatMessageInstantVideoItemNode.swift | 6 +- .../ChatMessageInteractiveFileNode.swift | 6 +- .../TelegramUI/Sources/ChatMessageItem.swift | 2 +- .../Sources/ChatMessageStickerItemNode.swift | 6 +- .../TelegramUI/Sources/ChatTitleView.swift | 7 +- submodules/TgVoipWebrtc/tgcalls | 2 +- .../WalletUI/Resources/WalletStrings.mapping | Bin 8422 -> 8422 bytes .../WalletUI/Sources/WalletStrings.swift | 4 +- 23 files changed, 1075 insertions(+), 919 deletions(-) diff --git a/Telegram/Telegram-iOS/en.lproj/Localizable.strings b/Telegram/Telegram-iOS/en.lproj/Localizable.strings index 6b88380a9d..337a3fdeb7 100644 --- a/Telegram/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram/Telegram-iOS/en.lproj/Localizable.strings @@ -5813,3 +5813,5 @@ Any member of this group will be able to see messages in the channel."; "Channel.CommentsGroup.HeaderGroupSet" = "%@ is linking the group as it's discussion board."; "RepliesChat.DescriptionText" = "This chat helps you keep track of replies to your comments in Channels."; + +"Channel.DiscussionMessageUnavailable" = "Sorry, this post has been removed from the discussion group."; diff --git a/submodules/AnimatedCountLabelNode/Sources/AnimatedCountLabelNode.swift b/submodules/AnimatedCountLabelNode/Sources/AnimatedCountLabelNode.swift index 96862e70f1..ecd7fb8d6d 100644 --- a/submodules/AnimatedCountLabelNode/Sources/AnimatedCountLabelNode.swift +++ b/submodules/AnimatedCountLabelNode/Sources/AnimatedCountLabelNode.swift @@ -10,11 +10,6 @@ public class AnimatedCountLabelNode: ASDisplayNode { } public enum Segment: Equatable { - public enum Key: Hashable { - case number - case text(Int) - } - case number(Int, NSAttributedString) case text(Int, NSAttributedString) @@ -34,10 +29,37 @@ public class AnimatedCountLabelNode: ASDisplayNode { } } } + } + + fileprivate enum ResolvedSegment: Equatable { + public enum Key: Hashable { + case number(Int) + case text(Int) + } + + case number(id: Int, value: Int, string: NSAttributedString) + case text(id: Int, string: NSAttributedString) + + public static func ==(lhs: ResolvedSegment, rhs: ResolvedSegment) -> Bool { + switch lhs { + case let .number(id, number, text): + if case let .number(rhsId, rhsNumber, rhsText) = rhs, id == rhsId, number == rhsNumber, text.isEqual(to: rhsText) { + return true + } else { + return false + } + case let .text(index, text): + if case let .text(rhsIndex, rhsText) = rhs, index == rhsIndex, text.isEqual(to: rhsText) { + return true + } else { + return false + } + } + } public var attributedText: NSAttributedString { switch self { - case let .number(_, text): + case let .number(_, _, text): return text case let .text(_, text): return text @@ -46,28 +68,53 @@ public class AnimatedCountLabelNode: ASDisplayNode { var key: Key { switch self { - case .number: - return .number + case let .number(id, _, _): + return .number(id) case let .text(index, _): return .text(index) } } } - fileprivate var resolvedSegments: [Segment.Key: (Segment, TextNode)] = [:] + fileprivate var resolvedSegments: [ResolvedSegment.Key: (ResolvedSegment, TextNode)] = [:] override public init() { super.init() } public func asyncLayout() -> (CGSize, [Segment]) -> (Layout, (Bool) -> Void) { - var segmentLayouts: [Segment.Key: (TextNodeLayoutArguments) -> (TextNodeLayout, () -> TextNode)] = [:] + var segmentLayouts: [ResolvedSegment.Key: (TextNodeLayoutArguments) -> (TextNodeLayout, () -> TextNode)] = [:] let wasEmpty = self.resolvedSegments.isEmpty for (segmentKey, segmentAndTextNode) in self.resolvedSegments { segmentLayouts[segmentKey] = TextNode.asyncLayout(segmentAndTextNode.1) } - return { [weak self] size, segments in + return { [weak self] size, initialSegments in + var segments: [ResolvedSegment] = [] + loop: for segment in initialSegments { + switch segment { + case let .number(value, string): + if string.string.isEmpty { + continue loop + } + let attributes = string.attributes(at: 0, longestEffectiveRange: nil, in: NSRange(location: 0, length: 1)) + + var remainingValue = value + + while true { + let digitValue = remainingValue % 10 + + segments.insert(.number(id: 1000 - segments.count, value: value, string: NSAttributedString(string: "\(digitValue)", attributes: attributes)), at: 0) + remainingValue /= 10 + if remainingValue == 0 { + break + } + } + case let .text(id, string): + segments.append(.text(id: id, string: string)) + } + } + for segment in segments { if segmentLayouts[segment.key] == nil { segmentLayouts[segment.key] = TextNode.asyncLayout(nil) @@ -77,17 +124,17 @@ public class AnimatedCountLabelNode: ASDisplayNode { var contentSize = CGSize() var remainingSize = size - var calculatedSegments: [Segment.Key: (TextNodeLayout, CGFloat, () -> TextNode)] = [:] + var calculatedSegments: [ResolvedSegment.Key: (TextNodeLayout, CGFloat, () -> TextNode)] = [:] var isTruncated = false - var validKeys: [Segment.Key] = [] + var validKeys: [ResolvedSegment.Key] = [] for segment in segments { validKeys.append(segment.key) let (layout, apply) = segmentLayouts[segment.key]!(TextNodeLayoutArguments(attributedString: segment.attributedText, backgroundColor: nil, maximumNumberOfLines: 1, truncationType: .end, constrainedSize: remainingSize, alignment: .left, lineSpacing: 0.0, cutout: nil, insets: UIEdgeInsets(), lineColor: nil, textShadowColor: nil, textStroke: nil)) var effectiveSegmentWidth = layout.size.width if case .number = segment { - effectiveSegmentWidth = ceil(effectiveSegmentWidth / 2.0) * 2.0 + //effectiveSegmentWidth = ceil(effectiveSegmentWidth / 2.0) * 2.0 } else if segment.attributedText.string == " " { effectiveSegmentWidth = max(effectiveSegmentWidth, 4.0) } @@ -115,7 +162,7 @@ public class AnimatedCountLabelNode: ASDisplayNode { for segment in segments { var animation: (CGFloat, Double)? if let (currentSegment, currentTextNode) = strongSelf.resolvedSegments[segment.key] { - if case let .number(currentValue, _) = currentSegment, case let .number(updatedValue, _) = segment, animated, !wasEmpty, currentValue != updatedValue, let snapshot = currentTextNode.layer.snapshotContentTree() { + if case let .number(_, currentValue, currentString) = currentSegment, case let .number(_, updatedValue, updatedString) = segment, animated, !wasEmpty, currentValue != updatedValue, currentString.string != updatedString.string, let snapshot = currentTextNode.layer.snapshotContentTree() { let offsetY: CGFloat if currentValue > updatedValue { offsetY = -floor(currentTextNode.bounds.height * 0.6) @@ -164,7 +211,7 @@ public class AnimatedCountLabelNode: ASDisplayNode { strongSelf.resolvedSegments[segment.key] = (segment, textNode) } - var removeKeys: [Segment.Key] = [] + var removeKeys: [ResolvedSegment.Key] = [] for key in strongSelf.resolvedSegments.keys { if !validKeys.contains(key) { removeKeys.append(key) diff --git a/submodules/AppLock/Sources/AppLock.swift b/submodules/AppLock/Sources/AppLock.swift index 112873aac4..b771fc82de 100644 --- a/submodules/AppLock/Sources/AppLock.swift +++ b/submodules/AppLock/Sources/AppLock.swift @@ -37,8 +37,6 @@ private func isLocked(passcodeSettings: PresentationPasscodeSettings, state: Loc } private func getCoveringViewSnaphot(window: Window1) -> UIImage? { - print("getCoveringViewSnaphot") - let scale: CGFloat = 0.5 let unscaledSize = window.hostView.containerView.frame.size return generateImage(CGSize(width: floor(unscaledSize.width * scale), height: floor(unscaledSize.height * scale)), rotatedContext: { size, context in diff --git a/submodules/MtProtoKit/Sources/MTContext.m b/submodules/MtProtoKit/Sources/MTContext.m index cbe6a136bd..e84716e92a 100644 --- a/submodules/MtProtoKit/Sources/MTContext.m +++ b/submodules/MtProtoKit/Sources/MTContext.m @@ -229,6 +229,7 @@ static int32_t fixedTimeDifferenceValue = 0; _useTempAuthKeys = useTempAuthKeys; #if DEBUG _tempKeyExpiration = 1 * 60 * 60; + _tempKeyExpiration = 5; #else _tempKeyExpiration = 24 * 60 * 60; #endif @@ -380,12 +381,12 @@ static int32_t fixedTimeDifferenceValue = 0; if (datacenterAuthInfoById != nil) { _datacenterAuthInfoById = [[NSMutableDictionary alloc] initWithDictionary:datacenterAuthInfoById]; #if DEBUG - /*NSArray *keys = [_datacenterAuthInfoById allKeys]; + NSArray *keys = [_datacenterAuthInfoById allKeys]; for (NSNumber *key in keys) { if (parseAuthInfoMapKeyInteger(key).selector != MTDatacenterAuthInfoSelectorPersistent) { [_datacenterAuthInfoById removeObjectForKey:key]; } - }*/ + } #endif } diff --git a/submodules/MtProtoKit/Sources/MTDatacenterAuthMessageService.m b/submodules/MtProtoKit/Sources/MTDatacenterAuthMessageService.m index e9d94c678b..22aaf5d07d 100644 --- a/submodules/MtProtoKit/Sources/MTDatacenterAuthMessageService.m +++ b/submodules/MtProtoKit/Sources/MTDatacenterAuthMessageService.m @@ -402,7 +402,13 @@ typedef enum { arc4random_buf(&random, 1); [dataWithHash appendBytes:&random length:1]; } + #if DEBUG + assert(dataWithHash.length == 255); + #endif NSData *encryptedData = MTRsaEncrypt(_encryptionProvider, [publicKey objectForKey:@"key"], dataWithHash); + if (MTLogEnabled()) { + MTLog(@"[MTDatacenterAuthMessageService#%p encryptedData.length = %d]", self, encryptedData.length); + } if (encryptedData.length < 256) { NSMutableData *newEncryptedData = [[NSMutableData alloc] init]; @@ -415,6 +421,9 @@ typedef enum { [newEncryptedData appendData:encryptedData]; encryptedData = newEncryptedData; } + #if DEBUG + assert(encryptedData.length == 256); + #endif _dhEncryptedData = encryptedData; } else { diff --git a/submodules/TelegramCore/Sources/ReplyThreadHistory.swift b/submodules/TelegramCore/Sources/ReplyThreadHistory.swift index 477b4d7652..d35538ba1f 100644 --- a/submodules/TelegramCore/Sources/ReplyThreadHistory.swift +++ b/submodules/TelegramCore/Sources/ReplyThreadHistory.swift @@ -6,6 +6,7 @@ import TelegramApi private struct DiscussionMessage { public var messageId: MessageId + public var channelMessageId: MessageId? public var isChannelPost: Bool public var maxMessage: MessageId? public var maxReadIncomingMessageId: MessageId? @@ -143,6 +144,14 @@ private class ReplyThreadHistoryContextImpl { return .fail(.generic) } + var channelMessageId: MessageId? + for attribute in topMessage.attributes { + if let attribute = attribute as? SourceReferenceMessageAttribute { + channelMessageId = attribute.messageId + break + } + } + var peers: [Peer] = [] var peerPresences: [PeerId: PeerPresence] = [:] @@ -188,6 +197,7 @@ private class ReplyThreadHistoryContextImpl { return .single(DiscussionMessage( messageId: parsedIndex.id, + channelMessageId: channelMessageId, isChannelPost: isChannelPost, maxMessage: resolvedMaxMessage, maxReadIncomingMessageId: readInboxMaxId.flatMap { readMaxId in @@ -388,6 +398,7 @@ public struct ChatReplyThreadMessage: Equatable { } public var messageId: MessageId + public var channelMessageId: MessageId? public var isChannelPost: Bool public var maxMessage: MessageId? public var maxReadIncomingMessageId: MessageId? @@ -396,8 +407,9 @@ public struct ChatReplyThreadMessage: Equatable { public var initialAnchor: Anchor public var isNotAvailable: Bool - fileprivate init(messageId: MessageId, isChannelPost: Bool, maxMessage: MessageId?, maxReadIncomingMessageId: MessageId?, maxReadOutgoingMessageId: MessageId?, initialFilledHoles: IndexSet, initialAnchor: Anchor, isNotAvailable: Bool) { + fileprivate init(messageId: MessageId, channelMessageId: MessageId?, isChannelPost: Bool, maxMessage: MessageId?, maxReadIncomingMessageId: MessageId?, maxReadOutgoingMessageId: MessageId?, initialFilledHoles: IndexSet, initialAnchor: Anchor, isNotAvailable: Bool) { self.messageId = messageId + self.channelMessageId = channelMessageId self.isChannelPost = isChannelPost self.maxMessage = maxMessage self.maxReadIncomingMessageId = maxReadIncomingMessageId @@ -445,6 +457,14 @@ public func fetchChannelReplyThreadMessage(account: Account, messageId: MessageI return nil } + var channelMessageId: MessageId? + for attribute in topMessage.attributes { + if let attribute = attribute as? SourceReferenceMessageAttribute { + channelMessageId = attribute.messageId + break + } + } + var peers: [Peer] = [] var peerPresences: [PeerId: PeerPresence] = [:] @@ -490,6 +510,7 @@ public func fetchChannelReplyThreadMessage(account: Account, messageId: MessageI return DiscussionMessage( messageId: parsedIndex.id, + channelMessageId: channelMessageId, isChannelPost: isChannelPost, maxMessage: resolvedMaxMessage, maxReadIncomingMessageId: readInboxMaxId.flatMap { readMaxId in @@ -530,6 +551,7 @@ public func fetchChannelReplyThreadMessage(account: Account, messageId: MessageI return DiscussionMessage( messageId: discussionMessageId, + channelMessageId: messageId, isChannelPost: true, maxMessage: replyInfo.maxMessageId, maxReadIncomingMessageId: replyInfo.maxReadIncomingMessageId, @@ -730,6 +752,7 @@ public func fetchChannelReplyThreadMessage(account: Account, messageId: MessageI return .single(ChatReplyThreadMessage( messageId: discussionMessage.messageId, + channelMessageId: discussionMessage.channelMessageId, isChannelPost: discussionMessage.isChannelPost, maxMessage: discussionMessage.maxMessage, maxReadIncomingMessageId: discussionMessage.maxReadIncomingMessageId, diff --git a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift index 429101fc0a..c34a0efba7 100644 --- a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift +++ b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift @@ -4742,1040 +4742,1041 @@ public final class PresentationStrings: Equatable { public func Wallet_Time_PreciseDate_m4(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4280]!, self._r[4280]!, [_1, _2, _3]) } - public var GroupInfo_ActionPromote: String { return self._s[4281]! } - public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[4282]! } + public var Channel_DiscussionMessageUnavailable: String { return self._s[4281]! } + public var GroupInfo_ActionPromote: String { return self._s[4282]! } + public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[4283]! } public func TwoStepAuth_PendingEmailHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4283]!, self._r[4283]!, [_0]) + return formatWithArgumentRanges(self._s[4284]!, self._r[4284]!, [_0]) } - public var VoiceOver_Chat_Reply: String { return self._s[4284]! } - public var Month_GenMay: String { return self._s[4285]! } - public var DialogList_DeleteBotConversationConfirmation: String { return self._s[4286]! } - public var Chat_PsaTooltip_covid: String { return self._s[4287]! } - public var Watch_Suggestion_CantTalk: String { return self._s[4288]! } - public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[4289]! } - public var AppUpgrade_Running: String { return self._s[4290]! } - public var PasscodeSettings_UnlockWithFaceId: String { return self._s[4293]! } - public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[4294]! } - public var SharedMedia_EmptyText: String { return self._s[4295]! } - public var Passport_Address_EditResidentialAddress: String { return self._s[4296]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[4297]! } - public var Message_PinnedGame: String { return self._s[4298]! } - public var KeyCommand_SearchInChat: String { return self._s[4299]! } - public var Appearance_ThemeCarouselNewNight: String { return self._s[4300]! } - public var ChatList_Search_FilterMedia: String { return self._s[4301]! } - public var Message_PinnedAudioMessage: String { return self._s[4302]! } - public var ChannelInfo_ConfirmLeave: String { return self._s[4303]! } + public var VoiceOver_Chat_Reply: String { return self._s[4285]! } + public var Month_GenMay: String { return self._s[4286]! } + public var DialogList_DeleteBotConversationConfirmation: String { return self._s[4287]! } + public var Chat_PsaTooltip_covid: String { return self._s[4288]! } + public var Watch_Suggestion_CantTalk: String { return self._s[4289]! } + public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[4290]! } + public var AppUpgrade_Running: String { return self._s[4291]! } + public var PasscodeSettings_UnlockWithFaceId: String { return self._s[4294]! } + public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[4295]! } + public var SharedMedia_EmptyText: String { return self._s[4296]! } + public var Passport_Address_EditResidentialAddress: String { return self._s[4297]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[4298]! } + public var Message_PinnedGame: String { return self._s[4299]! } + public var KeyCommand_SearchInChat: String { return self._s[4300]! } + public var Appearance_ThemeCarouselNewNight: String { return self._s[4301]! } + public var ChatList_Search_FilterMedia: String { return self._s[4302]! } + public var Message_PinnedAudioMessage: String { return self._s[4303]! } + public var ChannelInfo_ConfirmLeave: String { return self._s[4304]! } public func Channel_AdminLog_MessagePromotedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4304]!, self._r[4304]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4305]!, self._r[4305]!, [_1, _2]) } - public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[4305]! } + public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[4306]! } public func Passport_Email_CodeHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4306]!, self._r[4306]!, [_0]) + return formatWithArgumentRanges(self._s[4307]!, self._r[4307]!, [_0]) } - public var Wallet_Receive_AddressCopied: String { return self._s[4307]! } + public var Wallet_Receive_AddressCopied: String { return self._s[4308]! } public func Message_PinnedTextMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4308]!, self._r[4308]!, [_0]) + return formatWithArgumentRanges(self._s[4309]!, self._r[4309]!, [_0]) } - public var Settings_AddAccount: String { return self._s[4309]! } - public var Channel_AdminLog_CanDeleteMessages: String { return self._s[4310]! } - public var Conversation_DiscardVoiceMessageTitle: String { return self._s[4311]! } - public var Channel_JoinChannel: String { return self._s[4312]! } - public var Watch_UserInfo_Unblock: String { return self._s[4313]! } - public var PhoneLabel_Title: String { return self._s[4314]! } - public var Group_Setup_HistoryHiddenHelp: String { return self._s[4316]! } - public var Privacy_ProfilePhoto_AlwaysShareWith_Title: String { return self._s[4317]! } + public var Settings_AddAccount: String { return self._s[4310]! } + public var Channel_AdminLog_CanDeleteMessages: String { return self._s[4311]! } + public var Conversation_DiscardVoiceMessageTitle: String { return self._s[4312]! } + public var Channel_JoinChannel: String { return self._s[4313]! } + public var Watch_UserInfo_Unblock: String { return self._s[4314]! } + public var PhoneLabel_Title: String { return self._s[4315]! } + public var Group_Setup_HistoryHiddenHelp: String { return self._s[4317]! } + public var Privacy_ProfilePhoto_AlwaysShareWith_Title: String { return self._s[4318]! } public func Login_PhoneGenericEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String, _ _6: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4318]!, self._r[4318]!, [_1, _2, _3, _4, _5, _6]) + return formatWithArgumentRanges(self._s[4319]!, self._r[4319]!, [_1, _2, _3, _4, _5, _6]) } - public var Wallet_Month_GenOctober: String { return self._s[4319]! } - public var Channel_AddBotErrorHaveRights: String { return self._s[4320]! } - public var ChatList_TabIconFoldersTooltipNonEmptyFolders: String { return self._s[4321]! } - public var DialogList_EncryptionProcessing: String { return self._s[4322]! } - public var ChatList_Search_FilterChats: String { return self._s[4323]! } - public var WatchRemote_NotificationText: String { return self._s[4324]! } - public var EditTheme_ChangeColors: String { return self._s[4325]! } - public var GroupRemoved_ViewUserInfo: String { return self._s[4326]! } - public var Wallet_TransactionInfo_RecipientHeader: String { return self._s[4327]! } - public var CallSettings_OnMobile: String { return self._s[4329]! } - public var Month_ShortFebruary: String { return self._s[4331]! } - public var VoiceOver_MessageContextReply: String { return self._s[4332]! } + public var Wallet_Month_GenOctober: String { return self._s[4320]! } + public var Channel_AddBotErrorHaveRights: String { return self._s[4321]! } + public var ChatList_TabIconFoldersTooltipNonEmptyFolders: String { return self._s[4322]! } + public var DialogList_EncryptionProcessing: String { return self._s[4323]! } + public var ChatList_Search_FilterChats: String { return self._s[4324]! } + public var WatchRemote_NotificationText: String { return self._s[4325]! } + public var EditTheme_ChangeColors: String { return self._s[4326]! } + public var GroupRemoved_ViewUserInfo: String { return self._s[4327]! } + public var Wallet_TransactionInfo_RecipientHeader: String { return self._s[4328]! } + public var CallSettings_OnMobile: String { return self._s[4330]! } + public var Month_ShortFebruary: String { return self._s[4332]! } + public var VoiceOver_MessageContextReply: String { return self._s[4333]! } public func PUSH_VIDEO_CALL_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4333]!, self._r[4333]!, [_1]) + return formatWithArgumentRanges(self._s[4334]!, self._r[4334]!, [_1]) } - public var Group_Location_ChangeLocation: String { return self._s[4334]! } - public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[4335]! } - public var Wallet_Send_EncryptComment: String { return self._s[4336]! } - public var VoiceOver_Media_PlaybackStop: String { return self._s[4337]! } - public var SettingsSearch_Synonyms_Data_SaveIncomingPhotos: String { return self._s[4338]! } + public var Group_Location_ChangeLocation: String { return self._s[4335]! } + public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[4336]! } + public var Wallet_Send_EncryptComment: String { return self._s[4337]! } + public var VoiceOver_Media_PlaybackStop: String { return self._s[4338]! } + public var SettingsSearch_Synonyms_Data_SaveIncomingPhotos: String { return self._s[4339]! } public func Channel_AdminLog_MessageRestrictedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4340]!, self._r[4340]!, [_0]) + return formatWithArgumentRanges(self._s[4341]!, self._r[4341]!, [_0]) } - public var PhotoEditor_WarmthTool: String { return self._s[4341]! } - public var Login_InfoAvatarPhoto: String { return self._s[4342]! } - public var Notification_Exceptions_NewException_MessagePreviewHeader: String { return self._s[4343]! } - public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[4344]! } - public var Map_PlacesInThisArea: String { return self._s[4345]! } - public var VoiceOver_Chat_ContactEmail: String { return self._s[4346]! } - public var Notifications_InAppNotificationsSounds: String { return self._s[4347]! } + public var PhotoEditor_WarmthTool: String { return self._s[4342]! } + public var Login_InfoAvatarPhoto: String { return self._s[4343]! } + public var Notification_Exceptions_NewException_MessagePreviewHeader: String { return self._s[4344]! } + public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[4345]! } + public var Map_PlacesInThisArea: String { return self._s[4346]! } + public var VoiceOver_Chat_ContactEmail: String { return self._s[4347]! } + public var Notifications_InAppNotificationsSounds: String { return self._s[4348]! } public func PUSH_PINNED_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4348]!, self._r[4348]!, [_1]) + return formatWithArgumentRanges(self._s[4349]!, self._r[4349]!, [_1]) } - public var ShareMenu_Send: String { return self._s[4349]! } - public var Username_InvalidStartsWithNumber: String { return self._s[4350]! } - public var Appearance_AppIconClassicX: String { return self._s[4351]! } + public var ShareMenu_Send: String { return self._s[4350]! } + public var Username_InvalidStartsWithNumber: String { return self._s[4351]! } + public var Appearance_AppIconClassicX: String { return self._s[4352]! } public func PUSH_CHANNEL_MESSAGE_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4352]!, self._r[4352]!, [_1]) + return formatWithArgumentRanges(self._s[4353]!, self._r[4353]!, [_1]) } - public var Conversation_StopPoll: String { return self._s[4353]! } - public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[4355]! } - public var Passport_Identity_EditIdentityCard: String { return self._s[4356]! } - public var Appearance_ThemePreview_ChatList_3_Name: String { return self._s[4357]! } - public var Wallet_WordCheck_Title: String { return self._s[4358]! } - public var Conversation_Timer_Title: String { return self._s[4359]! } - public var Common_Next: String { return self._s[4360]! } - public var Notification_Exceptions_NewException: String { return self._s[4361]! } + public var Conversation_StopPoll: String { return self._s[4354]! } + public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[4356]! } + public var Passport_Identity_EditIdentityCard: String { return self._s[4357]! } + public var Appearance_ThemePreview_ChatList_3_Name: String { return self._s[4358]! } + public var Wallet_WordCheck_Title: String { return self._s[4359]! } + public var Conversation_Timer_Title: String { return self._s[4360]! } + public var Common_Next: String { return self._s[4361]! } + public var Notification_Exceptions_NewException: String { return self._s[4362]! } public func Generic_OpenHiddenLinkAlert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4362]!, self._r[4362]!, [_0]) + return formatWithArgumentRanges(self._s[4363]!, self._r[4363]!, [_0]) } - public var AccessDenied_CallMicrophone: String { return self._s[4363]! } - public var SettingsSearch_Synonyms_Data_AutoDownloadUsingCellular: String { return self._s[4364]! } - public var ChangePhoneNumberCode_Help: String { return self._s[4365]! } - public var Passport_Identity_OneOfTypeIdentityCard: String { return self._s[4366]! } - public var Channel_AdminLogFilter_EventsLeaving: String { return self._s[4367]! } - public var BlockedUsers_LeavePrefix: String { return self._s[4368]! } + public var AccessDenied_CallMicrophone: String { return self._s[4364]! } + public var SettingsSearch_Synonyms_Data_AutoDownloadUsingCellular: String { return self._s[4365]! } + public var ChangePhoneNumberCode_Help: String { return self._s[4366]! } + public var Passport_Identity_OneOfTypeIdentityCard: String { return self._s[4367]! } + public var Channel_AdminLogFilter_EventsLeaving: String { return self._s[4368]! } + public var BlockedUsers_LeavePrefix: String { return self._s[4369]! } public func Passport_RequestHeader(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4369]!, self._r[4369]!, [_0]) + return formatWithArgumentRanges(self._s[4370]!, self._r[4370]!, [_0]) } - public var Group_About_Help: String { return self._s[4370]! } - public var TwoStepAuth_ChangePasswordDescription: String { return self._s[4371]! } - public var Tour_Title3: String { return self._s[4372]! } - public var Watch_Conversation_Unblock: String { return self._s[4373]! } - public var Watch_UserInfo_Block: String { return self._s[4374]! } - public var Notifications_ChannelNotificationsAlert: String { return self._s[4375]! } - public var TwoFactorSetup_Hint_Action: String { return self._s[4376]! } - public var IntentsSettings_SuggestedChatsInfo: String { return self._s[4377]! } - public var Wallet_Alert_Cancel: String { return self._s[4378]! } - public var TextFormat_AddLinkTitle: String { return self._s[4379]! } - public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[4380]! } - public var TwoStepAuth_EnterPasswordTitle: String { return self._s[4381]! } - public var FastTwoStepSetup_PasswordSection: String { return self._s[4382]! } - public var Compose_ChannelMembers: String { return self._s[4383]! } - public var Conversation_ForwardTitle: String { return self._s[4384]! } + public var Group_About_Help: String { return self._s[4371]! } + public var TwoStepAuth_ChangePasswordDescription: String { return self._s[4372]! } + public var Tour_Title3: String { return self._s[4373]! } + public var Watch_Conversation_Unblock: String { return self._s[4374]! } + public var Watch_UserInfo_Block: String { return self._s[4375]! } + public var Notifications_ChannelNotificationsAlert: String { return self._s[4376]! } + public var TwoFactorSetup_Hint_Action: String { return self._s[4377]! } + public var IntentsSettings_SuggestedChatsInfo: String { return self._s[4378]! } + public var Wallet_Alert_Cancel: String { return self._s[4379]! } + public var TextFormat_AddLinkTitle: String { return self._s[4380]! } + public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[4381]! } + public var TwoStepAuth_EnterPasswordTitle: String { return self._s[4382]! } + public var FastTwoStepSetup_PasswordSection: String { return self._s[4383]! } + public var Compose_ChannelMembers: String { return self._s[4384]! } + public var Conversation_ForwardTitle: String { return self._s[4385]! } public func Wallet_Updated_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4385]!, self._r[4385]!, [_0]) + return formatWithArgumentRanges(self._s[4386]!, self._r[4386]!, [_0]) } - public var Conversation_PinnedPoll: String { return self._s[4387]! } + public var Conversation_PinnedPoll: String { return self._s[4388]! } public func VoiceOver_Chat_AnonymousPollFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4388]!, self._r[4388]!, [_0]) + return formatWithArgumentRanges(self._s[4389]!, self._r[4389]!, [_0]) } - public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[4389]! } - public var Conversation_ContextMenuStickerPackAdd: String { return self._s[4390]! } - public var Stats_Overview: String { return self._s[4391]! } - public var Map_HomeAndWorkTitle: String { return self._s[4392]! } - public var Wallet_Intro_Terms: String { return self._s[4393]! } + public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[4390]! } + public var Conversation_ContextMenuStickerPackAdd: String { return self._s[4391]! } + public var Stats_Overview: String { return self._s[4392]! } + public var Map_HomeAndWorkTitle: String { return self._s[4393]! } + public var Wallet_Intro_Terms: String { return self._s[4394]! } public func Time_PreciseDate_m4(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4394]!, self._r[4394]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4395]!, self._r[4395]!, [_1, _2, _3]) } - public var Passport_Address_CityPlaceholder: String { return self._s[4395]! } - public var InfoPlist_NSLocationAlwaysAndWhenInUseUsageDescription: String { return self._s[4396]! } - public var Privacy_PhoneNumber: String { return self._s[4397]! } - public var ChatList_Search_FilterFiles: String { return self._s[4398]! } - public var ChatList_DeleteForEveryoneConfirmationAction: String { return self._s[4399]! } - public var ChannelIntro_CreateChannel: String { return self._s[4400]! } - public var Conversation_InputTextAnonymousPlaceholder: String { return self._s[4401]! } + public var Passport_Address_CityPlaceholder: String { return self._s[4396]! } + public var InfoPlist_NSLocationAlwaysAndWhenInUseUsageDescription: String { return self._s[4397]! } + public var Privacy_PhoneNumber: String { return self._s[4398]! } + public var ChatList_Search_FilterFiles: String { return self._s[4399]! } + public var ChatList_DeleteForEveryoneConfirmationAction: String { return self._s[4400]! } + public var ChannelIntro_CreateChannel: String { return self._s[4401]! } + public var Conversation_InputTextAnonymousPlaceholder: String { return self._s[4402]! } public func Login_EmailCodeBody(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4402]!, self._r[4402]!, [_0]) + return formatWithArgumentRanges(self._s[4403]!, self._r[4403]!, [_0]) } - public var Weekday_ShortMonday: String { return self._s[4403]! } - public var Passport_Language_ar: String { return self._s[4405]! } - public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[4406]! } - public var TwoFactorSetup_Done_Title: String { return self._s[4407]! } - public var Calls_RatingFeedback: String { return self._s[4408]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsPreview: String { return self._s[4409]! } - public var AutoDownloadSettings_ResetSettings: String { return self._s[4412]! } - public var Watch_Compose_Send: String { return self._s[4413]! } - public var PasscodeSettings_ChangePasscode: String { return self._s[4414]! } - public var WebSearch_RecentSectionClear: String { return self._s[4415]! } + public var Weekday_ShortMonday: String { return self._s[4404]! } + public var Passport_Language_ar: String { return self._s[4406]! } + public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[4407]! } + public var TwoFactorSetup_Done_Title: String { return self._s[4408]! } + public var Calls_RatingFeedback: String { return self._s[4409]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsPreview: String { return self._s[4410]! } + public var AutoDownloadSettings_ResetSettings: String { return self._s[4413]! } + public var Watch_Compose_Send: String { return self._s[4414]! } + public var PasscodeSettings_ChangePasscode: String { return self._s[4415]! } + public var WebSearch_RecentSectionClear: String { return self._s[4416]! } public func Contacts_AccessDeniedHelpPortrait(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4416]!, self._r[4416]!, [_0]) + return formatWithArgumentRanges(self._s[4417]!, self._r[4417]!, [_0]) } - public var WallpaperSearch_ColorTeal: String { return self._s[4417]! } - public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[4418]! } - public var Permissions_ContactsTitle_v0: String { return self._s[4419]! } - public var Checkout_PasswordEntry_Pay: String { return self._s[4421]! } - public var Settings_SavedMessages: String { return self._s[4422]! } - public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[4423]! } - public var Month_ShortMarch: String { return self._s[4424]! } - public var Message_Location: String { return self._s[4425]! } + public var WallpaperSearch_ColorTeal: String { return self._s[4418]! } + public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[4419]! } + public var Permissions_ContactsTitle_v0: String { return self._s[4420]! } + public var Checkout_PasswordEntry_Pay: String { return self._s[4422]! } + public var Settings_SavedMessages: String { return self._s[4423]! } + public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[4424]! } + public var Month_ShortMarch: String { return self._s[4425]! } + public var Message_Location: String { return self._s[4426]! } public func PUSH_MESSAGE_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4426]!, self._r[4426]!, [_1]) + return formatWithArgumentRanges(self._s[4427]!, self._r[4427]!, [_1]) } public func Notification_CallTimeFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4427]!, self._r[4427]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4428]!, self._r[4428]!, [_1, _2]) } - public var VoiceOver_Chat_VoiceMessage: String { return self._s[4429]! } + public var VoiceOver_Chat_VoiceMessage: String { return self._s[4430]! } public func Channel_AdminLog_MessageChangedUnlinkedChannel(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4430]!, self._r[4430]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4431]!, self._r[4431]!, [_1, _2]) } - public var GroupPermission_NoSendMedia: String { return self._s[4431]! } - public var Conversation_ClousStorageInfo_Description2: String { return self._s[4432]! } - public var SharedMedia_CategoryDocs: String { return self._s[4433]! } - public var Appearance_RemoveThemeConfirmation: String { return self._s[4434]! } - public var Paint_Framed: String { return self._s[4435]! } - public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[4436]! } - public var Passport_Identity_DoesNotExpire: String { return self._s[4437]! } - public var Channel_SignMessages: String { return self._s[4438]! } - public var Contacts_AccessDeniedHelpON: String { return self._s[4439]! } - public var Conversation_ContextMenuStickerPackInfo: String { return self._s[4440]! } + public var GroupPermission_NoSendMedia: String { return self._s[4432]! } + public var Conversation_ClousStorageInfo_Description2: String { return self._s[4433]! } + public var SharedMedia_CategoryDocs: String { return self._s[4434]! } + public var Appearance_RemoveThemeConfirmation: String { return self._s[4435]! } + public var Paint_Framed: String { return self._s[4436]! } + public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[4437]! } + public var Passport_Identity_DoesNotExpire: String { return self._s[4438]! } + public var Channel_SignMessages: String { return self._s[4439]! } + public var Contacts_AccessDeniedHelpON: String { return self._s[4440]! } + public var Conversation_ContextMenuStickerPackInfo: String { return self._s[4441]! } public func PUSH_CHAT_LEFT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4441]!, self._r[4441]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4442]!, self._r[4442]!, [_1, _2]) } - public var GroupInfo_UpgradeButton: String { return self._s[4442]! } - public var Channel_EditAdmin_PermissionInviteMembers: String { return self._s[4443]! } - public var AutoDownloadSettings_Files: String { return self._s[4444]! } + public var GroupInfo_UpgradeButton: String { return self._s[4443]! } + public var Channel_EditAdmin_PermissionInviteMembers: String { return self._s[4444]! } + public var AutoDownloadSettings_Files: String { return self._s[4445]! } public func Notification_ChangedGroupName(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4445]!, self._r[4445]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4446]!, self._r[4446]!, [_0, _1]) } - public var Login_SendCodeViaSms: String { return self._s[4447]! } - public var Update_UpdateApp: String { return self._s[4448]! } - public var Channel_Setup_TypePublic: String { return self._s[4449]! } - public var Watch_Compose_CreateMessage: String { return self._s[4450]! } + public var Login_SendCodeViaSms: String { return self._s[4448]! } + public var Update_UpdateApp: String { return self._s[4449]! } + public var Channel_Setup_TypePublic: String { return self._s[4450]! } + public var Watch_Compose_CreateMessage: String { return self._s[4451]! } public func PUSH_CHAT_MESSAGE_VIDEOS(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4451]!, self._r[4451]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4452]!, self._r[4452]!, [_1, _2, _3]) } - public var StickerPacksSettings_ManagingHelp: String { return self._s[4452]! } + public var StickerPacksSettings_ManagingHelp: String { return self._s[4453]! } public func Wallet_Time_PreciseDate_m12(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4453]!, self._r[4453]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4454]!, self._r[4454]!, [_1, _2, _3]) } - public var VoiceOver_Chat_Video: String { return self._s[4454]! } - public var Forward_ChannelReadOnly: String { return self._s[4455]! } - public var StickerPack_HideStickers: String { return self._s[4456]! } - public var ChatListFolder_NameContacts: String { return self._s[4457]! } - public var Profile_BotInfo: String { return self._s[4458]! } - public var Document_TargetConfirmationFormat: String { return self._s[4459]! } - public var GroupInfo_InviteByLink: String { return self._s[4460]! } - public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[4461]! } - public var Watch_Stickers_RecentPlaceholder: String { return self._s[4462]! } - public var Broadcast_AdminLog_EmptyText: String { return self._s[4463]! } - public var Passport_NotLoggedInMessage: String { return self._s[4464]! } - public var Conversation_StopQuizConfirmation: String { return self._s[4465]! } - public var Checkout_PaymentMethod: String { return self._s[4466]! } - public var ChatList_ArchivedChatsTitle: String { return self._s[4470]! } - public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[4471]! } - public var VoiceOver_Chat_RecordPreviewVoiceMessage: String { return self._s[4472]! } - public var PrivacyLastSeenSettings_GroupsAndChannelsHelp: String { return self._s[4473]! } - public var SettingsSearch_Synonyms_Privacy_Data_ContactsReset: String { return self._s[4474]! } - public var Camera_Title: String { return self._s[4475]! } - public var Map_Directions: String { return self._s[4476]! } - public var Wallet_Intro_ImportExisting: String { return self._s[4477]! } - public var Stats_MessagePublicForwardsTitle: String { return self._s[4478]! } - public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[4480]! } - public var Profile_EncryptionKey: String { return self._s[4481]! } + public var VoiceOver_Chat_Video: String { return self._s[4455]! } + public var Forward_ChannelReadOnly: String { return self._s[4456]! } + public var StickerPack_HideStickers: String { return self._s[4457]! } + public var ChatListFolder_NameContacts: String { return self._s[4458]! } + public var Profile_BotInfo: String { return self._s[4459]! } + public var Document_TargetConfirmationFormat: String { return self._s[4460]! } + public var GroupInfo_InviteByLink: String { return self._s[4461]! } + public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[4462]! } + public var Watch_Stickers_RecentPlaceholder: String { return self._s[4463]! } + public var Broadcast_AdminLog_EmptyText: String { return self._s[4464]! } + public var Passport_NotLoggedInMessage: String { return self._s[4465]! } + public var Conversation_StopQuizConfirmation: String { return self._s[4466]! } + public var Checkout_PaymentMethod: String { return self._s[4467]! } + public var ChatList_ArchivedChatsTitle: String { return self._s[4471]! } + public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[4472]! } + public var VoiceOver_Chat_RecordPreviewVoiceMessage: String { return self._s[4473]! } + public var PrivacyLastSeenSettings_GroupsAndChannelsHelp: String { return self._s[4474]! } + public var SettingsSearch_Synonyms_Privacy_Data_ContactsReset: String { return self._s[4475]! } + public var Camera_Title: String { return self._s[4476]! } + public var Map_Directions: String { return self._s[4477]! } + public var Wallet_Intro_ImportExisting: String { return self._s[4478]! } + public var Stats_MessagePublicForwardsTitle: String { return self._s[4479]! } + public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[4481]! } + public var Profile_EncryptionKey: String { return self._s[4482]! } public func LOCAL_CHAT_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4482]!, self._r[4482]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[4483]!, self._r[4483]!, [_1, "\(_2)"]) } public func Compatibility_SecretMediaVersionTooLow(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4483]!, self._r[4483]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4484]!, self._r[4484]!, [_0, _1]) } - public var Passport_Identity_TypePassport: String { return self._s[4484]! } - public var CreatePoll_QuizOptionsHeader: String { return self._s[4486]! } - public var Common_No: String { return self._s[4487]! } - public var Conversation_SendMessage_ScheduleMessage: String { return self._s[4488]! } - public var SettingsSearch_Synonyms_Privacy_LastSeen: String { return self._s[4489]! } - public var Settings_AboutEmpty: String { return self._s[4490]! } - public var TwoStepAuth_FloodError: String { return self._s[4492]! } - public var SettingsSearch_Synonyms_Appearance_TextSize: String { return self._s[4493]! } + public var Passport_Identity_TypePassport: String { return self._s[4485]! } + public var CreatePoll_QuizOptionsHeader: String { return self._s[4487]! } + public var Common_No: String { return self._s[4488]! } + public var Conversation_SendMessage_ScheduleMessage: String { return self._s[4489]! } + public var SettingsSearch_Synonyms_Privacy_LastSeen: String { return self._s[4490]! } + public var Settings_AboutEmpty: String { return self._s[4491]! } + public var TwoStepAuth_FloodError: String { return self._s[4493]! } + public var SettingsSearch_Synonyms_Appearance_TextSize: String { return self._s[4494]! } public func Channel_AdminLog_MessageUnkickedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4495]!, self._r[4495]!, [_1]) + return formatWithArgumentRanges(self._s[4496]!, self._r[4496]!, [_1]) } - public var Conversation_Edit: String { return self._s[4498]! } - public var CheckoutInfo_SaveInfo: String { return self._s[4499]! } - public var VoiceOver_Chat_AnonymousPoll: String { return self._s[4500]! } - public var Call_CameraTooltip: String { return self._s[4502]! } - public var InstantPage_FeedbackButtonShort: String { return self._s[4503]! } - public var Contacts_InviteToTelegram: String { return self._s[4504]! } - public var Wallet_WordImport_CanNotRemember: String { return self._s[4505]! } - public var Notifications_ResetAllNotifications: String { return self._s[4506]! } - public var Calls_NewCall: String { return self._s[4507]! } - public var VoiceOver_Chat_Music: String { return self._s[4510]! } - public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[4511]! } - public var Channel_Edit_AboutItem: String { return self._s[4512]! } - public var Message_VideoExpired: String { return self._s[4513]! } - public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[4514]! } + public var Conversation_Edit: String { return self._s[4499]! } + public var CheckoutInfo_SaveInfo: String { return self._s[4500]! } + public var VoiceOver_Chat_AnonymousPoll: String { return self._s[4501]! } + public var Call_CameraTooltip: String { return self._s[4503]! } + public var InstantPage_FeedbackButtonShort: String { return self._s[4504]! } + public var Contacts_InviteToTelegram: String { return self._s[4505]! } + public var Wallet_WordImport_CanNotRemember: String { return self._s[4506]! } + public var Notifications_ResetAllNotifications: String { return self._s[4507]! } + public var Calls_NewCall: String { return self._s[4508]! } + public var VoiceOver_Chat_Music: String { return self._s[4511]! } + public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[4512]! } + public var Channel_Edit_AboutItem: String { return self._s[4513]! } + public var Message_VideoExpired: String { return self._s[4514]! } + public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[4515]! } public func PUSH_CHAT_RETURNED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4515]!, self._r[4515]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4516]!, self._r[4516]!, [_1, _2]) } - public var NotificationsSound_Input: String { return self._s[4517]! } - public var Notifications_ClassicTones: String { return self._s[4518]! } - public var Conversation_StatusTyping: String { return self._s[4519]! } - public var Checkout_ErrorProviderAccountInvalid: String { return self._s[4520]! } - public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[4521]! } - public var Wallet_Month_ShortSeptember: String { return self._s[4522]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[4523]! } - public var Conversation_MessageLeaveComment: String { return self._s[4524]! } - public var UserInfo_TapToCall: String { return self._s[4525]! } - public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[4526]! } - public var Conversation_ClearAll: String { return self._s[4528]! } - public var UserInfo_NotificationsDefault: String { return self._s[4529]! } - public var Wallet_Send_OwnAddressAlertText: String { return self._s[4530]! } - public var Map_ChooseAPlace: String { return self._s[4531]! } + public var NotificationsSound_Input: String { return self._s[4518]! } + public var Notifications_ClassicTones: String { return self._s[4519]! } + public var Conversation_StatusTyping: String { return self._s[4520]! } + public var Checkout_ErrorProviderAccountInvalid: String { return self._s[4521]! } + public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[4522]! } + public var Wallet_Month_ShortSeptember: String { return self._s[4523]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[4524]! } + public var Conversation_MessageLeaveComment: String { return self._s[4525]! } + public var UserInfo_TapToCall: String { return self._s[4526]! } + public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[4527]! } + public var Conversation_ClearAll: String { return self._s[4529]! } + public var UserInfo_NotificationsDefault: String { return self._s[4530]! } + public var Wallet_Send_OwnAddressAlertText: String { return self._s[4531]! } + public var Map_ChooseAPlace: String { return self._s[4532]! } public func Wallet_Receive_ShareInvoiceUrlInfo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4532]!, self._r[4532]!, [_0]) + return formatWithArgumentRanges(self._s[4533]!, self._r[4533]!, [_0]) } - public var GroupInfo_AddParticipantTitle: String { return self._s[4533]! } - public var ChatList_PeerTypeNonContact: String { return self._s[4534]! } - public var Conversation_SlideToCancel: String { return self._s[4535]! } - public var Month_ShortJuly: String { return self._s[4536]! } - public var SocksProxySetup_ProxyType: String { return self._s[4537]! } + public var GroupInfo_AddParticipantTitle: String { return self._s[4534]! } + public var ChatList_PeerTypeNonContact: String { return self._s[4535]! } + public var Conversation_SlideToCancel: String { return self._s[4536]! } + public var Month_ShortJuly: String { return self._s[4537]! } + public var SocksProxySetup_ProxyType: String { return self._s[4538]! } public func ChatList_DeleteChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4538]!, self._r[4538]!, [_0]) + return formatWithArgumentRanges(self._s[4539]!, self._r[4539]!, [_0]) } - public var ChatList_EditFolders: String { return self._s[4539]! } - public var TwoStepAuth_SetPasswordHelp: String { return self._s[4540]! } - public var Wallet_Send_ConfirmationConfirm: String { return self._s[4542]! } - public var Wallet_Created_ExportErrorTitle: String { return self._s[4543]! } + public var ChatList_EditFolders: String { return self._s[4540]! } + public var TwoStepAuth_SetPasswordHelp: String { return self._s[4541]! } + public var Wallet_Send_ConfirmationConfirm: String { return self._s[4543]! } + public var Wallet_Created_ExportErrorTitle: String { return self._s[4544]! } public func GroupPermission_ApplyAlertText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4544]!, self._r[4544]!, [_0]) + return formatWithArgumentRanges(self._s[4545]!, self._r[4545]!, [_0]) } - public var Permissions_PeopleNearbyTitle_v0: String { return self._s[4545]! } - public var ScheduledMessages_RemindersTitle: String { return self._s[4546]! } - public var Your_cards_expiration_year_is_invalid: String { return self._s[4547]! } - public var Wallet_Info_TransactionPendingHeader: String { return self._s[4549]! } - public var UserInfo_ShareMyContactInfo: String { return self._s[4550]! } - public var Passport_DeleteAddress: String { return self._s[4552]! } - public var Passport_DeletePassportConfirmation: String { return self._s[4553]! } - public var Passport_Identity_ReverseSide: String { return self._s[4554]! } - public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[4555]! } - public var Login_InfoLastNamePlaceholder: String { return self._s[4556]! } - public var Passport_FieldAddress: String { return self._s[4557]! } - public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[4558]! } - public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[4560]! } - public var Map_Home: String { return self._s[4562]! } - public var PollResults_Title: String { return self._s[4563]! } - public var ArchivedChats_IntroText2: String { return self._s[4565]! } - public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[4566]! } - public var VoiceOver_Chat_ContactPhoneNumber: String { return self._s[4567]! } - public var CallFeedback_ReasonSilentRemote: String { return self._s[4569]! } - public var Passport_Identity_AddPersonalDetails: String { return self._s[4571]! } - public var Group_Info_AdminLog: String { return self._s[4573]! } - public var ChatSettings_AutoPlayTitle: String { return self._s[4574]! } - public var Appearance_Animations: String { return self._s[4575]! } - public var Appearance_TextSizeSetting: String { return self._s[4576]! } - public func MessageTimer_Weeks(_ value: Int32) -> String { + public var Permissions_PeopleNearbyTitle_v0: String { return self._s[4546]! } + public var ScheduledMessages_RemindersTitle: String { return self._s[4547]! } + public var Your_cards_expiration_year_is_invalid: String { return self._s[4548]! } + public var Wallet_Info_TransactionPendingHeader: String { return self._s[4550]! } + public var UserInfo_ShareMyContactInfo: String { return self._s[4551]! } + public var Passport_DeleteAddress: String { return self._s[4553]! } + public var Passport_DeletePassportConfirmation: String { return self._s[4554]! } + public var Passport_Identity_ReverseSide: String { return self._s[4555]! } + public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[4556]! } + public var Login_InfoLastNamePlaceholder: String { return self._s[4557]! } + public var Passport_FieldAddress: String { return self._s[4558]! } + public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[4559]! } + public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[4561]! } + public var Map_Home: String { return self._s[4563]! } + public var PollResults_Title: String { return self._s[4564]! } + public var ArchivedChats_IntroText2: String { return self._s[4566]! } + public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[4567]! } + public var VoiceOver_Chat_ContactPhoneNumber: String { return self._s[4568]! } + public var CallFeedback_ReasonSilentRemote: String { return self._s[4570]! } + public var Passport_Identity_AddPersonalDetails: String { return self._s[4572]! } + public var Group_Info_AdminLog: String { return self._s[4574]! } + public var ChatSettings_AutoPlayTitle: String { return self._s[4575]! } + public var Appearance_Animations: String { return self._s[4576]! } + public var Appearance_TextSizeSetting: String { return self._s[4577]! } + public func ForwardedPhotos(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, stringValue) } - public func GroupInfo_ShowMoreMembers(_ value: Int32) -> String { + public func SharedMedia_Video(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, stringValue) } - public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { + public func Stats_GroupTopAdminDeletions(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, stringValue) } - public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { + public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, stringValue) } - public func Contacts_InviteContacts(_ value: Int32) -> String { + public func Conversation_TitleReplies(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, stringValue) } - public func ChatList_DeleteConfirmation(_ value: Int32) -> String { + public func Map_ETAMinutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, stringValue) } - public func StickerPack_AddStickerCount(_ value: Int32) -> String { + public func Conversation_StatusOnline(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, stringValue) } - public func Stats_GroupTopInviterInvites(_ value: Int32) -> String { + public func Call_ShortMinutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, stringValue) } - public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { + public func Stats_GroupShowMoreTopPosters(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, stringValue) } - public func AttachmentMenu_SendVideo(_ value: Int32) -> String { + public func ChatList_MessageVideos(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedStickers(_ value: Int32) -> String { + public func Stats_GroupShowMoreTopAdmins(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue) } - public func SharedMedia_Generic(_ value: Int32) -> String { + public func OldChannels_InactiveYear(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) } - public func Stats_GroupTopPosterMessages(_ value: Int32) -> String { + public func Map_ETAHours(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_Minutes(_ value: Int32) -> String { + public func Stats_MessageViews(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notification_GameScoreSimple(_ value: Int32) -> String { + public func ChatList_DeleteConfirmation(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, stringValue) } - public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { + public func Conversation_MessageViewComments(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, stringValue) } - public func VoiceOver_Chat_ContactPhoneNumberCount(_ value: Int32) -> String { + public func Call_ShortSeconds(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, _1, _2) + public func OldChannels_GroupFormat(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, stringValue) } - public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { + public func Contacts_InviteContacts(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func UserCount(_ value: Int32) -> String { + public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatListFilter_ShowMoreChats(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PeopleNearby_ShowMorePeople(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Map_ETAMinutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupShowMoreTopAdmins(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_Minutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) - } - public func QuickSend_Photos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Months(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteFor_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedLocations(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_TitleComments(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_ContextViewReplies(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_SelectedMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusMembers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_Search_Messages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceOver_Chat_PollOptionCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_StickerCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Wallet_Updated_HoursAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func AttachmentMenu_SendGif(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Map_ETAHours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_ShortSeconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_InactiveWeek(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_UserInfo_Mute(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedContacts(_ value: Int32) -> String { - let form = getPluralizationForm(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 = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Theme_UsersCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) - } - public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_TitleReplies(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_SelectedChats(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Years(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Link(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_MessageForwards(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_MessagePhotos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceOver_Chat_PollVotes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedPolls(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedPhotos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Conversation_StatusOnline(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(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 = getPluralizationForm(self.lc, selector) - return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func MuteExpires_Minutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_SharePhoto(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_MessageVideos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Notifications_Exceptions(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, _0, _1) - } - public func Stats_MessageViews(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupTopPosterChars(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortMinutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_ShareVideo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceOver_Chat_ContactEmailCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Stats_GroupShowMoreTopInviters(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LastSeen_HoursAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue) - } - public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PollResults_ShowMore(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Photo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func MuteExpires_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedGifs(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteFor_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Invitation_Members(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupTopAdminDeletions(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortHours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Wallet_Updated_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_ShareItem(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func MessageTimer_Seconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_Seconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Video(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedVideos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_File(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupShowMoreTopPosters(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[108 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedAudios(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[109 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortSeconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[110 * 6 + Int(form.rawValue)]!, stringValue) - } - public func InstantPage_Views(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[111 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupTopAdminKicks(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[112 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[113 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[114 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[115 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[116 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteExpires_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[117 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_GroupFormat(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[118 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Contacts_ImportersCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[119 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendItem(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[120 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[121 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedVideoMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[122 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessagePoll_QuizCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[123 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Passport_Scans(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[124 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_Leave(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[125 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_ShortMinutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[126 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[127 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func OldChannels_InactiveYear(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[128 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[129 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusSubscribers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[130 * 6 + Int(form.rawValue)]!, stringValue) - } - public func InviteText_ContactsCountText(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[131 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_AddMaskCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[132 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[133 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessagePoll_VotedCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[134 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortWeeks(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[135 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[136 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedFiles(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[137 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[138 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, stringValue) } public func OldChannels_InactiveMonth(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[139 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue) } - public func ChatList_DeletedChats(_ value: Int32) -> String { + public func MessageTimer_ShortSeconds(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[140 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_MessageViewComments(_ value: Int32) -> String { + public func ForwardedGifs(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[141 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { + public func MessageTimer_Hours(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[142 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func SharedMedia_Link(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupTopPosterMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedAudios(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) } public func GroupInfo_ParticipantCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[143 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) } - public func Stats_GroupTopAdminBans(_ value: Int32) -> String { + public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func ForwardedVideos(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[144 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusSubscribers(_ value: Int32) -> String { + let form = getPluralizationForm(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 = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupTopAdminKicks(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_AddStickerCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_ContactPhoneNumberCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PollResults_ShowMore(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Photo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_SharePhoto(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_MessageForwards(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) } public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[145 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendGif(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupShowMoreTopInviters(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, _0, _1) + } + public func Media_ShareItem(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedStickers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_Search_Messages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_UserInfo_Mute(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Contacts_ImportersCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_SelectedMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) + } + public func GroupInfo_ShowMoreMembers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_Exceptions(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendVideo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_MessagePhotos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_Leave(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_File(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Theme_UsersCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func ForwardedVideoMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func VoiceOver_Chat_PollVotes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedLocations(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Seconds(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func Passport_Scans(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func MessageTimer_ShortWeeks(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupTopAdminBans(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedContacts(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteFor_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_TitleComments(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_SelectedChats(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_StickerCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Generic(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Wallet_Updated_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Wallet_Updated_HoursAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortMinutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupTopInviterInvites(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusMembers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_AddMaskCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteFor_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LastSeen_HoursAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessagePoll_VotedCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[108 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[109 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[110 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Weeks(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[111 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[112 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendItem(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[113 * 6 + Int(form.rawValue)]!, stringValue) + } + public func QuickSend_Photos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[114 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedPolls(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[115 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Invitation_Members(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[116 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[117 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func MessageTimer_Months(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[118 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[119 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_ContextViewReplies(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[120 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_PollOptionCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[121 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatListFilter_ShowMoreChats(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[122 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[123 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[124 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_DeletedChats(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[125 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[126 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func MessageTimer_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[127 * 6 + Int(form.rawValue)]!, stringValue) + } + public func InstantPage_Views(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[128 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_ContactEmailCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[129 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[130 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[131 * 6 + Int(form.rawValue)]!, stringValue) + } + public func UserCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[132 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[133 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func OldChannels_InactiveWeek(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[134 * 6 + Int(form.rawValue)]!, stringValue) } public func MessageTimer_ShortDays(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[135 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PeopleNearby_ShowMorePeople(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[136 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupTopPosterChars(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[137 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Years(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[138 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[139 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func ForwardedFiles(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[140 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessagePoll_QuizCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[141 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortHours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[142 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[143 * 6 + Int(form.rawValue)]!, stringValue) + } + public func InviteText_ContactsCountText(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[144 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_Seconds(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[145 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedMessages(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[146 * 6 + Int(form.rawValue)]!, stringValue) diff --git a/submodules/TelegramUI/Resources/PresentationStrings.mapping b/submodules/TelegramUI/Resources/PresentationStrings.mapping index d5ec1f5bd896871d267468b9196bd74250ec70b6..d941da328b653f2b2723377ee1444a538988f82c 100644 GIT binary patch delta 5522 zcmZ8l3wV^}m7edEKleZ;lVp;a+)03tWRgIxKmtSVko!zRAYAe%^8+KvOfoa!A}XTT zqFpWWt4CLNk-AT}YiosewYyd1VjnG9Zmp}XmD}p7-4%iLv2M53?)&{SNon&W&*VGb z`OkO0bKdiw^UuepWBH9(@#S7|pAaty`n*UK=!buvYVFj5L3NAP?^Cy{-Z6D#Of%u< zXMD4W@|Bm8Or{EcV2;S;+J%%ZUgq9~G+#Leaf*KQUTc=reFduoe0KVMp{4g)faNBW80+CDK0Cfs+?D`n~bG%VxoUyOF;E# zj=m|M&+FSFm0sg}i>XAs&PR%AvG@glSWLNeI*HF66jm;KNPpZB%KPgrkeixELea@!2{G5Yg#lQ1Up(ozsw;hz1_Zw{D*VMDs@6$Te5pB%j z_J+baxQLA`y>3<}muMnJT;lpNs!}dPYS$eeTii;&XP3aUSCVw`7+fo(+2Sf6E29PC zKlr0Esudq_PB|?UAIhs`#WikKLqX}$fAVBG9RG-)D5pH}F~3v}|3Bd?$v`|Gt72C^w){!g~`%I)6|>c5##cR6&Kx|3I9nXV=){Tp|C2bo28heN##{ zUx^k9ADKh5cxn+P(-%p)vq$J@Q zJ^ryVsWS_YEYx2avht-$vMCCd`Fu4-WN=y)B~g@_@4hJJb9WWRDbd(WkJN-(Yv&mULOJW4R@2cAvkf@&B{G;^LRjM&BUhHA=C zW*bf)UYiluri~flonz*kZy^b1UWMV~cuFMk`D!W?=ErJiu97U>(64T>@X{KJ%d=pK z7@1lF{;3IvbHqOta!gxF!CoOJy(dz6cMVz7Q?ZVRuG>Eq2*Y`?3_=<|TZ7WF^7$Id z!NE6bXpxcuT^oPZ3voj&Zg0anpC6VbI$Vpa*?C7TQk4m@l`sDQM?7Cku}T)!^ZD>e znAxO=g!n#fyMLR(T-p3-Efpy_P{`Gf{yv2rbz~{X#WD>(H2TLU{6WouTJZU_u}*D# zL<<;2k!R)~76=>fsY8+G^Zj+8m;!|HC_K5GM^UlUxh&)}byQ6A%-s7Egm}Ux5-d)S z$2mIcpYj=0G9QP{)6IjK>~~TeZ&*Un_63m5h6An;iqO%$T?=gYYCB|Dig?cw#A6{J zT0&V=Z07P=B0a8BBB?}Pf{(^fDu1zrl9f`dtEXWU#YIbjb_cIoO4(Fq=IbSt8P|d` zHSSZ+2bO|;EBF^nsgM?#`N9oJdzX>y_+^y7VliyVI_~gq@%kLi;~@V=zek%UmCDHW z8co~gQFl3vLPyQxf9Z6!S)aU|9yLW26wlL^cfV_@%zhA zfJ?CBgm%4tZfU$yk5#^YwKbi!dNPX!-cb*}Ue1r!gSb}kiFy!~lRv4a5?X225AV0f zx;53PsYYJX0BMt%%kB}jM1wXR+smaxE&QDZAgz^OXaFs=@jDGvA=){1IoY#T;Xn!G zNZ)gG_(#={*YA_ht!5`wsKcxu`7$LL4CwZbYc2l3xEhk_=;D3LQE1&}-WwE!d|^3R zsK?B?1(X@zsd>Drw9y-hbnXhuQ~GdNx_+X?${SWtjN+1) zCB_UAYix76H+3|(7z8%NPdUNB>-o5oDrp0fH(=+amB`aZJd?#o(LOu3Xda`wyKuI= z?l87e@EJykOY?aoKnA?3YurGXihUW${t1s7(j4IrG;oMaBfMuN7;BWDS&4{w%zE#+ zbY6Z?C{ZqHTI0`FQi-w|7VHP7vf>s=;TCz`!QWX8QrpTSjqupZ_chX7y3Ncd5=093 z)CwgLp$n;_;a0Yd&o`nYkMVyu!rnM6q)Aq=a9I<`#E12KG~*QRYl4=a$D62FOz;y; zK-DClY(ne;{7DmLiy)^q11meYrWwMWys;UO*~JH%X|ZxU%#`Yr9d`bp8Es%Uf7ML& zi|>F`W~>q63aEc>+jl}Pv(TwdIGVfxZB(Y%2-sab-U8!$_>mU4v6oM@P`S8=Z?>R} z@8#rH+;<;WwNiz0A8cgH29e5lw}P3!#SgdAeCvLQc#!+s0LO>$e6dleN%<5%+pX;kxxBXBb!MC{~$#p^kFq%3~Qz*)ipy;0VXS?e~v`yhi>X z=aF{6^a*~joeGq{g>Ek2IE(AN*-pvgNxsxh4)GKxuA+415Oz}zzHT*6c^ZrP`h_QR z`LtFj%To086F+pSp|6g1OH(aIP-gmKqw=w-8V61@b5oz{c3RD z_sx9A5M}V4t0_+W6YpP5Wy-U#P|Sz>D230jMqqxx*H_a#<%bY2lau4Yj}&g}pj7c3 zZ|p#le#8%SP?qvM_Vf7Aiz1Crbs)w^jTVms`zasm1T6lAKkNi){VT_Hk&S+a?p%Q5 zmUU60@)DlP;S29$UHQ34!Wcf)h3Y@Xk9Og~~Fxd9sJB?Czzk>R)3W0~E<(Y4eX8P<#tA{F-FL?bCt?XYkL}^)`0W^~oPw z`ITNU>N{A@<;%~aV_%c&cd^cs(_IEH@27YJQtv^A=w*n^1YFx6G7fp)%ttD5hb?^= zGA{95eE`E{{<}UZoOcEKas&pIX=*_AjcN|3&l{#{qmHja!KP2vr195%WGS5kT{MXu zYQUp;Fvy4eK}ly&GP$;@0nKCd2FHNcqxp$1Zv=3^!AI93LbITfq4y4D8k{#x8qIEJ zr`IVGQcA9J3xRGLD}afTei8GD!BCweVDuk^GafgpD># zU%^DIWtE1r`aW@EPU2Q@ifQ8n>xs*@BCFlon&?CzERso=XYtN=>0({ zwBoOO%oCZQf)1l+gqvhCKkh;tEiC%sb_$;x#YZZ44O4EKoW7(tGm&cbZVp->TT2;~ zZsOhsVM%KRle$Lz0j+sw2;D~WWI#VvKfKv$bJ_5(bnDiLc6fc;>@uLK+%O`d_C&51 z%!J-wB*i)9@%n@EWmTFn9B%h*_B(piK*&4loxuBOqa5C{u`7Kv8fa&;%jIlscI80u z7uJkK26G{n`shX&=7MPCJp8zr#RrB+;bS8dpOJ@M>2f&zhU3Pg`TSiKR6m#Z52J_+ zIC&6xEadlGctf2B{dqI^O{$%bwd}#S)&df;qZ3hD0J)stIsujDofBv^K}Q5QMLgM0 z#kPgm{c9K+04?SlLu3^tylow2ic)^Y0}^yVJ55(>(`F$xWn8`iY*fxe0NbJpY{?kh za+UUwHohogeLU_Okf3-=U zJZ|A9)__WCc!3KOc&!Q4ZsFW&5ija^VifIS2@Ir5H=~SbF6B}cS6RkY9<=d#-oK8r zRyRZ(yA`J$nz~(Ej*Y*DksO&!m9r8$62&vOHO`;D zVk2J}rp##LEzs2zUJSH1HFvw3`T9D_vA5t+S&B1{Pfwn~RzB&bl$c13wek1X0SWC= zoz3Z#LatShji4p1=E5N$rGpbk(cL;ta;A#uY3p`(ySmVh6NDu?yz1uOQOd6DfrapZ zf({)4MlWPC17SWeD#7iaaC*=UR;s>W9}lku)42G^MoJNG-Zg+%seb6&z*4EPa_-Q4 zq2K`95oHXad2S3+gZj<~PWm4S>RSA#?BxKDx2GDOXH-lVm zix|7LTn&5Mc*2D*)yA-&%U9iGi$fS)-tmbsZJaN<@hh@DN*vxEI7fZ z*Wt^PNhnxlO=QWk3}7We-aCbAlykcy+?9enXNXcW<#Zx}Xhg(#0dYh^F=b%NnA5-E z+HTUFr!CRO_dLNJ-0s34zthBdgTkV(D2e7>YbYKQ@~3MM^xOGDKh4eD4XZMzGx3U` z4iUS94~^oxg**AiC}q-J;e#F;q$rHTK)+qw&HiCPZ!ce4PxI*>6VFaZvA3*ga^1_n z*+2^{`(Rl1b6K25K<|ryK3rwrl#MV4lkyuLKyyE@7(fx-5B&^2>?Ugz`c)wKfDt*_ zEQ8<1@J6=Ezk!Bqg)>!Yyg)w)i5vlL%_O3EyK(MAvb-{)jNE;P2Q~nL2l(^|%`JTx UkIYnDq?`{zCNVT~z%*g}KP9-*9{>OV delta 5415 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 ZX~pONxwF4{|oyDqkjMZ diff --git a/submodules/TelegramUI/Sources/ChatController.swift b/submodules/TelegramUI/Sources/ChatController.swift index a2a872e1d7..41e66add9f 100644 --- a/submodules/TelegramUI/Sources/ChatController.swift +++ b/submodules/TelegramUI/Sources/ChatController.swift @@ -289,6 +289,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G private var stickerSettingsDisposable: Disposable? private var applicationInForegroundDisposable: Disposable? + private var applicationInFocusDisposable: Disposable? private var checkedPeerChatServiceActions = false @@ -3071,6 +3072,17 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G } }) + if case let .peer(peerId) = chatLocation, peerId.namespace == Namespaces.Peer.SecretChat { + self.applicationInFocusDisposable = (context.sharedContext.applicationBindings.applicationIsActive + |> distinctUntilChanged + |> deliverOn(Queue.mainQueue())).start(next: { [weak self] value in + guard let strongSelf = self, strongSelf.isNodeLoaded else { + return + } + strongSelf.chatDisplayNode.updateIsBlurred(!value) + }) + } + self.canReadHistoryDisposable = (combineLatest(context.sharedContext.applicationBindings.applicationInForeground, self.canReadHistory.get()) |> map { a, b in return a && b } |> deliverOnMainQueue).start(next: { [weak self] value in @@ -3139,6 +3151,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G self.presentationDataDisposable?.dispose() self.searchDisposable?.dispose() self.applicationInForegroundDisposable?.dispose() + self.applicationInFocusDisposable?.dispose() self.canReadHistoryDisposable?.dispose() self.networkStateDisposable?.dispose() self.chatAdditionalDataDisposable.dispose() @@ -8461,7 +8474,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G }, error: { _ in let presentationData = context.sharedContext.currentPresentationData.with { $0 } - present(textAlertController(context: context, title: nil, text: presentationData.strings.Login_UnknownError, actions: [TextAlertAction(type: .defaultAction, title: presentationData.strings.Common_OK, action: {})]), nil) + present(textAlertController(context: context, title: nil, text: presentationData.strings.Channel_DiscussionMessageUnavailable, actions: [TextAlertAction(type: .defaultAction, title: presentationData.strings.Common_OK, action: {})]), nil) }) cancelImpl = { [weak statusController] in diff --git a/submodules/TelegramUI/Sources/ChatControllerNode.swift b/submodules/TelegramUI/Sources/ChatControllerNode.swift index 5dc4883acd..949e67c95d 100644 --- a/submodules/TelegramUI/Sources/ChatControllerNode.swift +++ b/submodules/TelegramUI/Sources/ChatControllerNode.swift @@ -14,6 +14,7 @@ import TelegramNotices import ReactionSelectionNode import TelegramUniversalVideoContent import ChatInterfaceState +import FastBlur final class VideoNavigationControllerDropContentItem: NavigationControllerDropContentItem { let itemNode: OverlayMediaItemNode @@ -309,6 +310,7 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate { let backgroundNode: WallpaperBackgroundNode let backgroundImageDisposable = MetaDisposable() let historyNode: ChatHistoryListNode + var blurredHistoryNode: ASImageNode? let reactionContainerNode: ReactionSelectionParentNode let historyNodeContainer: ASDisplayNode let loadingNode: ChatLoadingNode @@ -1220,6 +1222,9 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate { transition.updateFrame(node: self.historyNodeContainer, frame: contentBounds) transition.updateBounds(node: self.historyNode, bounds: CGRect(origin: CGPoint(), size: contentBounds.size)) transition.updatePosition(node: self.historyNode, position: CGPoint(x: contentBounds.size.width / 2.0, y: contentBounds.size.height / 2.0)) + if let blurredHistoryNode = self.blurredHistoryNode { + transition.updateFrame(node: blurredHistoryNode, frame: contentBounds) + } transition.updateFrame(node: self.loadingNode, frame: contentBounds) @@ -2933,4 +2938,39 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate { self.updateHasEmbeddedTitleContent?() } } + + func updateIsBlurred(_ isBlurred: Bool) { + if isBlurred { + if self.blurredHistoryNode == nil { + let unscaledSize = self.historyNode.frame.size + let image = generateImage(CGSize(width: floor(unscaledSize.width), height: floor(unscaledSize.height)), opaque: true, scale: 1.0, rotatedContext: { size, context in + context.clear(CGRect(origin: CGPoint(), size: size)) + + UIGraphicsPushContext(context) + + let backgroundFrame = self.backgroundNode.view.convert(self.backgroundNode.bounds, to: self.historyNode.supernode?.view) + self.backgroundNode.view.drawHierarchy(in: backgroundFrame, afterScreenUpdates: false) + + context.translateBy(x: size.width / 2.0, y: size.height / 2.0) + context.scaleBy(x: -1.0, y: -1.0) + context.translateBy(x: -size.width / 2.0, y: -size.height / 2.0) + + self.historyNode.view.drawHierarchy(in: CGRect(origin: CGPoint(), size: unscaledSize), afterScreenUpdates: false) + + UIGraphicsPopContext() + }).flatMap(applyScreenshotEffectToImage) + let blurredHistoryNode = ASImageNode() + blurredHistoryNode.image = image + blurredHistoryNode.frame = self.historyNode.frame + self.blurredHistoryNode = blurredHistoryNode + self.historyNode.supernode?.insertSubnode(blurredHistoryNode, aboveSubnode: self.historyNode) + } + } else { + if let blurredHistoryNode = self.blurredHistoryNode { + self.blurredHistoryNode = nil + blurredHistoryNode.removeFromSupernode() + } + } + self.historyNode.isHidden = isBlurred + } } diff --git a/submodules/TelegramUI/Sources/ChatHistoryEntriesForView.swift b/submodules/TelegramUI/Sources/ChatHistoryEntriesForView.swift index 289d664c53..04d74ba544 100644 --- a/submodules/TelegramUI/Sources/ChatHistoryEntriesForView.swift +++ b/submodules/TelegramUI/Sources/ChatHistoryEntriesForView.swift @@ -139,7 +139,7 @@ func chatHistoryEntriesForView(location: ChatLocation, view: MessageHistoryView, if case let .replyThread(replyThreadMessage) = location, view.earlierId == nil, !view.holeEarlier, !view.isLoading { loop: for entry in view.additionalData { switch entry { - case let .message(id, messages) where id == replyThreadMessage.messageId: + case let .message(id, messages) where id == replyThreadMessage.effectiveTopId: if !messages.isEmpty { let selection: ChatHistoryMessageSelection = .none diff --git a/submodules/TelegramUI/Sources/ChatHistoryListNode.swift b/submodules/TelegramUI/Sources/ChatHistoryListNode.swift index 34b1ffe06f..61122e1940 100644 --- a/submodules/TelegramUI/Sources/ChatHistoryListNode.swift +++ b/submodules/TelegramUI/Sources/ChatHistoryListNode.swift @@ -18,6 +18,12 @@ import ListMessageItem import AccountContext import ChatInterfaceState +extension ChatReplyThreadMessage { + var effectiveTopId: MessageId { + return self.channelMessageId ?? self.messageId + } +} + private class ChatHistoryListSelectionRecognizer: UIPanGestureRecognizer { private let selectionGestureActivationThreshold: CGFloat = 5.0 @@ -643,7 +649,7 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode { additionalData.append(.peer(replyThreadMessage.messageId.peerId)) } - additionalData.append(.message(replyThreadMessage.messageId)) + additionalData.append(.message(replyThreadMessage.effectiveTopId)) } let currentViewVersion = Atomic(value: nil) @@ -1216,7 +1222,7 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode { if hasUnconsumedMention && !hasUnconsumedContent { messageIdsWithUnseenPersonalMention.append(message.id) } - if case let .replyThread(replyThreadMessage) = self.chatLocation, replyThreadMessage.messageId == message.id { + if case let .replyThread(replyThreadMessage) = self.chatLocation, replyThreadMessage.effectiveTopId == message.id { isTopReplyThreadMessageShownValue = true } case let .MessageGroupEntry(_, messages, _): @@ -1246,7 +1252,7 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode { if hasUnconsumedMention && !hasUnconsumedContent { messageIdsWithUnseenPersonalMention.append(message.id) } - if case let .replyThread(replyThreadMessage) = self.chatLocation, replyThreadMessage.messageId == message.id { + if case let .replyThread(replyThreadMessage) = self.chatLocation, replyThreadMessage.effectiveTopId == message.id { isTopReplyThreadMessageShownValue = true } } diff --git a/submodules/TelegramUI/Sources/ChatInterfaceStateContextMenus.swift b/submodules/TelegramUI/Sources/ChatInterfaceStateContextMenus.swift index 3a5e6be5fb..3c505b404d 100644 --- a/submodules/TelegramUI/Sources/ChatInterfaceStateContextMenus.swift +++ b/submodules/TelegramUI/Sources/ChatInterfaceStateContextMenus.swift @@ -457,7 +457,7 @@ func contextMenuForChatPresentationIntefaceState(chatPresentationInterfaceState: var isReplyThreadHead = false if case let .replyThread(replyThreadMessage) = chatPresentationInterfaceState.chatLocation { - isReplyThreadHead = messages[0].id == replyThreadMessage.messageId + isReplyThreadHead = messages[0].id == replyThreadMessage.effectiveTopId } if !isReplyThreadHead, data.canReply { diff --git a/submodules/TelegramUI/Sources/ChatMessageAnimatedStickerItemNode.swift b/submodules/TelegramUI/Sources/ChatMessageAnimatedStickerItemNode.swift index b6701149c9..2e9989b61e 100644 --- a/submodules/TelegramUI/Sources/ChatMessageAnimatedStickerItemNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageAnimatedStickerItemNode.swift @@ -55,7 +55,7 @@ class ChatMessageShareButton: HighlightableButtonNode { fatalError("init(coder:) has not been implemented") } - func update(presentationData: ChatPresentationData, message: Message, account: Account) -> CGSize { + func update(presentationData: ChatPresentationData, chatLocation: ChatLocation, message: Message, account: Account) -> CGSize { var isReplies = false var replyCount = 0 if let channel = message.peers[message.id.peerId] as? TelegramChannel, case .broadcast = channel.info { @@ -67,6 +67,10 @@ class ChatMessageShareButton: HighlightableButtonNode { } } } + if case let .replyThread(replyThreadMessage) = chatLocation, replyThreadMessage.effectiveTopId == message.id { + replyCount = 0 + isReplies = false + } if self.theme !== presentationData.theme.theme || self.isReplies != isReplies { self.theme = presentationData.theme.theme @@ -569,7 +573,7 @@ class ChatMessageAnimatedStickerItemNode: ChatMessageItemView { isBroadcastChannel = true } - if replyThreadMessage.isChannelPost, replyThreadMessage.messageId == item.message.id { + if replyThreadMessage.isChannelPost, replyThreadMessage.effectiveTopId == item.message.id { isBroadcastChannel = true } @@ -925,7 +929,7 @@ class ChatMessageAnimatedStickerItemNode: ChatMessageItemView { strongSelf.addSubnode(updatedShareButtonNode) updatedShareButtonNode.addTarget(strongSelf, action: #selector(strongSelf.shareButtonPressed), forControlEvents: .touchUpInside) } - let buttonSize = updatedShareButtonNode.update(presentationData: item.presentationData, message: item.message, account: item.context.account) + let buttonSize = updatedShareButtonNode.update(presentationData: item.presentationData, chatLocation: item.chatLocation, message: item.message, account: item.context.account) updatedShareButtonNode.frame = CGRect(origin: CGPoint(x: updatedImageFrame.maxX + 8.0, y: updatedImageFrame.maxY - buttonSize.height - 4.0), size: buttonSize) } else if let shareButtonNode = strongSelf.shareButtonNode { shareButtonNode.removeFromSupernode() @@ -1361,7 +1365,7 @@ class ChatMessageAnimatedStickerItemNode: ChatMessageItemView { return } - if case let .replyThread(replyThreadMessage) = item.chatLocation, replyThreadMessage.messageId == item.message.id { + if case let .replyThread(replyThreadMessage) = item.chatLocation, replyThreadMessage.effectiveTopId == item.message.id { return } diff --git a/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift b/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift index 81284841e8..d504d675e3 100644 --- a/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift @@ -144,6 +144,9 @@ private func contentNodeMessagesAndClassesForItem(_ item: ChatMessageItem) -> [( if let channel = firstMessage.peers[firstMessage.id.peerId] as? TelegramChannel, case let .broadcast(info) = channel.info, info.flags.contains(.hasDiscussionGroup) { hasDiscussion = true } + if case let .replyThread(replyThreadMessage) = item.chatLocation, replyThreadMessage.effectiveTopId == firstMessage.id { + hasDiscussion = false + } if hasDiscussion { var canComment = false @@ -879,7 +882,7 @@ class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePrevewItemNode allowFullWidth = true } - if case let .replyThread(replyThreadMessage) = item.chatLocation, replyThreadMessage.isChannelPost, replyThreadMessage.messageId == firstMessage.id { + if case let .replyThread(replyThreadMessage) = item.chatLocation, replyThreadMessage.isChannelPost, replyThreadMessage.effectiveTopId == firstMessage.id { isBroadcastChannel = true } @@ -906,7 +909,7 @@ class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePrevewItemNode let isFailed = item.content.firstMessage.effectivelyFailed(timestamp: item.context.account.network.getApproximateRemoteTimestamp()) var needShareButton = false - if case let .replyThread(replyThreadMessage) = item.chatLocation, replyThreadMessage.messageId == item.message.id { + if case let .replyThread(replyThreadMessage) = item.chatLocation, replyThreadMessage.effectiveTopId == item.message.id { needShareButton = false allowFullWidth = true } else if isFailed || Namespaces.Message.allScheduled.contains(item.message.id.namespace) { @@ -2955,7 +2958,7 @@ class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePrevewItemNode default: break } - if case let .replyThread(replyThreadMessage) = item.chatLocation, replyThreadMessage.messageId == item.message.id { + if case let .replyThread(replyThreadMessage) = item.chatLocation, replyThreadMessage.effectiveTopId == item.message.id { canHaveSelection = false } diff --git a/submodules/TelegramUI/Sources/ChatMessageInstantVideoItemNode.swift b/submodules/TelegramUI/Sources/ChatMessageInstantVideoItemNode.swift index 49b7868aa3..0c2df5028c 100644 --- a/submodules/TelegramUI/Sources/ChatMessageInstantVideoItemNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageInstantVideoItemNode.swift @@ -194,7 +194,7 @@ class ChatMessageInstantVideoItemNode: ChatMessageItemView { isBroadcastChannel = true } - if case let .replyThread(replyThreadMessage) = item.chatLocation, replyThreadMessage.isChannelPost, replyThreadMessage.messageId == item.message.id { + if case let .replyThread(replyThreadMessage) = item.chatLocation, replyThreadMessage.isChannelPost, replyThreadMessage.effectiveTopId == item.message.id { isBroadcastChannel = true } @@ -473,7 +473,7 @@ class ChatMessageInstantVideoItemNode: ChatMessageItemView { strongSelf.addSubnode(updatedShareButtonNode) updatedShareButtonNode.addTarget(strongSelf, action: #selector(strongSelf.shareButtonPressed), forControlEvents: .touchUpInside) } - let buttonSize = updatedShareButtonNode.update(presentationData: item.presentationData, message: item.message, account: item.context.account) + let buttonSize = updatedShareButtonNode.update(presentationData: item.presentationData, chatLocation: item.chatLocation, message: item.message, account: item.context.account) updatedShareButtonNode.frame = CGRect(origin: CGPoint(x: videoFrame.maxX - 7.0, y: videoFrame.maxY - 24.0 - buttonSize.height), size: buttonSize) } else if let shareButtonNode = strongSelf.shareButtonNode { shareButtonNode.removeFromSupernode() @@ -858,7 +858,7 @@ class ChatMessageInstantVideoItemNode: ChatMessageItemView { return } - if case let .replyThread(replyThreadMessage) = item.chatLocation, replyThreadMessage.messageId == item.message.id { + if case let .replyThread(replyThreadMessage) = item.chatLocation, replyThreadMessage.effectiveTopId == item.message.id { return } diff --git a/submodules/TelegramUI/Sources/ChatMessageInteractiveFileNode.swift b/submodules/TelegramUI/Sources/ChatMessageInteractiveFileNode.swift index 33f2ac521e..07fac2f234 100644 --- a/submodules/TelegramUI/Sources/ChatMessageInteractiveFileNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageInteractiveFileNode.swift @@ -277,7 +277,11 @@ final class ChatMessageInteractiveFileNode: ASDisplayNode { var consumableContentIcon: UIImage? for attribute in message.attributes { if let attribute = attribute as? ConsumableContentMessageAttribute { - if !attribute.consumed { + var isConsumed = attribute.consumed + if let channel = message.peers[message.id.peerId] as? TelegramChannel, case .broadcast = channel.info { + isConsumed = true + } + if !isConsumed { if incoming { consumableContentIcon = PresentationResourcesChat.chatBubbleConsumableContentIncomingIcon(presentationData.theme.theme) } else { diff --git a/submodules/TelegramUI/Sources/ChatMessageItem.swift b/submodules/TelegramUI/Sources/ChatMessageItem.swift index cda6679a83..05af4b17d5 100644 --- a/submodules/TelegramUI/Sources/ChatMessageItem.swift +++ b/submodules/TelegramUI/Sources/ChatMessageItem.swift @@ -327,7 +327,7 @@ public final class ChatMessageItem: ListViewItem, CustomStringConvertible { if let peer = message.peers[message.id.peerId] as? TelegramChannel, case .broadcast = peer.info { isBroadcastChannel = true } - } else if case let .replyThread(replyThreadMessage) = chatLocation, replyThreadMessage.isChannelPost, replyThreadMessage.messageId == message.id { + } else if case let .replyThread(replyThreadMessage) = chatLocation, replyThreadMessage.isChannelPost, replyThreadMessage.effectiveTopId == message.id { isBroadcastChannel = true } if !hasActionMedia && !isBroadcastChannel { diff --git a/submodules/TelegramUI/Sources/ChatMessageStickerItemNode.swift b/submodules/TelegramUI/Sources/ChatMessageStickerItemNode.swift index 25b0a27f45..4daef162c5 100644 --- a/submodules/TelegramUI/Sources/ChatMessageStickerItemNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageStickerItemNode.swift @@ -257,7 +257,7 @@ class ChatMessageStickerItemNode: ChatMessageItemView { isBroadcastChannel = true } - if replyThreadMessage.isChannelPost, replyThreadMessage.messageId == item.message.id { + if replyThreadMessage.isChannelPost, replyThreadMessage.effectiveTopId == item.message.id { isBroadcastChannel = true } @@ -568,7 +568,7 @@ class ChatMessageStickerItemNode: ChatMessageItemView { strongSelf.addSubnode(updatedShareButtonNode) updatedShareButtonNode.addTarget(strongSelf, action: #selector(strongSelf.shareButtonPressed), forControlEvents: .touchUpInside) } - let buttonSize = updatedShareButtonNode.update(presentationData: item.presentationData, message: item.message, account: item.context.account) + let buttonSize = updatedShareButtonNode.update(presentationData: item.presentationData, chatLocation: item.chatLocation, message: item.message, account: item.context.account) let shareButtonFrame = CGRect(origin: CGPoint(x: baseShareButtonFrame.minX, y: baseShareButtonFrame.maxY - buttonSize.height), size: buttonSize) transition.updateFrame(node: updatedShareButtonNode, frame: shareButtonFrame) } else if let shareButtonNode = strongSelf.shareButtonNode { @@ -922,7 +922,7 @@ class ChatMessageStickerItemNode: ChatMessageItemView { return } - if case let .replyThread(replyThreadMessage) = item.chatLocation, replyThreadMessage.messageId == item.message.id { + if case let .replyThread(replyThreadMessage) = item.chatLocation, replyThreadMessage.effectiveTopId == item.message.id { return } diff --git a/submodules/TelegramUI/Sources/ChatTitleView.swift b/submodules/TelegramUI/Sources/ChatTitleView.swift index 3baf18915c..a3a0e99ec4 100644 --- a/submodules/TelegramUI/Sources/ChatTitleView.swift +++ b/submodules/TelegramUI/Sources/ChatTitleView.swift @@ -456,7 +456,12 @@ final class ChatTitleView: UIView, NavigationBarTitleView { var accessibilityText = "" for segment in self.titleNode.segments { - accessibilityText.append(segment.attributedText.string) + switch segment { + case let .number(_, string): + accessibilityText.append(string.string) + case let .text(_, string): + accessibilityText.append(string.string) + } } self.accessibilityLabel = accessibilityText diff --git a/submodules/TgVoipWebrtc/tgcalls b/submodules/TgVoipWebrtc/tgcalls index abf983bf49..64f96a1b4f 160000 --- a/submodules/TgVoipWebrtc/tgcalls +++ b/submodules/TgVoipWebrtc/tgcalls @@ -1 +1 @@ -Subproject commit abf983bf498ed0ddbdc3a4e2326b218f62a69d0c +Subproject commit 64f96a1b4fcfb8afdb0fb7749082cb42cdad7901 diff --git a/submodules/WalletUI/Resources/WalletStrings.mapping b/submodules/WalletUI/Resources/WalletStrings.mapping index 17cc3a5663f90f1755dec9124d0cbe37c00f5e0b..0f39866777c67e74b19a01f779b9a0361509e1f3 100644 GIT binary patch delta 17 ZcmaFn_{?#`Duu}>6=WG1Cofl!0{}_;2HXGu delta 17 ZcmaFn_{?#`Duv0X6{Hy%Cofk}002q>2HpSw diff --git a/submodules/WalletUI/Sources/WalletStrings.swift b/submodules/WalletUI/Sources/WalletStrings.swift index ce409636d3..b5d79e61f2 100644 --- a/submodules/WalletUI/Sources/WalletStrings.swift +++ b/submodules/WalletUI/Sources/WalletStrings.swift @@ -449,12 +449,12 @@ public final class WalletStrings: Equatable { public var Wallet_Send_ConfirmationConfirm: String { return self._s[218]! } public var Wallet_Created_ExportErrorTitle: String { return self._s[219]! } public var Wallet_Info_TransactionPendingHeader: String { return self._s[220]! } - public func Wallet_Updated_HoursAgo(_ value: Int32) -> String { + public func Wallet_Updated_MinutesAgo(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = walletStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, stringValue) } - public func Wallet_Updated_MinutesAgo(_ value: Int32) -> String { + public func Wallet_Updated_HoursAgo(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = walletStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, stringValue) From 0768b2207fc31fd5214e793dd52b443389a1de07 Mon Sep 17 00:00:00 2001 From: Ali <> Date: Fri, 2 Oct 2020 20:11:09 +0100 Subject: [PATCH 06/15] Don't create temp keys when not nocessary --- submodules/MtProtoKit/Sources/MTBackupAddressSignals.m | 2 +- .../MtProtoKit/Sources/MTDiscoverDatacenterAddressAction.m | 4 +++- submodules/MtProtoKit/Sources/MTProxyConnectivity.m | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/submodules/MtProtoKit/Sources/MTBackupAddressSignals.m b/submodules/MtProtoKit/Sources/MTBackupAddressSignals.m index 8eead4103e..6375bcc286 100644 --- a/submodules/MtProtoKit/Sources/MTBackupAddressSignals.m +++ b/submodules/MtProtoKit/Sources/MTBackupAddressSignals.m @@ -240,7 +240,7 @@ static NSString *makeRandomPadding() { apiEnvironment.disableUpdates = true; apiEnvironment.langPack = currentContext.apiEnvironment.langPack; - MTContext *context = [[MTContext alloc] initWithSerialization:currentContext.serialization encryptionProvider:currentContext.encryptionProvider apiEnvironment:apiEnvironment isTestingEnvironment:currentContext.isTestingEnvironment useTempAuthKeys:address.datacenterId != 0 ? currentContext.useTempAuthKeys : false]; + MTContext *context = [[MTContext alloc] initWithSerialization:currentContext.serialization encryptionProvider:currentContext.encryptionProvider apiEnvironment:apiEnvironment isTestingEnvironment:currentContext.isTestingEnvironment useTempAuthKeys:false]; if (address.datacenterId != 0) { //context.keychain = currentContext.keychain; diff --git a/submodules/MtProtoKit/Sources/MTDiscoverDatacenterAddressAction.m b/submodules/MtProtoKit/Sources/MTDiscoverDatacenterAddressAction.m index bfd5b5292d..980cb49651 100644 --- a/submodules/MtProtoKit/Sources/MTDiscoverDatacenterAddressAction.m +++ b/submodules/MtProtoKit/Sources/MTDiscoverDatacenterAddressAction.m @@ -117,8 +117,10 @@ [_requestService addRequest:request]; } - else + else { + [context authInfoForDatacenterWithIdRequired:_targetDatacenterId isCdn:false selector:MTDatacenterAuthInfoSelectorPersistent]; + } } } diff --git a/submodules/MtProtoKit/Sources/MTProxyConnectivity.m b/submodules/MtProtoKit/Sources/MTProxyConnectivity.m index 0ac9eb2676..a12f89d080 100644 --- a/submodules/MtProtoKit/Sources/MTProxyConnectivity.m +++ b/submodules/MtProtoKit/Sources/MTProxyConnectivity.m @@ -64,7 +64,7 @@ MTPayloadData payloadData; NSData *data = [MTDiscoverConnectionSignals payloadData:&payloadData context:context address:address]; - MTContext *proxyContext = [[MTContext alloc] initWithSerialization:context.serialization encryptionProvider:context.encryptionProvider apiEnvironment:[[context apiEnvironment] withUpdatedSocksProxySettings:settings] isTestingEnvironment:context.isTestingEnvironment useTempAuthKeys:context.useTempAuthKeys]; + MTContext *proxyContext = [[MTContext alloc] initWithSerialization:context.serialization encryptionProvider:context.encryptionProvider apiEnvironment:[[context apiEnvironment] withUpdatedSocksProxySettings:settings] isTestingEnvironment:context.isTestingEnvironment useTempAuthKeys:false]; MTTcpConnection *connection = [[MTTcpConnection alloc] initWithContext:proxyContext datacenterId:datacenterId scheme:[[MTTransportScheme alloc] initWithTransportClass:[MTTcpConnection class] address:address media:false] interface:nil usageCalculationInfo:nil]; __weak MTTcpConnection *weakConnection = connection; From c899d1dfa706a2dd784aef240e77cb6fb56e68dd Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Tue, 6 Oct 2020 09:23:16 +0400 Subject: [PATCH 07/15] Youtube player fixes --- .../Telegram-iOS/en.lproj/Localizable.strings | 4 +- .../Sources/ChatListSearchListPaneNode.swift | 12 + .../GalleryUI/Sources/GalleryController.swift | 4 +- .../Items/UniversalVideoGalleryItem.swift | 13 +- .../Lines/BaseLinesChartController.swift | 9 + .../InstantPageGalleryController.swift | 4 +- .../Sources/MessageStatsController.swift | 27 +- .../Sources/MessageStatistics.swift | 30 +- .../TelegramCore/Sources/SearchMessages.swift | 33 +- .../TelegramCore/Sources/Serialization.swift | 2 +- .../Sources/PresentationStrings.swift | 2233 +++++++++-------- .../Resources/PresentationStrings.mapping | Bin 156903 -> 156944 bytes .../Resources/WebEmbed/Youtube.html | 3 +- .../Resources/WebEmbed/YoutubeUserScript.js | 34 +- .../TelegramUI/Sources/ChatController.swift | 9 + .../Sources/ChatControllerInteraction.swift | 4 + .../ChatInterfaceStateContextMenus.swift | 21 +- .../ChatRecentActionsControllerNode.swift | 1 + .../Sources/DrawingStickersScreen.swift | 1 + .../OverlayAudioPlayerControllerNode.swift | 1 + .../Sources/PeerInfo/PeerInfoScreen.swift | 1 + .../Sources/SharedAccountContext.swift | 1 + .../Sources/WebEmbedPlayerNode.swift | 23 +- .../Sources/WebEmbedVideoContent.swift | 10 +- .../Sources/YoutubeEmbedImplementation.swift | 4 +- 25 files changed, 1301 insertions(+), 1183 deletions(-) diff --git a/Telegram/Telegram-iOS/en.lproj/Localizable.strings b/Telegram/Telegram-iOS/en.lproj/Localizable.strings index 6b88380a9d..89450679ad 100644 --- a/Telegram/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram/Telegram-iOS/en.lproj/Localizable.strings @@ -4098,7 +4098,7 @@ Unused sets are archived when you add more."; "GroupPermission.PermissionGloballyDisabled" = "This permission is disabled in this group."; -"ChannelInfo.Stats" = "Statistics"; +"ChannelInfo.Stats" = "View Statistics"; "Conversation.PressVolumeButtonForSound" = "Press volume button\nto unmute the video"; @@ -5813,3 +5813,5 @@ Any member of this group will be able to see messages in the channel."; "Channel.CommentsGroup.HeaderGroupSet" = "%@ is linking the group as it's discussion board."; "RepliesChat.DescriptionText" = "This chat helps you keep track of replies to your comments in Channels."; + +"Conversation.ContextViewStats" = "View Statistics"; diff --git a/submodules/ChatListUI/Sources/ChatListSearchListPaneNode.swift b/submodules/ChatListUI/Sources/ChatListSearchListPaneNode.swift index 9611d3e41c..db0f293924 100644 --- a/submodules/ChatListUI/Sources/ChatListSearchListPaneNode.swift +++ b/submodules/ChatListUI/Sources/ChatListSearchListPaneNode.swift @@ -1494,6 +1494,18 @@ final class ChatListSearchListPaneNode: ASDisplayNode, ChatListSearchPaneNode { if let strongSelf = self { strongSelf.presentationData = presentationData strongSelf.presentationDataPromise.set(.single(ChatListPresentationData(theme: presentationData.theme, fontSize: presentationData.listsFontSize, strings: presentationData.strings, dateTimeFormat: presentationData.dateTimeFormat, nameSortOrder: presentationData.nameSortOrder, nameDisplayOrder: presentationData.nameDisplayOrder, disableAnimations: presentationData.disableAnimations))) + + strongSelf.listNode.forEachItemHeaderNode({ itemHeaderNode in + if let itemHeaderNode = itemHeaderNode as? ChatListSearchItemHeaderNode { + itemHeaderNode.updateTheme(theme: presentationData.theme) + } + }) + + strongSelf.recentListNode.forEachItemHeaderNode({ itemHeaderNode in + if let itemHeaderNode = itemHeaderNode as? ChatListSearchItemHeaderNode { + itemHeaderNode.updateTheme(theme: presentationData.theme) + } + }) } }) diff --git a/submodules/GalleryUI/Sources/GalleryController.swift b/submodules/GalleryUI/Sources/GalleryController.swift index 40169e17d0..8661146b86 100644 --- a/submodules/GalleryUI/Sources/GalleryController.swift +++ b/submodules/GalleryUI/Sources/GalleryController.swift @@ -210,7 +210,9 @@ public func galleryItemForEntry(context: AccountContext, presentationData: Prese content = SystemVideoContent(url: embedUrl, imageReference: .webPage(webPage: WebpageReference(webpage), media: image), dimensions: webpageContent.embedSize?.cgSize ?? CGSize(width: 640.0, height: 640.0), duration: Int32(webpageContent.duration ?? 0)) } } - if content == nil, let webEmbedContent = WebEmbedVideoContent(webPage: webpage, webpageContent: webpageContent, forcedTimestamp: timecode.flatMap(Int.init)) { + if content == nil, let webEmbedContent = WebEmbedVideoContent(webPage: webpage, webpageContent: webpageContent, forcedTimestamp: timecode.flatMap(Int.init), openUrl: { url in + performAction(.url(url: url.absoluteString, concealed: false)) + }) { content = webEmbedContent } } diff --git a/submodules/GalleryUI/Sources/Items/UniversalVideoGalleryItem.swift b/submodules/GalleryUI/Sources/Items/UniversalVideoGalleryItem.swift index 51c829cb97..36f09bb9c2 100644 --- a/submodules/GalleryUI/Sources/Items/UniversalVideoGalleryItem.swift +++ b/submodules/GalleryUI/Sources/Items/UniversalVideoGalleryItem.swift @@ -493,6 +493,7 @@ final class UniversalVideoGalleryItemNode: ZoomableContentGalleryItemNode { var disablePictureInPicture = false var disablePlayerControls = false var forceEnablePiP = false + var forceEnableUserInteraction = false var isAnimated = false if let content = item.content as? NativeVideoContent { isAnimated = content.fileReference.media.isAnimated @@ -503,6 +504,7 @@ final class UniversalVideoGalleryItemNode: ZoomableContentGalleryItemNode { let type = webEmbedType(content: content.webpageContent) switch type { case .youtube: + forceEnableUserInteraction = true disablePictureInPicture = !(item.configuration?.youtubePictureInPictureEnabled ?? false) self.videoFramePreview = YoutubeEmbedFramePreview(context: item.context, content: content) case .iframe: @@ -527,7 +529,14 @@ final class UniversalVideoGalleryItemNode: ZoomableContentGalleryItemNode { let mediaManager = item.context.sharedContext.mediaManager let videoNode = UniversalVideoNode(postbox: item.context.account.postbox, audioSession: mediaManager.audioSession, manager: mediaManager.universalVideoManager, decoration: GalleryVideoDecoration(), content: item.content, priority: .gallery) - let videoSize = CGSize(width: item.content.dimensions.width * 2.0, height: item.content.dimensions.height * 2.0) + + let videoScale: CGFloat + if item.content is WebEmbedVideoContent { + videoScale = 1.0 + } else { + videoScale = 2.0 + } + let videoSize = CGSize(width: item.content.dimensions.width * videoScale, height: item.content.dimensions.height * videoScale) videoNode.updateLayout(size: videoSize, transition: .immediate) videoNode.ownsContentNodeUpdated = { [weak self] value in if let strongSelf = self { @@ -546,7 +555,7 @@ final class UniversalVideoGalleryItemNode: ZoomableContentGalleryItemNode { } } self.videoNode = videoNode - videoNode.isUserInteractionEnabled = disablePlayerControls + videoNode.isUserInteractionEnabled = disablePlayerControls || forceEnableUserInteraction videoNode.backgroundColor = videoNode.ownsContentNode ? UIColor.black : UIColor(rgb: 0x333335) if item.fromPlayingVideo { videoNode.canAttachContent = false diff --git a/submodules/GraphCore/Sources/Charts/Controllers/Lines/BaseLinesChartController.swift b/submodules/GraphCore/Sources/Charts/Controllers/Lines/BaseLinesChartController.swift index b8b0963833..2094f3d084 100644 --- a/submodules/GraphCore/Sources/Charts/Controllers/Lines/BaseLinesChartController.swift +++ b/submodules/GraphCore/Sources/Charts/Controllers/Lines/BaseLinesChartController.swift @@ -44,6 +44,15 @@ public class BaseLinesChartController: BaseChartController { self.setBackButtonVisibilityClosure?(isZoomed, animated) updateChartRangeTitle(animated: animated) + + let initial = initialChartsCollection + DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.1) { + if let lastDate = initial.axisValues.last { + TimeInterval.animationDurationMultipler = 0.00001 + self.didTapZoomIn(date: lastDate, pointIndex: initial.axisValues.count - 1) + TimeInterval.animationDurationMultipler = 1.0 + } + } } func updateChartRangeTitle(animated: Bool) { diff --git a/submodules/InstantPageUI/Sources/InstantPageGalleryController.swift b/submodules/InstantPageUI/Sources/InstantPageGalleryController.swift index ea351f7630..91b2d00545 100644 --- a/submodules/InstantPageUI/Sources/InstantPageGalleryController.swift +++ b/submodules/InstantPageUI/Sources/InstantPageGalleryController.swift @@ -137,7 +137,9 @@ public struct InstantPageGalleryEntry: Equatable { })) }), caption: NSAttributedString(string: ""), fromPlayingVideo: fromPlayingVideo, landscape: landscape, performAction: { _ in }, openActionOptions: { _ in }, storeMediaPlaybackState: { _, _ in }, present: { _, _ in }) } else { - if let content = WebEmbedVideoContent(webPage: embedWebpage, webpageContent: webpageContent) { + if let content = WebEmbedVideoContent(webPage: embedWebpage, webpageContent: webpageContent, openUrl: { url in + + }) { return UniversalVideoGalleryItem(context: context, presentationData: presentationData, content: content, originData: nil, indexData: nil, contentInfo: .webPage(webPage, embedWebpage, nil), caption: NSAttributedString(string: ""), fromPlayingVideo: fromPlayingVideo, landscape: landscape, performAction: { _ in }, openActionOptions: { _ in }, storeMediaPlaybackState: { _, _ in }, present: { _, _ in }) } else { preconditionFailure() diff --git a/submodules/StatisticsUI/Sources/MessageStatsController.swift b/submodules/StatisticsUI/Sources/MessageStatsController.swift index fe20ab3a1f..c220272475 100644 --- a/submodules/StatisticsUI/Sources/MessageStatsController.swift +++ b/submodules/StatisticsUI/Sources/MessageStatsController.swift @@ -39,7 +39,7 @@ private enum StatsEntry: ItemListNodeEntry { case overview(PresentationTheme, MessageStats, Int32?) case interactionsTitle(PresentationTheme, String) - case interactionsGraph(PresentationTheme, PresentationStrings, PresentationDateTimeFormat, StatsGraph, ChartType) + case interactionsGraph(PresentationTheme, PresentationStrings, PresentationDateTimeFormat, StatsGraph, StatsGraph?, ChartType) case publicForwardsTitle(PresentationTheme, String) case publicForward(Int32, PresentationTheme, PresentationStrings, PresentationDateTimeFormat, Message) @@ -92,8 +92,8 @@ private enum StatsEntry: ItemListNodeEntry { } else { return false } - case let .interactionsGraph(lhsTheme, lhsStrings, lhsDateTimeFormat, lhsGraph, lhsType): - if case let .interactionsGraph(rhsTheme, rhsStrings, rhsDateTimeFormat, rhsGraph, rhsType) = rhs, lhsTheme === rhsTheme, lhsStrings === rhsStrings, lhsDateTimeFormat == rhsDateTimeFormat, lhsGraph == rhsGraph, lhsType == rhsType { + case let .interactionsGraph(lhsTheme, lhsStrings, lhsDateTimeFormat, lhsGraph, lhsDetailedGraph, lhsType): + if case let .interactionsGraph(rhsTheme, rhsStrings, rhsDateTimeFormat, rhsGraph, rhsDetailedGraph, rhsType) = rhs, lhsTheme === rhsTheme, lhsStrings === rhsStrings, lhsDateTimeFormat == rhsDateTimeFormat, lhsGraph == rhsGraph, lhsDetailedGraph == rhsDetailedGraph, lhsType == rhsType { return true } else { return false @@ -126,13 +126,17 @@ private enum StatsEntry: ItemListNodeEntry { return ItemListSectionHeaderItem(presentationData: presentationData, text: text, sectionId: self.section) case let .overview(_, stats, publicShares): return MessageStatsOverviewItem(presentationData: presentationData, stats: stats, publicShares: publicShares, sectionId: self.section, style: .blocks) - case let .interactionsGraph(_, _, _, graph, type): + case let .interactionsGraph(_, _, _, graph, detailedGraph, type): return StatsGraphItem(presentationData: presentationData, graph: graph, type: type, getDetailsData: { date, completion in - let _ = arguments.loadDetailedGraph(graph, Int64(date.timeIntervalSince1970) * 1000).start(next: { graph in - if let graph = graph, case let .Loaded(_, data) = graph { - completion(data) - } - }) + if let detailedGraph = detailedGraph, case let .Loaded(_, data) = detailedGraph { + completion(data) + } else { + let _ = arguments.loadDetailedGraph(graph, Int64(date.timeIntervalSince1970) * 1000).start(next: { graph in + if let graph = graph, case let .Loaded(_, data) = graph { + completion(data) + } + }) + } }, sectionId: self.section, style: .blocks) case let .publicForward(_, _, _, _, message): var views: Int = 0 @@ -148,9 +152,6 @@ private enum StatsEntry: ItemListNodeEntry { return ItemListPeerItem(presentationData: presentationData, dateTimeFormat: PresentationDateTimeFormat(timeFormat: .military, dateFormat: .dayFirst, dateSeparator: ".", decimalSeparator: ",", groupingSeparator: ""), nameDisplayOrder: .firstLast, context: arguments.context, peer: message.peers[message.id.peerId]!, height: .generic, aliasHandling: .standard, nameColor: .primary, nameStyle: .plain, presence: nil, text: .text(text), label: .none, editing: ItemListPeerItemEditing(editable: false, editing: false, revealed: nil), revealOptions: nil, switchValue: nil, enabled: true, highlighted: false, selectable: true, sectionId: self.section, action: { arguments.openMessage(message.id) }, setPeerIdWithRevealedOptions: { _, _ in }, removePeer: { _ in }, toggleUpdated: nil, contextAction: nil) -// return StatsMessageItem(context: arguments.context, presentationData: presentationData, message: message, views: 0, forwards: 0, sectionId: self.section, style: .blocks, action: { -// arguments.openMessage(message.id) -// }) } } } @@ -164,7 +165,7 @@ private func messageStatsControllerEntries(data: MessageStats?, messages: Search if !data.interactionsGraph.isEmpty { entries.append(.interactionsTitle(presentationData.theme, presentationData.strings.Stats_MessageInteractionsTitle.uppercased())) - entries.append(.interactionsGraph(presentationData.theme, presentationData.strings, presentationData.dateTimeFormat, data.interactionsGraph, .twoAxisStep)) + entries.append(.interactionsGraph(presentationData.theme, presentationData.strings, presentationData.dateTimeFormat, data.interactionsGraph, data.detailedInteractionsGraph, .twoAxisStep)) } if let messages = messages, !messages.messages.isEmpty { diff --git a/submodules/TelegramCore/Sources/MessageStatistics.swift b/submodules/TelegramCore/Sources/MessageStatistics.swift index 7e2cb5bf61..1ee2e47aa9 100644 --- a/submodules/TelegramCore/Sources/MessageStatistics.swift +++ b/submodules/TelegramCore/Sources/MessageStatistics.swift @@ -9,11 +9,13 @@ public struct MessageStats: Equatable { public let views: Int public let forwards: Int public let interactionsGraph: StatsGraph + public let detailedInteractionsGraph: StatsGraph? - init(views: Int, forwards: Int, interactionsGraph: StatsGraph) { + init(views: Int, forwards: Int, interactionsGraph: StatsGraph, detailedInteractionsGraph: StatsGraph?) { self.views = views self.forwards = forwards self.interactionsGraph = interactionsGraph + self.detailedInteractionsGraph = detailedInteractionsGraph } public static func == (lhs: MessageStats, rhs: MessageStats) -> Bool { @@ -26,11 +28,14 @@ public struct MessageStats: Equatable { if lhs.interactionsGraph != rhs.interactionsGraph { return false } + if lhs.detailedInteractionsGraph != rhs.detailedInteractionsGraph { + return false + } return true } public func withUpdatedInteractionsGraph(_ interactionsGraph: StatsGraph) -> MessageStats { - return MessageStats(views: self.views, forwards: self.forwards, interactionsGraph: self.interactionsGraph) + return MessageStats(views: self.views, forwards: self.forwards, interactionsGraph: interactionsGraph, detailedInteractionsGraph: self.detailedInteractionsGraph) } } @@ -39,8 +44,7 @@ public struct MessageStatsContextState: Equatable { } private func requestMessageStats(postbox: Postbox, network: Network, datacenterId: Int32, messageId: MessageId, dark: Bool = false) -> Signal { - return .single(nil) - /*return postbox.transaction { transaction -> (Peer, Message)? in + return postbox.transaction { transaction -> (Peer, Message)? in if let peer = transaction.getPeer(messageId.peerId), let message = transaction.getMessage(messageId) { return (peer, message) } else { @@ -79,15 +83,25 @@ private func requestMessageStats(postbox: Postbox, network: Network, datacenterI } return signal - |> map { result -> MessageStats? in + |> mapToSignal { result -> Signal in if case let .messageStats(apiViewsGraph) = result { - return MessageStats(views: views, forwards: forwards, interactionsGraph: StatsGraph(apiStatsGraph: apiViewsGraph)) + let interactionsGraph = StatsGraph(apiStatsGraph: apiViewsGraph) + let timestamp = Int32(CFAbsoluteTimeGetCurrent() + NSTimeIntervalSince1970) + if case let .Loaded(tokenValue, _) = interactionsGraph, let token = tokenValue, Int64(message.timestamp + 60 * 60 * 24 * 2) > Int64(timestamp) { + return requestGraph(network: network, datacenterId: datacenterId, token: token, x: 1601596800000) + |> castError(MTRpcError.self) + |> map { detailedGraph -> MessageStats? in + return MessageStats(views: views, forwards: forwards, interactionsGraph: interactionsGraph, detailedInteractionsGraph: detailedGraph) + } + } else { + return .single(MessageStats(views: views, forwards: forwards, interactionsGraph: interactionsGraph, detailedInteractionsGraph: nil)) + } } else { - return nil + return .single(nil) } } |> retryRequest - }*/ + } } private final class MessageStatsContextImpl { diff --git a/submodules/TelegramCore/Sources/SearchMessages.swift b/submodules/TelegramCore/Sources/SearchMessages.swift index 19eb12abc5..50c9bc8fbb 100644 --- a/submodules/TelegramCore/Sources/SearchMessages.swift +++ b/submodules/TelegramCore/Sources/SearchMessages.swift @@ -345,15 +345,32 @@ public func searchMessages(account: Account, location: SearchMessagesLocation, q |> mapToSignal { result, additionalResult -> Signal<(SearchMessagesResult, SearchMessagesState), NoError> in return account.postbox.transaction { transaction -> (SearchMessagesResult, SearchMessagesState) in var additional: SearchMessagesPeerState? = mergedState(transaction: transaction, state: state?.additional, result: additionalResult) - if state?.additional == nil, case let .general(tags, _, _) = location { - let secretMessages = transaction.searchMessages(peerId: nil, query: query, tags: tags) - var readStates: [PeerId: CombinedPeerReadState] = [:] - for message in secretMessages { - if let readState = transaction.getCombinedPeerReadState(message.id.peerId) { - readStates[message.id.peerId] = readState - } + + if state?.additional == nil { + switch location { + case let .general(tags, minDate, maxDate), let .group(_, tags, minDate, maxDate): + let secretMessages = transaction.searchMessages(peerId: nil, query: query, tags: tags) + var filteredMessages: [Message] = [] + var readStates: [PeerId: CombinedPeerReadState] = [:] + for message in secretMessages { + var match = true + if let minDate = minDate, message.timestamp < minDate { + match = false + } + if let maxDate = maxDate, message.timestamp > maxDate { + match = false + } + if match { + filteredMessages.append(message) + if let readState = transaction.getCombinedPeerReadState(message.id.peerId) { + readStates[message.id.peerId] = readState + } + } + } + additional = SearchMessagesPeerState(messages: filteredMessages, readStates: readStates, totalCount: Int32(filteredMessages.count), completed: true, nextRate: nil) + default: + break } - additional = SearchMessagesPeerState(messages: secretMessages, readStates: readStates, totalCount: Int32(secretMessages.count), completed: true, nextRate: nil) } let updatedState = SearchMessagesState(main: mergedState(transaction: transaction, state: state?.main, result: result) ?? SearchMessagesPeerState(messages: [], readStates: [:], totalCount: 0, completed: true, nextRate: nil), additional: additional) diff --git a/submodules/TelegramCore/Sources/Serialization.swift b/submodules/TelegramCore/Sources/Serialization.swift index 94cd1882c6..d03f659a53 100644 --- a/submodules/TelegramCore/Sources/Serialization.swift +++ b/submodules/TelegramCore/Sources/Serialization.swift @@ -210,7 +210,7 @@ public class BoxedMessage: NSObject { public class Serialization: NSObject, MTSerialization { public func currentLayer() -> UInt { - return 119 + return 120 } public func parseMessage(_ data: Data!) -> Any! { diff --git a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift index 429101fc0a..a8c6bbf674 100644 --- a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift +++ b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift @@ -4384,1187 +4384,1188 @@ public final class PresentationStrings: Equatable { public func PUSH_CHAT_MESSAGE_GEOLIVE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3929]!, self._r[3929]!, [_1, _2]) } - public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[3931]! } - public var PasscodeSettings_Title: String { return self._s[3932]! } - public var Channel_AdminLog_SendPolls: String { return self._s[3933]! } - public var LastSeen_ALongTimeAgo: String { return self._s[3934]! } + public var Conversation_ContextViewStats: String { return self._s[3931]! } + public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[3932]! } + public var PasscodeSettings_Title: String { return self._s[3933]! } + public var Channel_AdminLog_SendPolls: String { return self._s[3934]! } + public var LastSeen_ALongTimeAgo: String { return self._s[3935]! } public func PUSH_CHANNEL_MESSAGE_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3935]!, self._r[3935]!, [_1]) + return formatWithArgumentRanges(self._s[3936]!, self._r[3936]!, [_1]) } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[3936]! } - public var CallFeedback_VideoReasonLowQuality: String { return self._s[3937]! } - public var SocksProxySetup_AddProxyTitle: String { return self._s[3938]! } - public var Passport_Identity_AddInternalPassport: String { return self._s[3939]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[3937]! } + public var CallFeedback_VideoReasonLowQuality: String { return self._s[3938]! } + public var SocksProxySetup_AddProxyTitle: String { return self._s[3939]! } + public var Passport_Identity_AddInternalPassport: String { return self._s[3940]! } public func ChatList_RemovedFromFolderTooltip(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3940]!, self._r[3940]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3941]!, self._r[3941]!, [_1, _2]) } public func Conversation_SetReminder_RemindToday(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3941]!, self._r[3941]!, [_0]) + return formatWithArgumentRanges(self._s[3942]!, self._r[3942]!, [_0]) } - public var Passport_Identity_GenderFemale: String { return self._s[3942]! } - public var ConvertToSupergroup_HelpTitle: String { return self._s[3945]! } - public var SharedMedia_TitleAll: String { return self._s[3946]! } - public var Settings_Context_Logout: String { return self._s[3947]! } - public var GroupInfo_SetGroupPhotoDelete: String { return self._s[3949]! } - public var Settings_About_Title: String { return self._s[3950]! } - public var StickerSettings_ContextHide: String { return self._s[3951]! } + public var Passport_Identity_GenderFemale: String { return self._s[3943]! } + public var ConvertToSupergroup_HelpTitle: String { return self._s[3946]! } + public var SharedMedia_TitleAll: String { return self._s[3947]! } + public var Settings_Context_Logout: String { return self._s[3948]! } + public var GroupInfo_SetGroupPhotoDelete: String { return self._s[3950]! } + public var Settings_About_Title: String { return self._s[3951]! } + public var StickerSettings_ContextHide: String { return self._s[3952]! } public func AutoDownloadSettings_UpTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3952]!, self._r[3952]!, [_0]) - } - public func Conversation_LiveLocationYouAndOther(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3953]!, self._r[3953]!, [_0]) } - public var Common_Cancel: String { return self._s[3955]! } - public var CallFeedback_Title: String { return self._s[3957]! } - public func Notification_PinnedContactMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3958]!, self._r[3958]!, [_0]) + public func Conversation_LiveLocationYouAndOther(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3954]!, self._r[3954]!, [_0]) } - public var Activity_UploadingVideoMessage: String { return self._s[3959]! } - public var Wallet_TransactionInfo_OtherFeeInfo: String { return self._s[3960]! } - public var MediaPicker_Send: String { return self._s[3961]! } - public var PasscodeSettings_AutoLock_IfAwayFor_1minute: String { return self._s[3962]! } - public var Conversation_LiveLocationYou: String { return self._s[3963]! } - public var Notifications_ExceptionsUnmuted: String { return self._s[3964]! } + public var Common_Cancel: String { return self._s[3956]! } + public var CallFeedback_Title: String { return self._s[3958]! } + public func Notification_PinnedContactMessage(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3959]!, self._r[3959]!, [_0]) + } + public var Activity_UploadingVideoMessage: String { return self._s[3960]! } + public var Wallet_TransactionInfo_OtherFeeInfo: String { return self._s[3961]! } + public var MediaPicker_Send: String { return self._s[3962]! } + public var PasscodeSettings_AutoLock_IfAwayFor_1minute: String { return self._s[3963]! } + public var Conversation_LiveLocationYou: String { return self._s[3964]! } + public var Notifications_ExceptionsUnmuted: String { return self._s[3965]! } public func Channel_AdminLog_MessageGroupPreHistoryHidden(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3965]!, self._r[3965]!, [_0]) + return formatWithArgumentRanges(self._s[3966]!, self._r[3966]!, [_0]) } public func PUSH_CHAT_ADD_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3966]!, self._r[3966]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3967]!, self._r[3967]!, [_1, _2]) } - public var Conversation_ViewBackground: String { return self._s[3967]! } - public var ChatSettings_PrivateChats: String { return self._s[3970]! } - public var Conversation_ErrorInaccessibleMessage: String { return self._s[3971]! } - public var Wallet_Receive_AmountInfo: String { return self._s[3972]! } - public var Appearance_ThemeNight: String { return self._s[3973]! } - public var Common_Search: String { return self._s[3974]! } - public var TwoStepAuth_ReEnterPasswordTitle: String { return self._s[3975]! } - public var ChangePhoneNumberNumber_Help: String { return self._s[3977]! } - public var Stickers_SuggestAdded: String { return self._s[3978]! } - public var Conversation_DiscardVoiceMessageDescription: String { return self._s[3981]! } - public var NetworkUsageSettings_Cellular: String { return self._s[3982]! } - public var CheckoutInfo_Title: String { return self._s[3983]! } - public var Conversation_ShareBotLocationConfirmationTitle: String { return self._s[3984]! } - public var Channel_BotDoesntSupportGroups: String { return self._s[3985]! } + public var Conversation_ViewBackground: String { return self._s[3968]! } + public var ChatSettings_PrivateChats: String { return self._s[3971]! } + public var Conversation_ErrorInaccessibleMessage: String { return self._s[3972]! } + public var Wallet_Receive_AmountInfo: String { return self._s[3973]! } + public var Appearance_ThemeNight: String { return self._s[3974]! } + public var Common_Search: String { return self._s[3975]! } + public var TwoStepAuth_ReEnterPasswordTitle: String { return self._s[3976]! } + public var ChangePhoneNumberNumber_Help: String { return self._s[3978]! } + public var Stickers_SuggestAdded: String { return self._s[3979]! } + public var Conversation_DiscardVoiceMessageDescription: String { return self._s[3982]! } + public var NetworkUsageSettings_Cellular: String { return self._s[3983]! } + public var CheckoutInfo_Title: String { return self._s[3984]! } + public var Conversation_ShareBotLocationConfirmationTitle: String { return self._s[3985]! } + public var Channel_BotDoesntSupportGroups: String { return self._s[3986]! } public func DialogList_SingleRecordingAudioSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3986]!, self._r[3986]!, [_0]) + return formatWithArgumentRanges(self._s[3987]!, self._r[3987]!, [_0]) } - public var MaskStickerSettings_Info: String { return self._s[3987]! } - public var GroupRemoved_DeleteUser: String { return self._s[3988]! } - public var Contacts_ShareTelegram: String { return self._s[3989]! } - public var Group_UpgradeNoticeText1: String { return self._s[3990]! } + public var MaskStickerSettings_Info: String { return self._s[3988]! } + public var GroupRemoved_DeleteUser: String { return self._s[3989]! } + public var Contacts_ShareTelegram: String { return self._s[3990]! } + public var Group_UpgradeNoticeText1: String { return self._s[3991]! } public func PUSH_PHONE_CALL_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3991]!, self._r[3991]!, [_1]) + return formatWithArgumentRanges(self._s[3992]!, self._r[3992]!, [_1]) } - public var PrivacyLastSeenSettings_Title: String { return self._s[3992]! } - public var SettingsSearch_Synonyms_Support: String { return self._s[3996]! } - public var PhotoEditor_TintTool: String { return self._s[3997]! } - public var Wallet_Receive_InvoiceUrlHeader: String { return self._s[3999]! } - public var GroupPermission_NoSendPolls: String { return self._s[4000]! } - public var NotificationsSound_None: String { return self._s[4001]! } + public var PrivacyLastSeenSettings_Title: String { return self._s[3993]! } + public var SettingsSearch_Synonyms_Support: String { return self._s[3997]! } + public var PhotoEditor_TintTool: String { return self._s[3998]! } + public var Wallet_Receive_InvoiceUrlHeader: String { return self._s[4000]! } + public var GroupPermission_NoSendPolls: String { return self._s[4001]! } + public var NotificationsSound_None: String { return self._s[4002]! } public func LOCAL_CHANNEL_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4002]!, self._r[4002]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[4003]!, self._r[4003]!, [_1, "\(_2)"]) } - public var CheckoutInfo_ShippingInfoCityPlaceholder: String { return self._s[4004]! } - public var ExplicitContent_AlertChannel: String { return self._s[4006]! } - public var Conversation_ClousStorageInfo_Description1: String { return self._s[4007]! } - public var Contacts_SortedByPresence: String { return self._s[4008]! } - public var WallpaperSearch_ColorGray: String { return self._s[4009]! } - public var Channel_AdminLogFilter_EventsNewSubscribers: String { return self._s[4010]! } - public var Conversation_ReportSpam: String { return self._s[4011]! } - public var ChatList_Search_NoResultsFilter: String { return self._s[4014]! } - public var WallpaperSearch_ColorBlack: String { return self._s[4015]! } - public var ArchivedChats_IntroTitle3: String { return self._s[4016]! } - public var Conversation_DefaultRestrictedText: String { return self._s[4017]! } - public var Settings_Devices: String { return self._s[4018]! } - public var Call_AudioRouteSpeaker: String { return self._s[4019]! } - public var GroupInfo_InviteLink_CopyLink: String { return self._s[4020]! } - public var Passport_Address_Country: String { return self._s[4022]! } - public var Cache_MaximumCacheSize: String { return self._s[4023]! } - public var Notifications_Badge_IncludePublicGroups: String { return self._s[4024]! } - public var Wallet_Receive_CreateInvoice: String { return self._s[4026]! } - public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[4027]! } - public var Login_TermsOfServiceLabel: String { return self._s[4028]! } - public var Calls_NoMissedCallsPlacehoder: String { return self._s[4029]! } - public var SocksProxySetup_RequiredCredentials: String { return self._s[4030]! } - public var VoiceOver_MessageContextOpenMessageMenu: String { return self._s[4031]! } - public var AutoNightTheme_ScheduledFrom: String { return self._s[4032]! } - public var ChatSettings_AutoDownloadDocuments: String { return self._s[4033]! } - public var ConvertToSupergroup_Note: String { return self._s[4035]! } - public var Settings_SetNewProfilePhotoOrVideo: String { return self._s[4036]! } - public var PrivacySettings_PasscodeAndTouchId: String { return self._s[4037]! } - public var Common_More: String { return self._s[4038]! } - public var ShareMenu_SelectChats: String { return self._s[4040]! } + public var CheckoutInfo_ShippingInfoCityPlaceholder: String { return self._s[4005]! } + public var ExplicitContent_AlertChannel: String { return self._s[4007]! } + public var Conversation_ClousStorageInfo_Description1: String { return self._s[4008]! } + public var Contacts_SortedByPresence: String { return self._s[4009]! } + public var WallpaperSearch_ColorGray: String { return self._s[4010]! } + public var Channel_AdminLogFilter_EventsNewSubscribers: String { return self._s[4011]! } + public var Conversation_ReportSpam: String { return self._s[4012]! } + public var ChatList_Search_NoResultsFilter: String { return self._s[4015]! } + public var WallpaperSearch_ColorBlack: String { return self._s[4016]! } + public var ArchivedChats_IntroTitle3: String { return self._s[4017]! } + public var Conversation_DefaultRestrictedText: String { return self._s[4018]! } + public var Settings_Devices: String { return self._s[4019]! } + public var Call_AudioRouteSpeaker: String { return self._s[4020]! } + public var GroupInfo_InviteLink_CopyLink: String { return self._s[4021]! } + public var Passport_Address_Country: String { return self._s[4023]! } + public var Cache_MaximumCacheSize: String { return self._s[4024]! } + public var Notifications_Badge_IncludePublicGroups: String { return self._s[4025]! } + public var Wallet_Receive_CreateInvoice: String { return self._s[4027]! } + public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[4028]! } + public var Login_TermsOfServiceLabel: String { return self._s[4029]! } + public var Calls_NoMissedCallsPlacehoder: String { return self._s[4030]! } + public var SocksProxySetup_RequiredCredentials: String { return self._s[4031]! } + public var VoiceOver_MessageContextOpenMessageMenu: String { return self._s[4032]! } + public var AutoNightTheme_ScheduledFrom: String { return self._s[4033]! } + public var ChatSettings_AutoDownloadDocuments: String { return self._s[4034]! } + public var ConvertToSupergroup_Note: String { return self._s[4036]! } + public var Settings_SetNewProfilePhotoOrVideo: String { return self._s[4037]! } + public var PrivacySettings_PasscodeAndTouchId: String { return self._s[4038]! } + public var Common_More: String { return self._s[4039]! } + public var ShareMenu_SelectChats: String { return self._s[4041]! } public func Conversation_ScheduleMessage_SendToday(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4042]!, self._r[4042]!, [_0]) - } - public func Channel_AdminLog_MessageRemovedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4043]!, self._r[4043]!, [_0]) } - public var Contacts_PermissionsKeepDisabled: String { return self._s[4045]! } + public func Channel_AdminLog_MessageRemovedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4044]!, self._r[4044]!, [_0]) + } + public var Contacts_PermissionsKeepDisabled: String { return self._s[4046]! } public func Call_ParticipantVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4046]!, self._r[4046]!, [_0]) + return formatWithArgumentRanges(self._s[4047]!, self._r[4047]!, [_0]) } - public var WatchRemote_AlertOpen: String { return self._s[4047]! } + public var WatchRemote_AlertOpen: String { return self._s[4048]! } public func PUSH_CHAT_ADD_MEMBER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4048]!, self._r[4048]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4049]!, self._r[4049]!, [_1, _2, _3]) } - public var Channel_Members_AddMembersHelp: String { return self._s[4049]! } - public var Shortcut_SwitchAccount: String { return self._s[4050]! } - public var Map_LiveLocationFor8Hours: String { return self._s[4051]! } + public var Channel_Members_AddMembersHelp: String { return self._s[4050]! } + public var Shortcut_SwitchAccount: String { return self._s[4051]! } + public var Map_LiveLocationFor8Hours: String { return self._s[4052]! } public func AutoNightTheme_AutomaticHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4052]!, self._r[4052]!, [_0]) + return formatWithArgumentRanges(self._s[4053]!, self._r[4053]!, [_0]) } - public var Compose_NewGroupTitle: String { return self._s[4053]! } - public var DialogList_You: String { return self._s[4054]! } - public var ReportPeer_ReasonViolence: String { return self._s[4055]! } + public var Compose_NewGroupTitle: String { return self._s[4054]! } + public var DialogList_You: String { return self._s[4055]! } + public var ReportPeer_ReasonViolence: String { return self._s[4056]! } public func PUSH_CHANNEL_MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4056]!, self._r[4056]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4057]!, self._r[4057]!, [_1, _2]) } - public var KeyCommand_ScrollDown: String { return self._s[4060]! } - public var ChatSettings_DownloadInBackground: String { return self._s[4061]! } - public var Wallpaper_ResetWallpapers: String { return self._s[4062]! } - public var Channel_BanList_RestrictedTitle: String { return self._s[4063]! } - public var ArchivedChats_IntroText3: String { return self._s[4064]! } - public var HashtagSearch_AllChats: String { return self._s[4066]! } - public var Channel_Info_BlackList: String { return self._s[4068]! } - public var Contacts_SearchUsersAndGroupsLabel: String { return self._s[4069]! } - public var PrivacyPhoneNumberSettings_DiscoveryHeader: String { return self._s[4070]! } - public var Paint_Neon: String { return self._s[4072]! } - public var SettingsSearch_Synonyms_AppLanguage: String { return self._s[4073]! } - public var AutoDownloadSettings_AutoDownload: String { return self._s[4074]! } + public var KeyCommand_ScrollDown: String { return self._s[4061]! } + public var ChatSettings_DownloadInBackground: String { return self._s[4062]! } + public var Wallpaper_ResetWallpapers: String { return self._s[4063]! } + public var Channel_BanList_RestrictedTitle: String { return self._s[4064]! } + public var ArchivedChats_IntroText3: String { return self._s[4065]! } + public var HashtagSearch_AllChats: String { return self._s[4067]! } + public var Channel_Info_BlackList: String { return self._s[4069]! } + public var Contacts_SearchUsersAndGroupsLabel: String { return self._s[4070]! } + public var PrivacyPhoneNumberSettings_DiscoveryHeader: String { return self._s[4071]! } + public var Paint_Neon: String { return self._s[4073]! } + public var SettingsSearch_Synonyms_AppLanguage: String { return self._s[4074]! } + public var AutoDownloadSettings_AutoDownload: String { return self._s[4075]! } public func Notification_PinnedVideoMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4076]!, self._r[4076]!, [_0]) + return formatWithArgumentRanges(self._s[4077]!, self._r[4077]!, [_0]) } - public var Map_StopLiveLocation: String { return self._s[4077]! } - public var SettingsSearch_Synonyms_Data_SaveEditedPhotos: String { return self._s[4078]! } - public var Channel_Username_InvalidCharacters: String { return self._s[4079]! } - public var InstantPage_Reference: String { return self._s[4080]! } - public var ChatList_HideAction: String { return self._s[4082]! } - public var Conversation_FileICloudDrive: String { return self._s[4084]! } + public var Map_StopLiveLocation: String { return self._s[4078]! } + public var SettingsSearch_Synonyms_Data_SaveEditedPhotos: String { return self._s[4079]! } + public var Channel_Username_InvalidCharacters: String { return self._s[4080]! } + public var InstantPage_Reference: String { return self._s[4081]! } + public var ChatList_HideAction: String { return self._s[4083]! } + public var Conversation_FileICloudDrive: String { return self._s[4085]! } public func PUSH_PINNED_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4085]!, self._r[4085]!, [_1]) + return formatWithArgumentRanges(self._s[4086]!, self._r[4086]!, [_1]) } - public var Passport_PasswordReset: String { return self._s[4087]! } - public var ChatList_Context_UnhideArchive: String { return self._s[4089]! } - public var ConvertToSupergroup_HelpText: String { return self._s[4090]! } - public var Calls_AddTab: String { return self._s[4091]! } - public var TwoStepAuth_ConfirmEmailResendCode: String { return self._s[4092]! } - public var SettingsSearch_Synonyms_Stickers_SuggestStickers: String { return self._s[4093]! } - public var Privacy_GroupsAndChannels: String { return self._s[4095]! } - public var AutoNightTheme_Disabled: String { return self._s[4096]! } - public var CreatePoll_MultipleChoice: String { return self._s[4097]! } + public var Passport_PasswordReset: String { return self._s[4088]! } + public var ChatList_Context_UnhideArchive: String { return self._s[4090]! } + public var ConvertToSupergroup_HelpText: String { return self._s[4091]! } + public var Calls_AddTab: String { return self._s[4092]! } + public var TwoStepAuth_ConfirmEmailResendCode: String { return self._s[4093]! } + public var SettingsSearch_Synonyms_Stickers_SuggestStickers: String { return self._s[4094]! } + public var Privacy_GroupsAndChannels: String { return self._s[4096]! } + public var AutoNightTheme_Disabled: String { return self._s[4097]! } + public var CreatePoll_MultipleChoice: String { return self._s[4098]! } public func PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4098]!, self._r[4098]!, [_1]) + return formatWithArgumentRanges(self._s[4099]!, self._r[4099]!, [_1]) } - public var Watch_Bot_Restart: String { return self._s[4100]! } + public var Watch_Bot_Restart: String { return self._s[4101]! } public func Conversation_Kilobytes(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4101]!, self._r[4101]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[4102]!, self._r[4102]!, ["\(_0)"]) } - public var GroupInfo_ScamGroupWarning: String { return self._s[4102]! } - public var Conversation_EditingMessagePanelMedia: String { return self._s[4103]! } - public var Appearance_PreviewIncomingText: String { return self._s[4104]! } - public var Notifications_ChannelNotificationsExceptionsHelp: String { return self._s[4105]! } - public var ChatList_UndoArchiveRevealedTitle: String { return self._s[4107]! } - public var Stats_GroupOverview: String { return self._s[4109]! } - public var ScheduledMessages_EditTime: String { return self._s[4111]! } - public var Month_GenFebruary: String { return self._s[4112]! } - public var ChatList_AutoarchiveSuggestion_OpenSettings: String { return self._s[4113]! } - public var Stickers_ClearRecent: String { return self._s[4114]! } - public var TwoStepAuth_EnterPasswordPassword: String { return self._s[4115]! } + public var GroupInfo_ScamGroupWarning: String { return self._s[4103]! } + public var Conversation_EditingMessagePanelMedia: String { return self._s[4104]! } + public var Appearance_PreviewIncomingText: String { return self._s[4105]! } + public var Notifications_ChannelNotificationsExceptionsHelp: String { return self._s[4106]! } + public var ChatList_UndoArchiveRevealedTitle: String { return self._s[4108]! } + public var Stats_GroupOverview: String { return self._s[4110]! } + public var ScheduledMessages_EditTime: String { return self._s[4112]! } + public var Month_GenFebruary: String { return self._s[4113]! } + public var ChatList_AutoarchiveSuggestion_OpenSettings: String { return self._s[4114]! } + public var Stickers_ClearRecent: String { return self._s[4115]! } + public var TwoStepAuth_EnterPasswordPassword: String { return self._s[4116]! } public func Checkout_PayPrice(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4116]!, self._r[4116]!, [_0]) + return formatWithArgumentRanges(self._s[4117]!, self._r[4117]!, [_0]) } - public var Login_TermsOfServiceSignupDecline: String { return self._s[4117]! } - public var CheckoutInfo_ErrorCityInvalid: String { return self._s[4118]! } - public var VoiceOver_Chat_PlayHint: String { return self._s[4119]! } - public var ChatAdmins_AllMembersAreAdminsOffHelp: String { return self._s[4120]! } - public var CheckoutInfo_ShippingInfoTitle: String { return self._s[4122]! } - public var CreatePoll_Create: String { return self._s[4123]! } - public var ChatList_Search_FilterLinks: String { return self._s[4124]! } - public var Your_cards_number_is_invalid: String { return self._s[4125]! } - public var Month_ShortApril: String { return self._s[4126]! } - public var SocksProxySetup_UseForCalls: String { return self._s[4127]! } - public var Conversation_EditingCaptionPanelTitle: String { return self._s[4128]! } - public var SocksProxySetup_Status: String { return self._s[4129]! } - public var ChannelInfo_DeleteGroupConfirmation: String { return self._s[4130]! } - public var ChatListFolder_CategoryBots: String { return self._s[4131]! } - public var Passport_FieldIdentitySelfieHelp: String { return self._s[4133]! } - public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[4134]! } - public var Wallpaper_ResetWallpapersInfo: String { return self._s[4135]! } - public var Conversation_TitleUnmute: String { return self._s[4136]! } - public var Group_Setup_TypeHeader: String { return self._s[4137]! } - public var Stats_ViewsPerPost: String { return self._s[4138]! } - public var CheckoutInfo_ShippingInfoCountry: String { return self._s[4139]! } - public var Passport_Identity_TranslationHelp: String { return self._s[4140]! } + public var Login_TermsOfServiceSignupDecline: String { return self._s[4118]! } + public var CheckoutInfo_ErrorCityInvalid: String { return self._s[4119]! } + public var VoiceOver_Chat_PlayHint: String { return self._s[4120]! } + public var ChatAdmins_AllMembersAreAdminsOffHelp: String { return self._s[4121]! } + public var CheckoutInfo_ShippingInfoTitle: String { return self._s[4123]! } + public var CreatePoll_Create: String { return self._s[4124]! } + public var ChatList_Search_FilterLinks: String { return self._s[4125]! } + public var Your_cards_number_is_invalid: String { return self._s[4126]! } + public var Month_ShortApril: String { return self._s[4127]! } + public var SocksProxySetup_UseForCalls: String { return self._s[4128]! } + public var Conversation_EditingCaptionPanelTitle: String { return self._s[4129]! } + public var SocksProxySetup_Status: String { return self._s[4130]! } + public var ChannelInfo_DeleteGroupConfirmation: String { return self._s[4131]! } + public var ChatListFolder_CategoryBots: String { return self._s[4132]! } + public var Passport_FieldIdentitySelfieHelp: String { return self._s[4134]! } + public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[4135]! } + public var Wallpaper_ResetWallpapersInfo: String { return self._s[4136]! } + public var Conversation_TitleUnmute: String { return self._s[4137]! } + public var Group_Setup_TypeHeader: String { return self._s[4138]! } + public var Stats_ViewsPerPost: String { return self._s[4139]! } + public var CheckoutInfo_ShippingInfoCountry: String { return self._s[4140]! } + public var Passport_Identity_TranslationHelp: String { return self._s[4141]! } public func PUSH_CHANNEL_MESSAGE_FWD(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4141]!, self._r[4141]!, [_1]) + return formatWithArgumentRanges(self._s[4142]!, self._r[4142]!, [_1]) } - public var GroupInfo_Administrators_Title: String { return self._s[4142]! } + public var GroupInfo_Administrators_Title: String { return self._s[4143]! } public func Channel_AdminLog_MessageRankName(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4143]!, self._r[4143]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4144]!, self._r[4144]!, [_1, _2]) } public func PUSH_CHAT_MESSAGE_POLL(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4144]!, self._r[4144]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4145]!, self._r[4145]!, [_1, _2, _3]) } - public var Wallet_Receive_Title: String { return self._s[4145]! } - public var CheckoutInfo_ShippingInfoState: String { return self._s[4146]! } - public var Passport_Language_my: String { return self._s[4148]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[4149]! } - public var Map_PlacesNearby: String { return self._s[4150]! } - public var Channel_About_Help: String { return self._s[4151]! } - public var LogoutOptions_AddAccountTitle: String { return self._s[4152]! } - public var ChatSettings_AutomaticAudioDownload: String { return self._s[4153]! } - public var Channel_Username_Title: String { return self._s[4154]! } - public var Activity_RecordingVideoMessage: String { return self._s[4155]! } + public var Wallet_Receive_Title: String { return self._s[4146]! } + public var CheckoutInfo_ShippingInfoState: String { return self._s[4147]! } + public var Passport_Language_my: String { return self._s[4149]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[4150]! } + public var Map_PlacesNearby: String { return self._s[4151]! } + public var Channel_About_Help: String { return self._s[4152]! } + public var LogoutOptions_AddAccountTitle: String { return self._s[4153]! } + public var ChatSettings_AutomaticAudioDownload: String { return self._s[4154]! } + public var Channel_Username_Title: String { return self._s[4155]! } + public var Activity_RecordingVideoMessage: String { return self._s[4156]! } public func StickerPackActionInfo_RemovedText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4156]!, self._r[4156]!, [_0]) + return formatWithArgumentRanges(self._s[4157]!, self._r[4157]!, [_0]) } - public var CheckoutInfo_ShippingInfoCity: String { return self._s[4157]! } - public var Passport_DiscardMessageDescription: String { return self._s[4158]! } - public var Conversation_LinkDialogOpen: String { return self._s[4159]! } - public var ChatList_Context_HideArchive: String { return self._s[4160]! } + public var CheckoutInfo_ShippingInfoCity: String { return self._s[4158]! } + public var Passport_DiscardMessageDescription: String { return self._s[4159]! } + public var Conversation_LinkDialogOpen: String { return self._s[4160]! } + public var ChatList_Context_HideArchive: String { return self._s[4161]! } public func Message_AuthorPinnedGame(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4161]!, self._r[4161]!, [_0]) + return formatWithArgumentRanges(self._s[4162]!, self._r[4162]!, [_0]) } - public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[4162]! } - public var Conversation_Admin: String { return self._s[4163]! } - public var DialogList_TabTitle: String { return self._s[4164]! } + public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[4163]! } + public var Conversation_Admin: String { return self._s[4164]! } + public var DialogList_TabTitle: String { return self._s[4165]! } public func PUSH_CHAT_ALBUM(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4165]!, self._r[4165]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4166]!, self._r[4166]!, [_1, _2]) } - public var Notifications_PermissionsUnreachableText: String { return self._s[4166]! } - public var Passport_Identity_GenderMale: String { return self._s[4168]! } - public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[4170]! } - public var PhoneNumberHelp_Alert: String { return self._s[4171]! } - public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[4172]! } - public var Notifications_InAppNotifications: String { return self._s[4173]! } + public var Notifications_PermissionsUnreachableText: String { return self._s[4167]! } + public var Passport_Identity_GenderMale: String { return self._s[4169]! } + public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[4171]! } + public var PhoneNumberHelp_Alert: String { return self._s[4172]! } + public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[4173]! } + public var Notifications_InAppNotifications: String { return self._s[4174]! } public func Update_AppVersion(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4174]!, self._r[4174]!, [_0]) + return formatWithArgumentRanges(self._s[4175]!, self._r[4175]!, [_0]) } - public var Notification_VideoCallOutgoing: String { return self._s[4175]! } - public var Login_InvalidCodeError: String { return self._s[4176]! } - public var Conversation_PrivateChannelTimeLimitedAlertJoin: String { return self._s[4177]! } + public var Notification_VideoCallOutgoing: String { return self._s[4176]! } + public var Login_InvalidCodeError: String { return self._s[4177]! } + public var Conversation_PrivateChannelTimeLimitedAlertJoin: String { return self._s[4178]! } public func LastSeen_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4178]!, self._r[4178]!, [_0]) + return formatWithArgumentRanges(self._s[4179]!, self._r[4179]!, [_0]) } - public var Conversation_InputTextCaptionPlaceholder: String { return self._s[4179]! } - public var ReportPeer_Report: String { return self._s[4180]! } - public var Camera_FlashOff: String { return self._s[4182]! } - public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[4185]! } - public var PrivacyPolicy_DeclineTitle: String { return self._s[4187]! } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndTouchId: String { return self._s[4188]! } - public var Passport_FieldEmail: String { return self._s[4189]! } + public var Conversation_InputTextCaptionPlaceholder: String { return self._s[4180]! } + public var ReportPeer_Report: String { return self._s[4181]! } + public var Camera_FlashOff: String { return self._s[4183]! } + public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[4186]! } + public var PrivacyPolicy_DeclineTitle: String { return self._s[4188]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndTouchId: String { return self._s[4189]! } + public var Passport_FieldEmail: String { return self._s[4190]! } public func Channel_AdminLog_MessageKickedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4190]!, self._r[4190]!, [_1]) + return formatWithArgumentRanges(self._s[4191]!, self._r[4191]!, [_1]) } - public var Notifications_ExceptionsResetToDefaults: String { return self._s[4191]! } - public var PeerInfo_PaneVoiceAndVideo: String { return self._s[4192]! } - public var Group_OwnershipTransfer_Title: String { return self._s[4193]! } - public var Conversation_DefaultRestrictedInline: String { return self._s[4194]! } - public var Login_PhoneNumberHelp: String { return self._s[4196]! } - public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[4197]! } - public var Conversation_PinnedQuiz: String { return self._s[4198]! } - public var CreateGroup_SoftUserLimitAlert: String { return self._s[4199]! } - public var Login_PhoneNumberAlreadyAuthorizedSwitch: String { return self._s[4200]! } - public var Group_MessagePhotoUpdated: String { return self._s[4201]! } - public var LoginPassword_PasswordPlaceholder: String { return self._s[4202]! } - public var Passport_Identity_Translations: String { return self._s[4204]! } - public var ChatAdmins_AllMembersAreAdmins: String { return self._s[4205]! } - public var ChannelInfo_DeleteChannel: String { return self._s[4207]! } - public var PasscodeSettings_HelpBottom: String { return self._s[4208]! } - public var Channel_Members_AddMembers: String { return self._s[4209]! } - public var AutoDownloadSettings_LastDelimeter: String { return self._s[4210]! } - public var Notification_Exceptions_DeleteAllConfirmation: String { return self._s[4212]! } - public var Conversation_HoldForAudio: String { return self._s[4213]! } - public var Watch_LastSeen_Lately: String { return self._s[4215]! } - public var ChatList_Context_MarkAsRead: String { return self._s[4216]! } - public var Conversation_PinnedMessage: String { return self._s[4217]! } - public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[4218]! } - public var Passport_UpdateRequiredError: String { return self._s[4220]! } - public var PrivacySettings_Passcode: String { return self._s[4221]! } + public var Notifications_ExceptionsResetToDefaults: String { return self._s[4192]! } + public var PeerInfo_PaneVoiceAndVideo: String { return self._s[4193]! } + public var Group_OwnershipTransfer_Title: String { return self._s[4194]! } + public var Conversation_DefaultRestrictedInline: String { return self._s[4195]! } + public var Login_PhoneNumberHelp: String { return self._s[4197]! } + public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[4198]! } + public var Conversation_PinnedQuiz: String { return self._s[4199]! } + public var CreateGroup_SoftUserLimitAlert: String { return self._s[4200]! } + public var Login_PhoneNumberAlreadyAuthorizedSwitch: String { return self._s[4201]! } + public var Group_MessagePhotoUpdated: String { return self._s[4202]! } + public var LoginPassword_PasswordPlaceholder: String { return self._s[4203]! } + public var Passport_Identity_Translations: String { return self._s[4205]! } + public var ChatAdmins_AllMembersAreAdmins: String { return self._s[4206]! } + public var ChannelInfo_DeleteChannel: String { return self._s[4208]! } + public var PasscodeSettings_HelpBottom: String { return self._s[4209]! } + public var Channel_Members_AddMembers: String { return self._s[4210]! } + public var AutoDownloadSettings_LastDelimeter: String { return self._s[4211]! } + public var Notification_Exceptions_DeleteAllConfirmation: String { return self._s[4213]! } + public var Conversation_HoldForAudio: String { return self._s[4214]! } + public var Watch_LastSeen_Lately: String { return self._s[4216]! } + public var ChatList_Context_MarkAsRead: String { return self._s[4217]! } + public var Conversation_PinnedMessage: String { return self._s[4218]! } + public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[4219]! } + public var Passport_UpdateRequiredError: String { return self._s[4221]! } + public var PrivacySettings_Passcode: String { return self._s[4222]! } public func Call_EmojiDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4222]!, self._r[4222]!, [_0]) + return formatWithArgumentRanges(self._s[4223]!, self._r[4223]!, [_0]) } - public var AutoNightTheme_NotAvailable: String { return self._s[4223]! } - public var Conversation_PressVolumeButtonForSound: String { return self._s[4224]! } - public var LoginPassword_InvalidPasswordError: String { return self._s[4225]! } - public var ChatListFolder_IncludedSectionHeader: String { return self._s[4226]! } - public var Channel_SignMessages_Help: String { return self._s[4227]! } - public var ChatList_DeleteForEveryoneConfirmationTitle: String { return self._s[4228]! } - public var Conversation_TitleNoComments: String { return self._s[4229]! } - public var MediaPicker_LivePhotoDescription: String { return self._s[4230]! } - public var GroupInfo_Permissions: String { return self._s[4231]! } - public var GroupPermission_NoSendLinks: String { return self._s[4234]! } - public var Passport_Identity_ResidenceCountry: String { return self._s[4235]! } - public var Appearance_ThemeCarouselNightBlue: String { return self._s[4237]! } - public var ChatList_ArchiveAction: String { return self._s[4238]! } + public var AutoNightTheme_NotAvailable: String { return self._s[4224]! } + public var Conversation_PressVolumeButtonForSound: String { return self._s[4225]! } + public var LoginPassword_InvalidPasswordError: String { return self._s[4226]! } + public var ChatListFolder_IncludedSectionHeader: String { return self._s[4227]! } + public var Channel_SignMessages_Help: String { return self._s[4228]! } + public var ChatList_DeleteForEveryoneConfirmationTitle: String { return self._s[4229]! } + public var Conversation_TitleNoComments: String { return self._s[4230]! } + public var MediaPicker_LivePhotoDescription: String { return self._s[4231]! } + public var GroupInfo_Permissions: String { return self._s[4232]! } + public var GroupPermission_NoSendLinks: String { return self._s[4235]! } + public var Passport_Identity_ResidenceCountry: String { return self._s[4236]! } + public var Appearance_ThemeCarouselNightBlue: String { return self._s[4238]! } + public var ChatList_ArchiveAction: String { return self._s[4239]! } public func Channel_AdminLog_DisabledSlowmode(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4239]!, self._r[4239]!, [_0]) + return formatWithArgumentRanges(self._s[4240]!, self._r[4240]!, [_0]) } - public var GroupInfo_GroupHistory: String { return self._s[4240]! } + public var GroupInfo_GroupHistory: String { return self._s[4241]! } public func Channel_Management_ErrorNotMember(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4242]!, self._r[4242]!, [_0]) + return formatWithArgumentRanges(self._s[4243]!, self._r[4243]!, [_0]) } - public var Privacy_Forwards_LinkIfAllowed: String { return self._s[4244]! } - public var Channel_Info_Banned: String { return self._s[4245]! } - public var Paint_RecentStickers: String { return self._s[4246]! } - public var VoiceOver_MessageContextSend: String { return self._s[4247]! } - public var Group_ErrorNotMutualContact: String { return self._s[4248]! } - public var ReportPeer_ReasonOther: String { return self._s[4250]! } - public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[4251]! } - public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[4253]! } - public var KeyCommand_Find: String { return self._s[4254]! } + public var Privacy_Forwards_LinkIfAllowed: String { return self._s[4245]! } + public var Channel_Info_Banned: String { return self._s[4246]! } + public var Paint_RecentStickers: String { return self._s[4247]! } + public var VoiceOver_MessageContextSend: String { return self._s[4248]! } + public var Group_ErrorNotMutualContact: String { return self._s[4249]! } + public var ReportPeer_ReasonOther: String { return self._s[4251]! } + public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[4252]! } + public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[4254]! } + public var KeyCommand_Find: String { return self._s[4255]! } public func Channel_MessageTitleUpdated(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4255]!, self._r[4255]!, [_0]) + return formatWithArgumentRanges(self._s[4256]!, self._r[4256]!, [_0]) } - public var ChatList_Context_Unmute: String { return self._s[4256]! } - public var Chat_SlowmodeAttachmentLimitReached: String { return self._s[4257]! } - public var Stickers_GroupStickersHelp: String { return self._s[4258]! } - public var Wallet_Configuration_BlockchainIdPlaceholder: String { return self._s[4259]! } - public var Checkout_Title: String { return self._s[4260]! } - public var Activity_RecordingAudio: String { return self._s[4261]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[4262]! } - public var BlockedUsers_BlockTitle: String { return self._s[4263]! } - public var Wallet_Month_ShortFebruary: String { return self._s[4265]! } - public var Calls_All: String { return self._s[4266]! } - public var DialogList_SavedMessagesHelp: String { return self._s[4268]! } - public var Settings_FAQ_Button: String { return self._s[4269]! } + public var ChatList_Context_Unmute: String { return self._s[4257]! } + public var Chat_SlowmodeAttachmentLimitReached: String { return self._s[4258]! } + public var Stickers_GroupStickersHelp: String { return self._s[4259]! } + public var Wallet_Configuration_BlockchainIdPlaceholder: String { return self._s[4260]! } + public var Checkout_Title: String { return self._s[4261]! } + public var Activity_RecordingAudio: String { return self._s[4262]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[4263]! } + public var BlockedUsers_BlockTitle: String { return self._s[4264]! } + public var Wallet_Month_ShortFebruary: String { return self._s[4266]! } + public var Calls_All: String { return self._s[4267]! } + public var DialogList_SavedMessagesHelp: String { return self._s[4269]! } + public var Settings_FAQ_Button: String { return self._s[4270]! } public func Time_MonthOfYear_m5(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4271]!, self._r[4271]!, [_0]) + return formatWithArgumentRanges(self._s[4272]!, self._r[4272]!, [_0]) } - public var Conversation_ReportGroupLocation: String { return self._s[4272]! } - public var Passport_Scans_Upload: String { return self._s[4273]! } - public var Channel_EditAdmin_PermissionPinMessages: String { return self._s[4275]! } - public var ChatList_UnarchiveAction: String { return self._s[4276]! } - public var Stats_GroupTopInviter_History: String { return self._s[4277]! } - public var GroupInfo_Permissions_Title: String { return self._s[4278]! } - public var Passport_Language_el: String { return self._s[4279]! } + public var Conversation_ReportGroupLocation: String { return self._s[4273]! } + public var Passport_Scans_Upload: String { return self._s[4274]! } + public var Channel_EditAdmin_PermissionPinMessages: String { return self._s[4276]! } + public var ChatList_UnarchiveAction: String { return self._s[4277]! } + public var Stats_GroupTopInviter_History: String { return self._s[4278]! } + public var GroupInfo_Permissions_Title: String { return self._s[4279]! } + public var Passport_Language_el: String { return self._s[4280]! } public func Wallet_Time_PreciseDate_m4(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4280]!, self._r[4280]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4281]!, self._r[4281]!, [_1, _2, _3]) } - public var GroupInfo_ActionPromote: String { return self._s[4281]! } - public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[4282]! } + public var GroupInfo_ActionPromote: String { return self._s[4282]! } + public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[4283]! } public func TwoStepAuth_PendingEmailHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4283]!, self._r[4283]!, [_0]) + return formatWithArgumentRanges(self._s[4284]!, self._r[4284]!, [_0]) } - public var VoiceOver_Chat_Reply: String { return self._s[4284]! } - public var Month_GenMay: String { return self._s[4285]! } - public var DialogList_DeleteBotConversationConfirmation: String { return self._s[4286]! } - public var Chat_PsaTooltip_covid: String { return self._s[4287]! } - public var Watch_Suggestion_CantTalk: String { return self._s[4288]! } - public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[4289]! } - public var AppUpgrade_Running: String { return self._s[4290]! } - public var PasscodeSettings_UnlockWithFaceId: String { return self._s[4293]! } - public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[4294]! } - public var SharedMedia_EmptyText: String { return self._s[4295]! } - public var Passport_Address_EditResidentialAddress: String { return self._s[4296]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[4297]! } - public var Message_PinnedGame: String { return self._s[4298]! } - public var KeyCommand_SearchInChat: String { return self._s[4299]! } - public var Appearance_ThemeCarouselNewNight: String { return self._s[4300]! } - public var ChatList_Search_FilterMedia: String { return self._s[4301]! } - public var Message_PinnedAudioMessage: String { return self._s[4302]! } - public var ChannelInfo_ConfirmLeave: String { return self._s[4303]! } + public var VoiceOver_Chat_Reply: String { return self._s[4285]! } + public var Month_GenMay: String { return self._s[4286]! } + public var DialogList_DeleteBotConversationConfirmation: String { return self._s[4287]! } + public var Chat_PsaTooltip_covid: String { return self._s[4288]! } + public var Watch_Suggestion_CantTalk: String { return self._s[4289]! } + public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[4290]! } + public var AppUpgrade_Running: String { return self._s[4291]! } + public var PasscodeSettings_UnlockWithFaceId: String { return self._s[4294]! } + public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[4295]! } + public var SharedMedia_EmptyText: String { return self._s[4296]! } + public var Passport_Address_EditResidentialAddress: String { return self._s[4297]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[4298]! } + public var Message_PinnedGame: String { return self._s[4299]! } + public var KeyCommand_SearchInChat: String { return self._s[4300]! } + public var Appearance_ThemeCarouselNewNight: String { return self._s[4301]! } + public var ChatList_Search_FilterMedia: String { return self._s[4302]! } + public var Message_PinnedAudioMessage: String { return self._s[4303]! } + public var ChannelInfo_ConfirmLeave: String { return self._s[4304]! } public func Channel_AdminLog_MessagePromotedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4304]!, self._r[4304]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4305]!, self._r[4305]!, [_1, _2]) } - public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[4305]! } + public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[4306]! } public func Passport_Email_CodeHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4306]!, self._r[4306]!, [_0]) + return formatWithArgumentRanges(self._s[4307]!, self._r[4307]!, [_0]) } - public var Wallet_Receive_AddressCopied: String { return self._s[4307]! } + public var Wallet_Receive_AddressCopied: String { return self._s[4308]! } public func Message_PinnedTextMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4308]!, self._r[4308]!, [_0]) + return formatWithArgumentRanges(self._s[4309]!, self._r[4309]!, [_0]) } - public var Settings_AddAccount: String { return self._s[4309]! } - public var Channel_AdminLog_CanDeleteMessages: String { return self._s[4310]! } - public var Conversation_DiscardVoiceMessageTitle: String { return self._s[4311]! } - public var Channel_JoinChannel: String { return self._s[4312]! } - public var Watch_UserInfo_Unblock: String { return self._s[4313]! } - public var PhoneLabel_Title: String { return self._s[4314]! } - public var Group_Setup_HistoryHiddenHelp: String { return self._s[4316]! } - public var Privacy_ProfilePhoto_AlwaysShareWith_Title: String { return self._s[4317]! } + public var Settings_AddAccount: String { return self._s[4310]! } + public var Channel_AdminLog_CanDeleteMessages: String { return self._s[4311]! } + public var Conversation_DiscardVoiceMessageTitle: String { return self._s[4312]! } + public var Channel_JoinChannel: String { return self._s[4313]! } + public var Watch_UserInfo_Unblock: String { return self._s[4314]! } + public var PhoneLabel_Title: String { return self._s[4315]! } + public var Group_Setup_HistoryHiddenHelp: String { return self._s[4317]! } + public var Privacy_ProfilePhoto_AlwaysShareWith_Title: String { return self._s[4318]! } public func Login_PhoneGenericEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String, _ _6: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4318]!, self._r[4318]!, [_1, _2, _3, _4, _5, _6]) + return formatWithArgumentRanges(self._s[4319]!, self._r[4319]!, [_1, _2, _3, _4, _5, _6]) } - public var Wallet_Month_GenOctober: String { return self._s[4319]! } - public var Channel_AddBotErrorHaveRights: String { return self._s[4320]! } - public var ChatList_TabIconFoldersTooltipNonEmptyFolders: String { return self._s[4321]! } - public var DialogList_EncryptionProcessing: String { return self._s[4322]! } - public var ChatList_Search_FilterChats: String { return self._s[4323]! } - public var WatchRemote_NotificationText: String { return self._s[4324]! } - public var EditTheme_ChangeColors: String { return self._s[4325]! } - public var GroupRemoved_ViewUserInfo: String { return self._s[4326]! } - public var Wallet_TransactionInfo_RecipientHeader: String { return self._s[4327]! } - public var CallSettings_OnMobile: String { return self._s[4329]! } - public var Month_ShortFebruary: String { return self._s[4331]! } - public var VoiceOver_MessageContextReply: String { return self._s[4332]! } + public var Wallet_Month_GenOctober: String { return self._s[4320]! } + public var Channel_AddBotErrorHaveRights: String { return self._s[4321]! } + public var ChatList_TabIconFoldersTooltipNonEmptyFolders: String { return self._s[4322]! } + public var DialogList_EncryptionProcessing: String { return self._s[4323]! } + public var ChatList_Search_FilterChats: String { return self._s[4324]! } + public var WatchRemote_NotificationText: String { return self._s[4325]! } + public var EditTheme_ChangeColors: String { return self._s[4326]! } + public var GroupRemoved_ViewUserInfo: String { return self._s[4327]! } + public var Wallet_TransactionInfo_RecipientHeader: String { return self._s[4328]! } + public var CallSettings_OnMobile: String { return self._s[4330]! } + public var Month_ShortFebruary: String { return self._s[4332]! } + public var VoiceOver_MessageContextReply: String { return self._s[4333]! } public func PUSH_VIDEO_CALL_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4333]!, self._r[4333]!, [_1]) + return formatWithArgumentRanges(self._s[4334]!, self._r[4334]!, [_1]) } - public var Group_Location_ChangeLocation: String { return self._s[4334]! } - public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[4335]! } - public var Wallet_Send_EncryptComment: String { return self._s[4336]! } - public var VoiceOver_Media_PlaybackStop: String { return self._s[4337]! } - public var SettingsSearch_Synonyms_Data_SaveIncomingPhotos: String { return self._s[4338]! } + public var Group_Location_ChangeLocation: String { return self._s[4335]! } + public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[4336]! } + public var Wallet_Send_EncryptComment: String { return self._s[4337]! } + public var VoiceOver_Media_PlaybackStop: String { return self._s[4338]! } + public var SettingsSearch_Synonyms_Data_SaveIncomingPhotos: String { return self._s[4339]! } public func Channel_AdminLog_MessageRestrictedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4340]!, self._r[4340]!, [_0]) + return formatWithArgumentRanges(self._s[4341]!, self._r[4341]!, [_0]) } - public var PhotoEditor_WarmthTool: String { return self._s[4341]! } - public var Login_InfoAvatarPhoto: String { return self._s[4342]! } - public var Notification_Exceptions_NewException_MessagePreviewHeader: String { return self._s[4343]! } - public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[4344]! } - public var Map_PlacesInThisArea: String { return self._s[4345]! } - public var VoiceOver_Chat_ContactEmail: String { return self._s[4346]! } - public var Notifications_InAppNotificationsSounds: String { return self._s[4347]! } + public var PhotoEditor_WarmthTool: String { return self._s[4342]! } + public var Login_InfoAvatarPhoto: String { return self._s[4343]! } + public var Notification_Exceptions_NewException_MessagePreviewHeader: String { return self._s[4344]! } + public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[4345]! } + public var Map_PlacesInThisArea: String { return self._s[4346]! } + public var VoiceOver_Chat_ContactEmail: String { return self._s[4347]! } + public var Notifications_InAppNotificationsSounds: String { return self._s[4348]! } public func PUSH_PINNED_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4348]!, self._r[4348]!, [_1]) + return formatWithArgumentRanges(self._s[4349]!, self._r[4349]!, [_1]) } - public var ShareMenu_Send: String { return self._s[4349]! } - public var Username_InvalidStartsWithNumber: String { return self._s[4350]! } - public var Appearance_AppIconClassicX: String { return self._s[4351]! } + public var ShareMenu_Send: String { return self._s[4350]! } + public var Username_InvalidStartsWithNumber: String { return self._s[4351]! } + public var Appearance_AppIconClassicX: String { return self._s[4352]! } public func PUSH_CHANNEL_MESSAGE_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4352]!, self._r[4352]!, [_1]) + return formatWithArgumentRanges(self._s[4353]!, self._r[4353]!, [_1]) } - public var Conversation_StopPoll: String { return self._s[4353]! } - public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[4355]! } - public var Passport_Identity_EditIdentityCard: String { return self._s[4356]! } - public var Appearance_ThemePreview_ChatList_3_Name: String { return self._s[4357]! } - public var Wallet_WordCheck_Title: String { return self._s[4358]! } - public var Conversation_Timer_Title: String { return self._s[4359]! } - public var Common_Next: String { return self._s[4360]! } - public var Notification_Exceptions_NewException: String { return self._s[4361]! } + public var Conversation_StopPoll: String { return self._s[4354]! } + public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[4356]! } + public var Passport_Identity_EditIdentityCard: String { return self._s[4357]! } + public var Appearance_ThemePreview_ChatList_3_Name: String { return self._s[4358]! } + public var Wallet_WordCheck_Title: String { return self._s[4359]! } + public var Conversation_Timer_Title: String { return self._s[4360]! } + public var Common_Next: String { return self._s[4361]! } + public var Notification_Exceptions_NewException: String { return self._s[4362]! } public func Generic_OpenHiddenLinkAlert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4362]!, self._r[4362]!, [_0]) + return formatWithArgumentRanges(self._s[4363]!, self._r[4363]!, [_0]) } - public var AccessDenied_CallMicrophone: String { return self._s[4363]! } - public var SettingsSearch_Synonyms_Data_AutoDownloadUsingCellular: String { return self._s[4364]! } - public var ChangePhoneNumberCode_Help: String { return self._s[4365]! } - public var Passport_Identity_OneOfTypeIdentityCard: String { return self._s[4366]! } - public var Channel_AdminLogFilter_EventsLeaving: String { return self._s[4367]! } - public var BlockedUsers_LeavePrefix: String { return self._s[4368]! } + public var AccessDenied_CallMicrophone: String { return self._s[4364]! } + public var SettingsSearch_Synonyms_Data_AutoDownloadUsingCellular: String { return self._s[4365]! } + public var ChangePhoneNumberCode_Help: String { return self._s[4366]! } + public var Passport_Identity_OneOfTypeIdentityCard: String { return self._s[4367]! } + public var Channel_AdminLogFilter_EventsLeaving: String { return self._s[4368]! } + public var BlockedUsers_LeavePrefix: String { return self._s[4369]! } public func Passport_RequestHeader(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4369]!, self._r[4369]!, [_0]) + return formatWithArgumentRanges(self._s[4370]!, self._r[4370]!, [_0]) } - public var Group_About_Help: String { return self._s[4370]! } - public var TwoStepAuth_ChangePasswordDescription: String { return self._s[4371]! } - public var Tour_Title3: String { return self._s[4372]! } - public var Watch_Conversation_Unblock: String { return self._s[4373]! } - public var Watch_UserInfo_Block: String { return self._s[4374]! } - public var Notifications_ChannelNotificationsAlert: String { return self._s[4375]! } - public var TwoFactorSetup_Hint_Action: String { return self._s[4376]! } - public var IntentsSettings_SuggestedChatsInfo: String { return self._s[4377]! } - public var Wallet_Alert_Cancel: String { return self._s[4378]! } - public var TextFormat_AddLinkTitle: String { return self._s[4379]! } - public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[4380]! } - public var TwoStepAuth_EnterPasswordTitle: String { return self._s[4381]! } - public var FastTwoStepSetup_PasswordSection: String { return self._s[4382]! } - public var Compose_ChannelMembers: String { return self._s[4383]! } - public var Conversation_ForwardTitle: String { return self._s[4384]! } + public var Group_About_Help: String { return self._s[4371]! } + public var TwoStepAuth_ChangePasswordDescription: String { return self._s[4372]! } + public var Tour_Title3: String { return self._s[4373]! } + public var Watch_Conversation_Unblock: String { return self._s[4374]! } + public var Watch_UserInfo_Block: String { return self._s[4375]! } + public var Notifications_ChannelNotificationsAlert: String { return self._s[4376]! } + public var TwoFactorSetup_Hint_Action: String { return self._s[4377]! } + public var IntentsSettings_SuggestedChatsInfo: String { return self._s[4378]! } + public var Wallet_Alert_Cancel: String { return self._s[4379]! } + public var TextFormat_AddLinkTitle: String { return self._s[4380]! } + public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[4381]! } + public var TwoStepAuth_EnterPasswordTitle: String { return self._s[4382]! } + public var FastTwoStepSetup_PasswordSection: String { return self._s[4383]! } + public var Compose_ChannelMembers: String { return self._s[4384]! } + public var Conversation_ForwardTitle: String { return self._s[4385]! } public func Wallet_Updated_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4385]!, self._r[4385]!, [_0]) + return formatWithArgumentRanges(self._s[4386]!, self._r[4386]!, [_0]) } - public var Conversation_PinnedPoll: String { return self._s[4387]! } + public var Conversation_PinnedPoll: String { return self._s[4388]! } public func VoiceOver_Chat_AnonymousPollFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4388]!, self._r[4388]!, [_0]) + return formatWithArgumentRanges(self._s[4389]!, self._r[4389]!, [_0]) } - public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[4389]! } - public var Conversation_ContextMenuStickerPackAdd: String { return self._s[4390]! } - public var Stats_Overview: String { return self._s[4391]! } - public var Map_HomeAndWorkTitle: String { return self._s[4392]! } - public var Wallet_Intro_Terms: String { return self._s[4393]! } + public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[4390]! } + public var Conversation_ContextMenuStickerPackAdd: String { return self._s[4391]! } + public var Stats_Overview: String { return self._s[4392]! } + public var Map_HomeAndWorkTitle: String { return self._s[4393]! } + public var Wallet_Intro_Terms: String { return self._s[4394]! } public func Time_PreciseDate_m4(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4394]!, self._r[4394]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4395]!, self._r[4395]!, [_1, _2, _3]) } - public var Passport_Address_CityPlaceholder: String { return self._s[4395]! } - public var InfoPlist_NSLocationAlwaysAndWhenInUseUsageDescription: String { return self._s[4396]! } - public var Privacy_PhoneNumber: String { return self._s[4397]! } - public var ChatList_Search_FilterFiles: String { return self._s[4398]! } - public var ChatList_DeleteForEveryoneConfirmationAction: String { return self._s[4399]! } - public var ChannelIntro_CreateChannel: String { return self._s[4400]! } - public var Conversation_InputTextAnonymousPlaceholder: String { return self._s[4401]! } + public var Passport_Address_CityPlaceholder: String { return self._s[4396]! } + public var InfoPlist_NSLocationAlwaysAndWhenInUseUsageDescription: String { return self._s[4397]! } + public var Privacy_PhoneNumber: String { return self._s[4398]! } + public var ChatList_Search_FilterFiles: String { return self._s[4399]! } + public var ChatList_DeleteForEveryoneConfirmationAction: String { return self._s[4400]! } + public var ChannelIntro_CreateChannel: String { return self._s[4401]! } + public var Conversation_InputTextAnonymousPlaceholder: String { return self._s[4402]! } public func Login_EmailCodeBody(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4402]!, self._r[4402]!, [_0]) + return formatWithArgumentRanges(self._s[4403]!, self._r[4403]!, [_0]) } - public var Weekday_ShortMonday: String { return self._s[4403]! } - public var Passport_Language_ar: String { return self._s[4405]! } - public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[4406]! } - public var TwoFactorSetup_Done_Title: String { return self._s[4407]! } - public var Calls_RatingFeedback: String { return self._s[4408]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsPreview: String { return self._s[4409]! } - public var AutoDownloadSettings_ResetSettings: String { return self._s[4412]! } - public var Watch_Compose_Send: String { return self._s[4413]! } - public var PasscodeSettings_ChangePasscode: String { return self._s[4414]! } - public var WebSearch_RecentSectionClear: String { return self._s[4415]! } + public var Weekday_ShortMonday: String { return self._s[4404]! } + public var Passport_Language_ar: String { return self._s[4406]! } + public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[4407]! } + public var TwoFactorSetup_Done_Title: String { return self._s[4408]! } + public var Calls_RatingFeedback: String { return self._s[4409]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsPreview: String { return self._s[4410]! } + public var AutoDownloadSettings_ResetSettings: String { return self._s[4413]! } + public var Watch_Compose_Send: String { return self._s[4414]! } + public var PasscodeSettings_ChangePasscode: String { return self._s[4415]! } + public var WebSearch_RecentSectionClear: String { return self._s[4416]! } public func Contacts_AccessDeniedHelpPortrait(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4416]!, self._r[4416]!, [_0]) + return formatWithArgumentRanges(self._s[4417]!, self._r[4417]!, [_0]) } - public var WallpaperSearch_ColorTeal: String { return self._s[4417]! } - public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[4418]! } - public var Permissions_ContactsTitle_v0: String { return self._s[4419]! } - public var Checkout_PasswordEntry_Pay: String { return self._s[4421]! } - public var Settings_SavedMessages: String { return self._s[4422]! } - public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[4423]! } - public var Month_ShortMarch: String { return self._s[4424]! } - public var Message_Location: String { return self._s[4425]! } + public var WallpaperSearch_ColorTeal: String { return self._s[4418]! } + public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[4419]! } + public var Permissions_ContactsTitle_v0: String { return self._s[4420]! } + public var Checkout_PasswordEntry_Pay: String { return self._s[4422]! } + public var Settings_SavedMessages: String { return self._s[4423]! } + public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[4424]! } + public var Month_ShortMarch: String { return self._s[4425]! } + public var Message_Location: String { return self._s[4426]! } public func PUSH_MESSAGE_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4426]!, self._r[4426]!, [_1]) + return formatWithArgumentRanges(self._s[4427]!, self._r[4427]!, [_1]) } public func Notification_CallTimeFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4427]!, self._r[4427]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4428]!, self._r[4428]!, [_1, _2]) } - public var VoiceOver_Chat_VoiceMessage: String { return self._s[4429]! } + public var VoiceOver_Chat_VoiceMessage: String { return self._s[4430]! } public func Channel_AdminLog_MessageChangedUnlinkedChannel(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4430]!, self._r[4430]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4431]!, self._r[4431]!, [_1, _2]) } - public var GroupPermission_NoSendMedia: String { return self._s[4431]! } - public var Conversation_ClousStorageInfo_Description2: String { return self._s[4432]! } - public var SharedMedia_CategoryDocs: String { return self._s[4433]! } - public var Appearance_RemoveThemeConfirmation: String { return self._s[4434]! } - public var Paint_Framed: String { return self._s[4435]! } - public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[4436]! } - public var Passport_Identity_DoesNotExpire: String { return self._s[4437]! } - public var Channel_SignMessages: String { return self._s[4438]! } - public var Contacts_AccessDeniedHelpON: String { return self._s[4439]! } - public var Conversation_ContextMenuStickerPackInfo: String { return self._s[4440]! } + public var GroupPermission_NoSendMedia: String { return self._s[4432]! } + public var Conversation_ClousStorageInfo_Description2: String { return self._s[4433]! } + public var SharedMedia_CategoryDocs: String { return self._s[4434]! } + public var Appearance_RemoveThemeConfirmation: String { return self._s[4435]! } + public var Paint_Framed: String { return self._s[4436]! } + public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[4437]! } + public var Passport_Identity_DoesNotExpire: String { return self._s[4438]! } + public var Channel_SignMessages: String { return self._s[4439]! } + public var Contacts_AccessDeniedHelpON: String { return self._s[4440]! } + public var Conversation_ContextMenuStickerPackInfo: String { return self._s[4441]! } public func PUSH_CHAT_LEFT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4441]!, self._r[4441]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4442]!, self._r[4442]!, [_1, _2]) } - public var GroupInfo_UpgradeButton: String { return self._s[4442]! } - public var Channel_EditAdmin_PermissionInviteMembers: String { return self._s[4443]! } - public var AutoDownloadSettings_Files: String { return self._s[4444]! } + public var GroupInfo_UpgradeButton: String { return self._s[4443]! } + public var Channel_EditAdmin_PermissionInviteMembers: String { return self._s[4444]! } + public var AutoDownloadSettings_Files: String { return self._s[4445]! } public func Notification_ChangedGroupName(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4445]!, self._r[4445]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4446]!, self._r[4446]!, [_0, _1]) } - public var Login_SendCodeViaSms: String { return self._s[4447]! } - public var Update_UpdateApp: String { return self._s[4448]! } - public var Channel_Setup_TypePublic: String { return self._s[4449]! } - public var Watch_Compose_CreateMessage: String { return self._s[4450]! } + public var Login_SendCodeViaSms: String { return self._s[4448]! } + public var Update_UpdateApp: String { return self._s[4449]! } + public var Channel_Setup_TypePublic: String { return self._s[4450]! } + public var Watch_Compose_CreateMessage: String { return self._s[4451]! } public func PUSH_CHAT_MESSAGE_VIDEOS(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4451]!, self._r[4451]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4452]!, self._r[4452]!, [_1, _2, _3]) } - public var StickerPacksSettings_ManagingHelp: String { return self._s[4452]! } + public var StickerPacksSettings_ManagingHelp: String { return self._s[4453]! } public func Wallet_Time_PreciseDate_m12(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4453]!, self._r[4453]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4454]!, self._r[4454]!, [_1, _2, _3]) } - public var VoiceOver_Chat_Video: String { return self._s[4454]! } - public var Forward_ChannelReadOnly: String { return self._s[4455]! } - public var StickerPack_HideStickers: String { return self._s[4456]! } - public var ChatListFolder_NameContacts: String { return self._s[4457]! } - public var Profile_BotInfo: String { return self._s[4458]! } - public var Document_TargetConfirmationFormat: String { return self._s[4459]! } - public var GroupInfo_InviteByLink: String { return self._s[4460]! } - public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[4461]! } - public var Watch_Stickers_RecentPlaceholder: String { return self._s[4462]! } - public var Broadcast_AdminLog_EmptyText: String { return self._s[4463]! } - public var Passport_NotLoggedInMessage: String { return self._s[4464]! } - public var Conversation_StopQuizConfirmation: String { return self._s[4465]! } - public var Checkout_PaymentMethod: String { return self._s[4466]! } - public var ChatList_ArchivedChatsTitle: String { return self._s[4470]! } - public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[4471]! } - public var VoiceOver_Chat_RecordPreviewVoiceMessage: String { return self._s[4472]! } - public var PrivacyLastSeenSettings_GroupsAndChannelsHelp: String { return self._s[4473]! } - public var SettingsSearch_Synonyms_Privacy_Data_ContactsReset: String { return self._s[4474]! } - public var Camera_Title: String { return self._s[4475]! } - public var Map_Directions: String { return self._s[4476]! } - public var Wallet_Intro_ImportExisting: String { return self._s[4477]! } - public var Stats_MessagePublicForwardsTitle: String { return self._s[4478]! } - public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[4480]! } - public var Profile_EncryptionKey: String { return self._s[4481]! } + public var VoiceOver_Chat_Video: String { return self._s[4455]! } + public var Forward_ChannelReadOnly: String { return self._s[4456]! } + public var StickerPack_HideStickers: String { return self._s[4457]! } + public var ChatListFolder_NameContacts: String { return self._s[4458]! } + public var Profile_BotInfo: String { return self._s[4459]! } + public var Document_TargetConfirmationFormat: String { return self._s[4460]! } + public var GroupInfo_InviteByLink: String { return self._s[4461]! } + public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[4462]! } + public var Watch_Stickers_RecentPlaceholder: String { return self._s[4463]! } + public var Broadcast_AdminLog_EmptyText: String { return self._s[4464]! } + public var Passport_NotLoggedInMessage: String { return self._s[4465]! } + public var Conversation_StopQuizConfirmation: String { return self._s[4466]! } + public var Checkout_PaymentMethod: String { return self._s[4467]! } + public var ChatList_ArchivedChatsTitle: String { return self._s[4471]! } + public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[4472]! } + public var VoiceOver_Chat_RecordPreviewVoiceMessage: String { return self._s[4473]! } + public var PrivacyLastSeenSettings_GroupsAndChannelsHelp: String { return self._s[4474]! } + public var SettingsSearch_Synonyms_Privacy_Data_ContactsReset: String { return self._s[4475]! } + public var Camera_Title: String { return self._s[4476]! } + public var Map_Directions: String { return self._s[4477]! } + public var Wallet_Intro_ImportExisting: String { return self._s[4478]! } + public var Stats_MessagePublicForwardsTitle: String { return self._s[4479]! } + public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[4481]! } + public var Profile_EncryptionKey: String { return self._s[4482]! } public func LOCAL_CHAT_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4482]!, self._r[4482]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[4483]!, self._r[4483]!, [_1, "\(_2)"]) } public func Compatibility_SecretMediaVersionTooLow(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4483]!, self._r[4483]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4484]!, self._r[4484]!, [_0, _1]) } - public var Passport_Identity_TypePassport: String { return self._s[4484]! } - public var CreatePoll_QuizOptionsHeader: String { return self._s[4486]! } - public var Common_No: String { return self._s[4487]! } - public var Conversation_SendMessage_ScheduleMessage: String { return self._s[4488]! } - public var SettingsSearch_Synonyms_Privacy_LastSeen: String { return self._s[4489]! } - public var Settings_AboutEmpty: String { return self._s[4490]! } - public var TwoStepAuth_FloodError: String { return self._s[4492]! } - public var SettingsSearch_Synonyms_Appearance_TextSize: String { return self._s[4493]! } + public var Passport_Identity_TypePassport: String { return self._s[4485]! } + public var CreatePoll_QuizOptionsHeader: String { return self._s[4487]! } + public var Common_No: String { return self._s[4488]! } + public var Conversation_SendMessage_ScheduleMessage: String { return self._s[4489]! } + public var SettingsSearch_Synonyms_Privacy_LastSeen: String { return self._s[4490]! } + public var Settings_AboutEmpty: String { return self._s[4491]! } + public var TwoStepAuth_FloodError: String { return self._s[4493]! } + public var SettingsSearch_Synonyms_Appearance_TextSize: String { return self._s[4494]! } public func Channel_AdminLog_MessageUnkickedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4495]!, self._r[4495]!, [_1]) + return formatWithArgumentRanges(self._s[4496]!, self._r[4496]!, [_1]) } - public var Conversation_Edit: String { return self._s[4498]! } - public var CheckoutInfo_SaveInfo: String { return self._s[4499]! } - public var VoiceOver_Chat_AnonymousPoll: String { return self._s[4500]! } - public var Call_CameraTooltip: String { return self._s[4502]! } - public var InstantPage_FeedbackButtonShort: String { return self._s[4503]! } - public var Contacts_InviteToTelegram: String { return self._s[4504]! } - public var Wallet_WordImport_CanNotRemember: String { return self._s[4505]! } - public var Notifications_ResetAllNotifications: String { return self._s[4506]! } - public var Calls_NewCall: String { return self._s[4507]! } - public var VoiceOver_Chat_Music: String { return self._s[4510]! } - public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[4511]! } - public var Channel_Edit_AboutItem: String { return self._s[4512]! } - public var Message_VideoExpired: String { return self._s[4513]! } - public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[4514]! } + public var Conversation_Edit: String { return self._s[4499]! } + public var CheckoutInfo_SaveInfo: String { return self._s[4500]! } + public var VoiceOver_Chat_AnonymousPoll: String { return self._s[4501]! } + public var Call_CameraTooltip: String { return self._s[4503]! } + public var InstantPage_FeedbackButtonShort: String { return self._s[4504]! } + public var Contacts_InviteToTelegram: String { return self._s[4505]! } + public var Wallet_WordImport_CanNotRemember: String { return self._s[4506]! } + public var Notifications_ResetAllNotifications: String { return self._s[4507]! } + public var Calls_NewCall: String { return self._s[4508]! } + public var VoiceOver_Chat_Music: String { return self._s[4511]! } + public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[4512]! } + public var Channel_Edit_AboutItem: String { return self._s[4513]! } + public var Message_VideoExpired: String { return self._s[4514]! } + public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[4515]! } public func PUSH_CHAT_RETURNED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4515]!, self._r[4515]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4516]!, self._r[4516]!, [_1, _2]) } - public var NotificationsSound_Input: String { return self._s[4517]! } - public var Notifications_ClassicTones: String { return self._s[4518]! } - public var Conversation_StatusTyping: String { return self._s[4519]! } - public var Checkout_ErrorProviderAccountInvalid: String { return self._s[4520]! } - public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[4521]! } - public var Wallet_Month_ShortSeptember: String { return self._s[4522]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[4523]! } - public var Conversation_MessageLeaveComment: String { return self._s[4524]! } - public var UserInfo_TapToCall: String { return self._s[4525]! } - public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[4526]! } - public var Conversation_ClearAll: String { return self._s[4528]! } - public var UserInfo_NotificationsDefault: String { return self._s[4529]! } - public var Wallet_Send_OwnAddressAlertText: String { return self._s[4530]! } - public var Map_ChooseAPlace: String { return self._s[4531]! } + public var NotificationsSound_Input: String { return self._s[4518]! } + public var Notifications_ClassicTones: String { return self._s[4519]! } + public var Conversation_StatusTyping: String { return self._s[4520]! } + public var Checkout_ErrorProviderAccountInvalid: String { return self._s[4521]! } + public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[4522]! } + public var Wallet_Month_ShortSeptember: String { return self._s[4523]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[4524]! } + public var Conversation_MessageLeaveComment: String { return self._s[4525]! } + public var UserInfo_TapToCall: String { return self._s[4526]! } + public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[4527]! } + public var Conversation_ClearAll: String { return self._s[4529]! } + public var UserInfo_NotificationsDefault: String { return self._s[4530]! } + public var Wallet_Send_OwnAddressAlertText: String { return self._s[4531]! } + public var Map_ChooseAPlace: String { return self._s[4532]! } public func Wallet_Receive_ShareInvoiceUrlInfo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4532]!, self._r[4532]!, [_0]) + return formatWithArgumentRanges(self._s[4533]!, self._r[4533]!, [_0]) } - public var GroupInfo_AddParticipantTitle: String { return self._s[4533]! } - public var ChatList_PeerTypeNonContact: String { return self._s[4534]! } - public var Conversation_SlideToCancel: String { return self._s[4535]! } - public var Month_ShortJuly: String { return self._s[4536]! } - public var SocksProxySetup_ProxyType: String { return self._s[4537]! } + public var GroupInfo_AddParticipantTitle: String { return self._s[4534]! } + public var ChatList_PeerTypeNonContact: String { return self._s[4535]! } + public var Conversation_SlideToCancel: String { return self._s[4536]! } + public var Month_ShortJuly: String { return self._s[4537]! } + public var SocksProxySetup_ProxyType: String { return self._s[4538]! } public func ChatList_DeleteChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4538]!, self._r[4538]!, [_0]) + return formatWithArgumentRanges(self._s[4539]!, self._r[4539]!, [_0]) } - public var ChatList_EditFolders: String { return self._s[4539]! } - public var TwoStepAuth_SetPasswordHelp: String { return self._s[4540]! } - public var Wallet_Send_ConfirmationConfirm: String { return self._s[4542]! } - public var Wallet_Created_ExportErrorTitle: String { return self._s[4543]! } + public var ChatList_EditFolders: String { return self._s[4540]! } + public var TwoStepAuth_SetPasswordHelp: String { return self._s[4541]! } + public var Wallet_Send_ConfirmationConfirm: String { return self._s[4543]! } + public var Wallet_Created_ExportErrorTitle: String { return self._s[4544]! } public func GroupPermission_ApplyAlertText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4544]!, self._r[4544]!, [_0]) + return formatWithArgumentRanges(self._s[4545]!, self._r[4545]!, [_0]) } - public var Permissions_PeopleNearbyTitle_v0: String { return self._s[4545]! } - public var ScheduledMessages_RemindersTitle: String { return self._s[4546]! } - public var Your_cards_expiration_year_is_invalid: String { return self._s[4547]! } - public var Wallet_Info_TransactionPendingHeader: String { return self._s[4549]! } - public var UserInfo_ShareMyContactInfo: String { return self._s[4550]! } - public var Passport_DeleteAddress: String { return self._s[4552]! } - public var Passport_DeletePassportConfirmation: String { return self._s[4553]! } - public var Passport_Identity_ReverseSide: String { return self._s[4554]! } - public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[4555]! } - public var Login_InfoLastNamePlaceholder: String { return self._s[4556]! } - public var Passport_FieldAddress: String { return self._s[4557]! } - public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[4558]! } - public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[4560]! } - public var Map_Home: String { return self._s[4562]! } - public var PollResults_Title: String { return self._s[4563]! } - public var ArchivedChats_IntroText2: String { return self._s[4565]! } - public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[4566]! } - public var VoiceOver_Chat_ContactPhoneNumber: String { return self._s[4567]! } - public var CallFeedback_ReasonSilentRemote: String { return self._s[4569]! } - public var Passport_Identity_AddPersonalDetails: String { return self._s[4571]! } - public var Group_Info_AdminLog: String { return self._s[4573]! } - public var ChatSettings_AutoPlayTitle: String { return self._s[4574]! } - public var Appearance_Animations: String { return self._s[4575]! } - public var Appearance_TextSizeSetting: String { return self._s[4576]! } - public func MessageTimer_Weeks(_ value: Int32) -> String { + public var Permissions_PeopleNearbyTitle_v0: String { return self._s[4546]! } + public var ScheduledMessages_RemindersTitle: String { return self._s[4547]! } + public var Your_cards_expiration_year_is_invalid: String { return self._s[4548]! } + public var Wallet_Info_TransactionPendingHeader: String { return self._s[4550]! } + public var UserInfo_ShareMyContactInfo: String { return self._s[4551]! } + public var Passport_DeleteAddress: String { return self._s[4553]! } + public var Passport_DeletePassportConfirmation: String { return self._s[4554]! } + public var Passport_Identity_ReverseSide: String { return self._s[4555]! } + public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[4556]! } + public var Login_InfoLastNamePlaceholder: String { return self._s[4557]! } + public var Passport_FieldAddress: String { return self._s[4558]! } + public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[4559]! } + public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[4561]! } + public var Map_Home: String { return self._s[4563]! } + public var PollResults_Title: String { return self._s[4564]! } + public var ArchivedChats_IntroText2: String { return self._s[4566]! } + public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[4567]! } + public var VoiceOver_Chat_ContactPhoneNumber: String { return self._s[4568]! } + public var CallFeedback_ReasonSilentRemote: String { return self._s[4570]! } + public var Passport_Identity_AddPersonalDetails: String { return self._s[4572]! } + public var Group_Info_AdminLog: String { return self._s[4574]! } + public var ChatSettings_AutoPlayTitle: String { return self._s[4575]! } + public var Appearance_Animations: String { return self._s[4576]! } + public var Appearance_TextSizeSetting: String { return self._s[4577]! } + public func ChatList_MessagePhotos(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, stringValue) } - public func GroupInfo_ShowMoreMembers(_ value: Int32) -> String { + public func ForwardedPhotos(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, stringValue) } - public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { + public func MuteExpires_Days(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, stringValue) } - public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { + public func StickerPack_AddMaskCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, stringValue) } - public func Contacts_InviteContacts(_ value: Int32) -> String { + public func MessageTimer_Seconds(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, stringValue) } - public func ChatList_DeleteConfirmation(_ value: Int32) -> String { + public func OldChannels_GroupFormat(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, stringValue) } - public func StickerPack_AddStickerCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupTopInviterInvites(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendVideo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedStickers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Generic(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupTopPosterMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Minutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceOver_Chat_ContactPhoneNumberCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func UserCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatListFilter_ShowMoreChats(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PeopleNearby_ShowMorePeople(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Map_ETAMinutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupShowMoreTopAdmins(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_Minutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) - } - public func QuickSend_Photos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Months(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteFor_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedLocations(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_TitleComments(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_ContextViewReplies(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_SelectedMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusMembers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_Search_Messages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceOver_Chat_PollOptionCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_StickerCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Wallet_Updated_HoursAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func AttachmentMenu_SendGif(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Map_ETAHours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_ShortSeconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_InactiveWeek(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_UserInfo_Mute(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedContacts(_ value: Int32) -> String { - let form = getPluralizationForm(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 = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Theme_UsersCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, _1, _2) } public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_TitleReplies(_ value: Int32) -> String { + public func VoiceOver_Chat_ContactPhoneNumberCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { + public func Stats_GroupTopAdminBans(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) } - public func ChatList_SelectedChats(_ value: Int32) -> String { + public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_Years(_ value: Int32) -> String { + public func Watch_UserInfo_Mute(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) } - public func SharedMedia_Link(_ value: Int32) -> String { + public func Conversation_ContextViewReplies(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) } - public func Stats_MessageForwards(_ value: Int32) -> String { + public func Wallet_Updated_HoursAgo(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) } - public func ChatList_MessagePhotos(_ value: Int32) -> String { + public func Passport_Scans(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceOver_Chat_PollVotes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedPolls(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedPhotos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Conversation_StatusOnline(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(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 = getPluralizationForm(self.lc, selector) - return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func MuteExpires_Minutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_SharePhoto(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_MessageVideos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Notifications_Exceptions(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, _0, _1) - } - public func Stats_MessageViews(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupTopPosterChars(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortMinutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_ShareVideo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceOver_Chat_ContactEmailCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Stats_GroupShowMoreTopInviters(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LastSeen_HoursAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue) - } - public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PollResults_ShowMore(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Photo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func MuteExpires_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedGifs(_ value: Int32) -> String { - let form = getPluralizationForm(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[14 * 6 + Int(form.rawValue)]!, stringValue) } public func MuteFor_Hours(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, stringValue) } - public func Invitation_Members(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupTopAdminDeletions(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortHours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Wallet_Updated_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) + public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, _1, _2) } public func Media_ShareItem(_ value: Int32) -> String { let form = getPluralizationForm(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[17 * 6 + Int(form.rawValue)]!, stringValue) } public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, _2, _1, _3) + return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, _2, _1, _3) } - public func MessageTimer_Seconds(_ value: Int32) -> String { + public func MessageTimer_ShortSeconds(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Call_ShortMinutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func ChatList_Search_Messages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) + } + public func InstantPage_Views(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_Seconds(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Generic(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_InactiveYear(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortWeeks(_ value: Int32) -> String { + let form = getPluralizationForm(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 = getPluralizationForm(self.lc, selector) + return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func SharedMedia_Link(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) + } + public func InviteText_ContactsCountText(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_MessageViewComments(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) + } + public func QuickSend_Photos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedVideoMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_InactiveMonth(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupTopAdminKicks(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Contacts_ImportersCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupShowMoreTopInviters(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_PollOptionCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedStickers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Map_ETAHours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LastSeen_HoursAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedFiles(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Months(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortDays(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func VoiceOver_Chat_ContactEmailCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Photo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatListFilter_ShowMoreChats(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_SelectedChats(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusOnline(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, stringValue) + } + public func GroupInfo_ShowMoreMembers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Weeks(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Years(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Map_ETAMinutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_File(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func PeopleNearby_ShowMorePeople(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_TitleReplies(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteFor_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_InactiveWeek(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func Notification_GameScoreSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_DeletedChats(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) + } + public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_DeleteConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) + } + public func UserCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedContacts(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_PollVotes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupTopAdminDeletions(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Contacts_InviteContacts(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Theme_UsersCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessagePoll_VotedCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_Leave(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusSubscribers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Invitation_Members(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_SharePhoto(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_ShortSeconds(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortMinutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_MessageViews(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue) } - public func Call_Seconds(_ value: Int32) -> String { + public func Conversation_StatusMembers(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) @@ -5574,208 +5575,208 @@ public final class PresentationStrings: Equatable { let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notification_GameScoreExtended(_ value: Int32) -> String { + public func ForwardedAudios(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedVideos(_ value: Int32) -> String { + public func StickerPack_AddStickerCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue) } - public func SharedMedia_File(_ value: Int32) -> String { + public func Stats_GroupTopInviterInvites(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, stringValue) } - public func Stats_GroupShowMoreTopPosters(_ value: Int32) -> String { + public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[108 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedAudios(_ value: Int32) -> String { + public func ForwardedLocations(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[109 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_ShortSeconds(_ value: Int32) -> String { + public func ForwardedMessages(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[110 * 6 + Int(form.rawValue)]!, stringValue) } - public func InstantPage_Views(_ value: Int32) -> String { + public func Stats_GroupTopPosterMessages(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[111 * 6 + Int(form.rawValue)]!, stringValue) } - public func Stats_GroupTopAdminKicks(_ value: Int32) -> String { + public func Stats_GroupTopPosterChars(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[112 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[113 * 6 + Int(form.rawValue)]!, _1, _2) + public func LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[113 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[114 * 6 + Int(form.rawValue)]!, _1, _2) + public func MuteExpires_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[114 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[115 * 6 + Int(form.rawValue)]!, _1, _2) + public func Notifications_Exceptions(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[115 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { + public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[116 * 6 + Int(form.rawValue)]!, stringValue) } - public func MuteExpires_Days(_ value: Int32) -> String { + public func ForwardedGifs(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[117 * 6 + Int(form.rawValue)]!, stringValue) } - public func OldChannels_GroupFormat(_ value: Int32) -> String { + public func ChatList_MessageVideos(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[118 * 6 + Int(form.rawValue)]!, stringValue) } - public func Contacts_ImportersCount(_ value: Int32) -> String { + public func MessagePoll_QuizCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[119 * 6 + Int(form.rawValue)]!, stringValue) } - public func AttachmentMenu_SendItem(_ value: Int32) -> String { + public func MessageTimer_Minutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[120 * 6 + Int(form.rawValue)]!, stringValue) } - public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[121 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedVideoMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[122 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessagePoll_QuizCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[123 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Passport_Scans(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[124 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_Leave(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[125 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_ShortMinutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[126 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[127 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func OldChannels_InactiveYear(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[128 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[129 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusSubscribers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[130 * 6 + Int(form.rawValue)]!, stringValue) - } - public func InviteText_ContactsCountText(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[131 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_AddMaskCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[132 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[133 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessagePoll_VotedCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[134 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortWeeks(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[135 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[136 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedFiles(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[137 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[138 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_InactiveMonth(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[139 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_DeletedChats(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[140 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_MessageViewComments(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[141 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[142 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[121 * 6 + Int(form.rawValue)]!, _0, _1) } public func GroupInfo_ParticipantCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[143 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[122 * 6 + Int(form.rawValue)]!, stringValue) } - public func Stats_GroupTopAdminBans(_ value: Int32) -> String { + public func ForwardedPolls(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[144 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[123 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[124 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Stats_MessageForwards(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[125 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_TitleComments(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[126 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendGif(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[127 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortHours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[128 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupShowMoreTopPosters(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[129 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_SelectedMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[130 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[131 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_ShareVideo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[132 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Wallet_Updated_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[133 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupShowMoreTopAdmins(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[134 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendItem(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[135 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[136 * 6 + Int(form.rawValue)]!, _1, _2) } public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[137 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendVideo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[138 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PollResults_ShowMore(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[139 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[140 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[141 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_StickerCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[142 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[143 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[144 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[145 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_ShortDays(_ value: Int32) -> String { + public func ForwardedVideos(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[146 * 6 + Int(form.rawValue)]!, stringValue) diff --git a/submodules/TelegramUI/Resources/PresentationStrings.mapping b/submodules/TelegramUI/Resources/PresentationStrings.mapping index d5ec1f5bd896871d267468b9196bd74250ec70b6..bb0292c1c3d821e8a4b7208bdc0e23cc1cd15302 100644 GIT binary patch delta 9166 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 delta 8780 zcmZ8n30PBC7Utgi*dYlJNJs(+I|xDC6;UH1AOeBlzCcW#k{S{u!L_#9+SR(g>gjY- zJDut7(tX;xbf)dJPOUoKr;FI>GHq?E{W>#UT;{(oh<3iOe&ODG?z#8u|2?l;j>LWW zdK~-DI`%YUHRoBevioHdZ8*>LY#!}C&uo0Yh8#64gFZaZlGpO8Yb?V6}4gR*;( zF}8jRi;9Zs(9pgBE8X^mL>(8Hfw^hr1y&|41erxSk)o%=7np{5==cRTgn5ZwWTi|d z`$bmH7inl~EjQ5ei%cu|#0J_M&oh$iWPf*?FYK4WKI&@Pf01RgC3NB<%VAyg<3(1) z0^2P-n+3O5@dBwE8;#1TTEq6WJeDopek(5@9l~4^HdhC`x`F|FwL9RE{eoLB7E;85 z+wY$u%ie`<&l3BO=#%R<@jvsmh4Jl3`nd$rixD0_Wwr_ZxQ z?y z9QGFHCbpiw$DDK{NcF_lvsBtSmPs_^Dn2OlCQM$T3772d@pOtC-%L$c@xjuqST`%X zXQz#5>g`$xiG=dS`fY+6eqCWz(vaQNyLho23Ol@BSrvIB2nH*f_FVeVQ3+T zi5Ui0%YJ{a-`ykFY{s;z@J`vYB-k6S4=f5^R`?cj4B}(hR$4s>8sDa&?sT}@kei{w zR|jzoQ|R46JeS=;zYO9zY&%&bZeu%Wf`myTkHmANJH@%m(rKpn0W;o1dnI1N?xlZ7 zJe%*-DBqsTrp#y(rf*_!lf97jVP=l^!vV$mK8@lWkrh2m{JozXvAm2uLBUv9 z_et6i3#p%?$76Ys^bGhIXk8Ng;k#I#z@DXFu*#p)C|mAGqw-@W0aJZ$kY9TTHh=sbR^Ud8?d(DX-NW3We6 z?rWG9kFqRk`jN%Z3kf`p z9i`(5d@y^H&L!}2c8p3Bxs@HK#zbU;6V#Q+i`n0a5}}Z{ke2pCpyP==iM=fZC}i(Y zbP~6k-o-J=xZY%++aFv!%@+#WX9s(QQ16i=3BmQghT1=6rbJg;eRV@ks|dr7XcM-w zk7;ibGQ=nJ5$M=SV#x^SKJYUrOP|PylUIaQ1Aa=*WNyp-3=8Sl3;_cH*>6{Uf0D4c zI8+??Io*-W%cL(rSfU&nltrH<^VE!gVHl59r`s0@+neNIK+t|g$r^6wUu%?#sV17O zfqhSle1d2{3;nDY6W`Ky4P5>^jWT{tE`6YZ%D$)XG%(E>GHW5g4^*Y)S^URHQtH<7 zRO`QSTBzigY*H^3O4kBv`H^ZH)QsDj3)SklgA?7hXymD6x*Yj8{9qnQUI+g;#|P-mIr&(1c-1;0}nk-OXH9b1DFfE?X`Y4U&^Kv3UdqHc3pvJoId7TBss}?eRq1&FvyfL0r_G|a?-h-R~=8t@QCL%&0+pE%M2iGI{|$kj^Wl zLabY;FNvGughL9G6w$?WL~$|YX25MrKp;}KD~!0b&+y61Lr%HJ8H~8>V8I^u&Q+~h zN}Dqvd>JMMC@{oMnK@Z_jh*^3kkQMvipG>dYqOD&N(?-K578<|8w}KJK&h^vSq7dh z4aHtn5eecz)jGqq%F>g@cr~Gpz;YS#`(Wk6xHvYFel;K`j-m`BxA4(gg>6ZrsYWEJ zF|@!4C5)wwMyRBc_8NJyG!C0>iY?bj^H1Xn7mPecs=}N_B==a@Nk~7Q$}{1v6KH-W z)He~!W<@t4jqb^Wq8;>DCR8(tj%V`Wv#YVFRCD6qE&*rih`-Z$TeHR z3jak-bBDq%Sq|9Sf?oGZM_63MrB!UJQ)$;pL{x)?r)RZ+Qh<|IxjWbscFI5qkv}mP zHG{6R@Jv2iODE3YOm)|@7H(j3>9_@TbRISjRd&~#sGCFmmMoqw&Bt7-()4(`dg}$W z&dv==-<%j)^An4g#2wmcT^1k8I_Rk^@Nk13xT1uck_R-o5OaC7;tgig)Cc^&NbUAw zQco?nvb4BM9xv1Wp*%zBzA=ebWb zw_iMRk(Hud^J+5=+VtyLy2%%E?qJXu-_icDIX$So>G z4_R$+t}r#(_-NjXyt9L4#yfhwJ~i@|(_=QIi){B5}pOCq=$nSDz}6VbV;eW-?RJrJFpC zDWN)-91i;ei$nG)j+XXGz2R^KA?&4>ig*^=M}0*AN&6|W7=H02l@%kJo}!Loo+~{K z4i>U@;MKLOm?yGl=<#A+z@HTf*AN?dBR!{8oNs5-#j#vsf1=D1Nbo#WmGE%@lB-JK zfiG&wIhE@RkO=&020Z|-0thq)1L014tsH2KfZ>CfFID>VY4k%0&n`HGp#Xpa@Y$Uq zcUv&%5Bs|9p5U@bsXPn_O!Q29<`Pg7M z*Q=l?Qr>*VL_gu}#r{f3rI7hGvX?^U*U4SV>(~)`q!c^;Mz58k4!?mNR@$A%&6H3E z0DV+cTT8t9sKec&-lXwmKpMx$TLyg{2X!f)Y8HC9jHd%*9xg+4{hfX&<2n2-=pl~l zX|Nq|<87+4^E~T2*zg+@0Twwto?veTNxUoaT^W0i_S#Xt-={u14E6zCv?E^rLAG+# zwvVW)96Q#NeE~{#iZny`X!a@94Z*AD zpQ=2xWeC9iXLQ#PUYPqiSP2}e0-#R0OSX&HTP#-x{lOkJq`#oghTsMHB?t?YiLOj4 ztUyWqiYhCh&2MO41#WqoR#)J(Z|Q*wc*J+~S26mY&Q$PGK$k^Bp|rCiXj7H4QHj(w z6c3Fbv`Twg7WKsd#@#g(`ukBNI=Du@9*-1U z+$iAH5qQDGlXfJGnxIp*Jff$@kzC6Yb!2k`^+9QIbkj)aB8hg5V*qe1n9LHO`Et6;q6uS=nX+lg7+lm!8^`dxTpQ>_R+x!bgdDc_ zXK1@4JQ@i*PKY zO=F?EB6?^ns!1`uHWqlXL`Opg;gTY?NrSP$8hJ@uD&g&=R8h$twlYkM0Cx8HmbpDE z?aog01|q!?%tqODG#((G_EzG7TCP)0#^~wHX*7EdhesenK{tfXR>Ei%x+|d3 z@NqEKP-+|p%?%?ze)tHTNW2M=Udc!tjV7FcOAza_+D1{|I8^P?Bvk<~j{%hfR8`8c z$^VW|T#BBnpTyE=gc8!z>d>Zxf0ves0(8b7>2 zr|kQ08r?ksw`ruuC&0OzbhIu6boI*wD7l%ECt}Xoua^3WsOl}?Zcq+S$%vaA^r-2m zl{QaAmUPj9iD*Z(VLhLgdf+!dP2@?^bd0m=)!<0P5=a<#-eDJZ*{;`Pvxs!my z+sQu(r*zQmlMr2QtQwR(pQp$7F7*36!r}|*jY$yAqf=Ur8EC>bCdIpi`+7lYQ+6&f z=o{Su_hQuTOXXa~ifLP~C3>i!TSU!M(PbI(0h3f*x0p6mBhhx!o@$=UeL6avh`TsP zBkP>5=85L3v0Hsk^aK~-()LL~wYes)vV_tm1Dg5CF&X;p0%4)TylJ$0GS8F(7+UH3 zv&^9VKOhsNKTn1Sbko<9fw`8Ft_DncXnYMEVHtJQK)cJaxqzC|@JJ1Of#>+18btaE zOcv2r8Iko)4bK3K{kDdWmR4bU0R1PGR0ABiJ>gKR9Fo->xEkw`_Cc525#imD<_;3gGt-=Y%_9A(XmNo1(wDg0I)ot(!Ck}f@lg!*oy_Bw>HwBEs~Ii4k3IAO1CV6RiwmZzx?0|g_!vUH?@Cf4&o(j6F@>6bBxSHW=yb=4y< zi8jQQZf2O2A#c@uv8V?9ri?!q`%v3m+=S3Vn*c{he?=T_~mG|9^aIuy+A z6ONM2c2aOEA6mN$WLGwsM3J{U7K&DDSXNtgyFsBAQ8^THFP8D5_sYSV72Up`2;#mU z>%&DNH0)^Lxz^ufDBif2+tIBxZPQ!P77|kb0s0FYX1RfD|r#7^B?#&%|7@^mzZd z(?fDkq)Y7XZVO%#dJmnLhAg&EEy=0WF_%fPj)*??Q+6Yu$P-l8$V)6wf{mK102!(~ zgTavOP~BV{@f2-tL|%EC4u}oU&=-wxuxBZ$iRW9M!#)vC5e%#5xT(Dnc>5<*-aM9` z;_L~oSlPC+TNb>Y2Yoi3_z0zQV-xbj3v^!-tnwlqY(ktIR9812Ko=2yzsT34TH+9C zo6#^ljKwT+WT2+CHp2&B(kX0AR+9Qau`e4Uxc`~9HltGhg$^_WC%!`8HAA(pQkE0E zU&D4({sv}Led~2v>_lJih>pI06%n}CiLS-p=#UeE@CJS51e83A4SJeyXORcpn>x~H zcorRB&!R8CsgHxGERt1MxA1KJ-!YEGO$79+3r4zTZ_(ZsZkFD`(m=y=sJQOCbfyK( zm-i^U6`=eBtV1%mpQ*sdF*K$>D|6SK$~d`P;ZDu4Y9TpIv0{AbMjySP3ndge6j`WIm8u zH2vI;oDf56=L3ah|BJ;Wq8;Z8%ON3;6}=>LqSq_jEF?nLptwh;N2@^*Pq)wF2D89x z0s^SG(W|};#G^*;@p%#>O!svFiX_nVy4 z0cpa)P!?Hd^UPt{{aYGAi&O2B-77;@%!w2*aEoa{kJ{@B*)W@_w9M7Vi&r+9h}I8zFxMbu8c|S;D1%V}whk zYZw+(cga#!I2=Qv**5h}r8<;q(h>BF3-6kdSTaIaX0$6OcA&71rn7UnW!M5^?ixV4#Dk9ORDn#Ylf;sEJi%*JC72X;V zB*t0S+}7-J(L~`@ZM0zl{AhZV=s2sA%!pDyk{zFi(`M39ggTo=U(e%3w%On+B2y?0 z_@vj5#y7lZx%hN72lH9<(oE!%Z@oM*b1ufhJFYa6>JIZngq!K$Y#zN}em{}$sz|8~ zA&bIM7hpjsWxy10=umtAn0sG@+G1dk$NMw%w+Ky`B8jlC& zrg=PW+@j%E4>x9uZwbi0q9*>vE!DPYC?Gt*NE@f~ zn9LwZgtF@cp|Cp;c1G|EzDRTvn}uYtl3q6uzydE9}} z8nP{b16@n|rgH%jdY8b=jYx85)oegQ6-$yJ|l?srAl-&R{G5^vRmjD3eMn$ zj9W4Nn?#_#Xl|ngbATW=P~S|%*zI)RJbWwI7&U;xXw^*g+csfu{`QUBeCc7N9<-VM c CachedPeerData? in + return transaction.getPeerCachedData(peerId: id.peerId) + } |> deliverOnMainQueue).start(next: { [weak self] cachedPeerData in + guard let strongSelf = self, let cachedPeerData = cachedPeerData else { + return + } + strongSelf.push(messageStatsController(context: context, messageId: id, cachedPeerData: cachedPeerData)) + }) }, requestMessageUpdate: { [weak self] id in if let strongSelf = self { strongSelf.chatDisplayNode.historyNode.requestMessageUpdate(id) diff --git a/submodules/TelegramUI/Sources/ChatControllerInteraction.swift b/submodules/TelegramUI/Sources/ChatControllerInteraction.swift index e621793b77..a82478a91c 100644 --- a/submodules/TelegramUI/Sources/ChatControllerInteraction.swift +++ b/submodules/TelegramUI/Sources/ChatControllerInteraction.swift @@ -114,6 +114,7 @@ public final class ChatControllerInteraction { let openPeerContextMenu: (Peer, ASDisplayNode, CGRect, ContextGesture?) -> Void let openMessageReplies: (MessageId, Bool, Bool) -> Void let openReplyThreadOriginalMessage: (Message) -> Void + let openMessageStats: (MessageId) -> Void let requestMessageUpdate: (MessageId) -> Void let cancelInteractiveKeyboardGestures: () -> Void @@ -199,6 +200,7 @@ public final class ChatControllerInteraction { openPeerContextMenu: @escaping (Peer, ASDisplayNode, CGRect, ContextGesture?) -> Void, openMessageReplies: @escaping (MessageId, Bool, Bool) -> Void, openReplyThreadOriginalMessage: @escaping (Message) -> Void, + openMessageStats: @escaping (MessageId) -> Void, requestMessageUpdate: @escaping (MessageId) -> Void, cancelInteractiveKeyboardGestures: @escaping () -> Void, automaticMediaDownloadSettings: MediaAutoDownloadSettings, @@ -271,6 +273,7 @@ public final class ChatControllerInteraction { self.openPeerContextMenu = openPeerContextMenu self.openMessageReplies = openMessageReplies self.openReplyThreadOriginalMessage = openReplyThreadOriginalMessage + self.openMessageStats = openMessageStats self.requestMessageUpdate = requestMessageUpdate self.cancelInteractiveKeyboardGestures = cancelInteractiveKeyboardGestures @@ -321,6 +324,7 @@ public final class ChatControllerInteraction { }, openPeerContextMenu: { _, _, _, _ in }, openMessageReplies: { _, _, _ in }, openReplyThreadOriginalMessage: { _ in + }, openMessageStats: { _ in }, requestMessageUpdate: { _ in }, cancelInteractiveKeyboardGestures: { }, automaticMediaDownloadSettings: MediaAutoDownloadSettings.defaultSettings, diff --git a/submodules/TelegramUI/Sources/ChatInterfaceStateContextMenus.swift b/submodules/TelegramUI/Sources/ChatInterfaceStateContextMenus.swift index 3a5e6be5fb..a0957b131d 100644 --- a/submodules/TelegramUI/Sources/ChatInterfaceStateContextMenus.swift +++ b/submodules/TelegramUI/Sources/ChatInterfaceStateContextMenus.swift @@ -605,7 +605,7 @@ func contextMenuForChatPresentationIntefaceState(chatPresentationInterfaceState: }) }))) } - + if data.canEdit { actions.append(.action(ContextMenuActionItem(text: chatPresentationInterfaceState.strings.Conversation_MessageDialogEdit, icon: { theme in return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Edit"), color: theme.actionSheet.primaryTextColor) @@ -808,9 +808,26 @@ func contextMenuForChatPresentationIntefaceState(chatPresentationInterfaceState: } var clearCacheAsDelete = false - if let _ = message.peers[message.id.peerId] as? TelegramChannel { + if message.id.peerId.namespace == Namespaces.Peer.CloudChannel { + var views: Int = 0 + for attribute in message.attributes { + if let attribute = attribute as? ViewCountMessageAttribute { + views = attribute.count + } + } + if views >= 100 { + actions.append(.action(ContextMenuActionItem(text: chatPresentationInterfaceState.strings.Conversation_ContextViewStats, icon: { theme in + return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Statistics"), color: theme.actionSheet.primaryTextColor) + }, action: { c, _ in + c.dismiss(completion: { + controllerInteraction.openMessageStats(messages[0].id) + }) + }))) + } + clearCacheAsDelete = true } + if !isReplyThreadHead, (!data.messageActions.options.intersection([.deleteLocally, .deleteGlobally]).isEmpty || clearCacheAsDelete) && !isAction { let title: String var isSending = false diff --git a/submodules/TelegramUI/Sources/ChatRecentActionsControllerNode.swift b/submodules/TelegramUI/Sources/ChatRecentActionsControllerNode.swift index e73b020249..eee2deff98 100644 --- a/submodules/TelegramUI/Sources/ChatRecentActionsControllerNode.swift +++ b/submodules/TelegramUI/Sources/ChatRecentActionsControllerNode.swift @@ -453,6 +453,7 @@ final class ChatRecentActionsControllerNode: ViewControllerTracingNode { }, openPeerContextMenu: { _, _, _, _ in }, openMessageReplies: { _, _, _ in }, openReplyThreadOriginalMessage: { _ in + }, openMessageStats: { _ in }, requestMessageUpdate: { _ in }, cancelInteractiveKeyboardGestures: { }, automaticMediaDownloadSettings: self.automaticMediaDownloadSettings, diff --git a/submodules/TelegramUI/Sources/DrawingStickersScreen.swift b/submodules/TelegramUI/Sources/DrawingStickersScreen.swift index 21a0be632a..bca3e25df1 100644 --- a/submodules/TelegramUI/Sources/DrawingStickersScreen.swift +++ b/submodules/TelegramUI/Sources/DrawingStickersScreen.swift @@ -146,6 +146,7 @@ private final class DrawingStickersScreenNode: ViewControllerTracingNode { }, openPeerContextMenu: { _, _, _, _ in }, openMessageReplies: { _, _, _ in }, openReplyThreadOriginalMessage: { _ in + }, openMessageStats: { _ in }, requestMessageUpdate: { _ in }, cancelInteractiveKeyboardGestures: { }, automaticMediaDownloadSettings: MediaAutoDownloadSettings.defaultSettings, diff --git a/submodules/TelegramUI/Sources/OverlayAudioPlayerControllerNode.swift b/submodules/TelegramUI/Sources/OverlayAudioPlayerControllerNode.swift index 0f8bb7cdc3..3478f43a4c 100644 --- a/submodules/TelegramUI/Sources/OverlayAudioPlayerControllerNode.swift +++ b/submodules/TelegramUI/Sources/OverlayAudioPlayerControllerNode.swift @@ -136,6 +136,7 @@ final class OverlayAudioPlayerControllerNode: ViewControllerTracingNode, UIGestu }, openPeerContextMenu: { _, _, _, _ in }, openMessageReplies: { _, _, _ in }, openReplyThreadOriginalMessage: { _ in + }, openMessageStats: { _ in }, requestMessageUpdate: { _ in }, cancelInteractiveKeyboardGestures: { }, automaticMediaDownloadSettings: MediaAutoDownloadSettings.defaultSettings, pollActionState: ChatInterfacePollActionState(), stickerSettings: ChatInterfaceStickerSettings(loopAnimatedStickers: false)) diff --git a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift index 6873b25754..b3f23f2133 100644 --- a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift +++ b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift @@ -1961,6 +1961,7 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD }, openPeerContextMenu: { _, _, _, _ in }, openMessageReplies: { _, _, _ in }, openReplyThreadOriginalMessage: { _ in + }, openMessageStats: { _ in }, requestMessageUpdate: { _ in }, cancelInteractiveKeyboardGestures: { }, automaticMediaDownloadSettings: MediaAutoDownloadSettings.defaultSettings, diff --git a/submodules/TelegramUI/Sources/SharedAccountContext.swift b/submodules/TelegramUI/Sources/SharedAccountContext.swift index c138ed9e9f..85e6b8cda5 100644 --- a/submodules/TelegramUI/Sources/SharedAccountContext.swift +++ b/submodules/TelegramUI/Sources/SharedAccountContext.swift @@ -1200,6 +1200,7 @@ public final class SharedAccountContextImpl: SharedAccountContext { }, openPeerContextMenu: { _, _, _, _ in }, openMessageReplies: { _, _, _ in }, openReplyThreadOriginalMessage: { _ in + }, openMessageStats: { _ in }, requestMessageUpdate: { _ in }, cancelInteractiveKeyboardGestures: { }, automaticMediaDownloadSettings: MediaAutoDownloadSettings.defaultSettings, diff --git a/submodules/TelegramUniversalVideoContent/Sources/WebEmbedPlayerNode.swift b/submodules/TelegramUniversalVideoContent/Sources/WebEmbedPlayerNode.swift index 40cf0fec67..a1befcddf1 100644 --- a/submodules/TelegramUniversalVideoContent/Sources/WebEmbedPlayerNode.swift +++ b/submodules/TelegramUniversalVideoContent/Sources/WebEmbedPlayerNode.swift @@ -75,18 +75,24 @@ final class WebEmbedPlayerNode: ASDisplayNode, WKNavigationDelegate { let impl: WebEmbedImplementation + private let openUrl: (URL) -> Void private let intrinsicDimensions: CGSize private let webView: WKWebView private let semaphore = DispatchSemaphore(value: 0) private let queue = Queue() - init(impl: WebEmbedImplementation, intrinsicDimensions: CGSize) { + init(impl: WebEmbedImplementation, intrinsicDimensions: CGSize, openUrl: @escaping (URL) -> Void) { self.impl = impl self.intrinsicDimensions = intrinsicDimensions + self.openUrl = openUrl let userContentController = WKUserContentController() - userContentController.addUserScript(WKUserScript(source: "var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta)", injectionTime: .atDocumentEnd, forMainFrameOnly: true)) + if impl is YoutubeEmbedImplementation { + + } else { + userContentController.addUserScript(WKUserScript(source: "var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta)", injectionTime: .atDocumentEnd, forMainFrameOnly: true)) + } let configuration = WKWebViewConfiguration() configuration.allowsInlineMediaPlayback = true @@ -112,6 +118,8 @@ final class WebEmbedPlayerNode: ASDisplayNode, WKNavigationDelegate { self.webView.navigationDelegate = self self.webView.scrollView.isScrollEnabled = false + self.webView.allowsLinkPreview = false + self.webView.allowsBackForwardNavigationGestures = false if #available(iOSApplicationExtension 11.0, iOS 11.0, *) { self.webView.accessibilityIgnoresInvertColors = true self.webView.scrollView.contentInsetAdjustmentBehavior = .never @@ -159,19 +167,19 @@ final class WebEmbedPlayerNode: ASDisplayNode, WKNavigationDelegate { } func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) { - + print("w") } - + func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { self.impl.pageReady() } - + func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) { if let error = error as? WKError, error.code.rawValue == 204 { return } } - + func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { if let url = navigationAction.request.url, url.scheme == "embed" { self.impl.callback(url: url) @@ -179,6 +187,9 @@ final class WebEmbedPlayerNode: ASDisplayNode, WKNavigationDelegate { } else if let _ = navigationAction.targetFrame { decisionHandler(.allow) } else { + if let url = navigationAction.request.url, url.absoluteString.contains("youtube") { + self.openUrl(url) + } decisionHandler(.cancel) } } diff --git a/submodules/TelegramUniversalVideoContent/Sources/WebEmbedVideoContent.swift b/submodules/TelegramUniversalVideoContent/Sources/WebEmbedVideoContent.swift index 182b2953dc..705ad529b6 100644 --- a/submodules/TelegramUniversalVideoContent/Sources/WebEmbedVideoContent.swift +++ b/submodules/TelegramUniversalVideoContent/Sources/WebEmbedVideoContent.swift @@ -19,8 +19,9 @@ public final class WebEmbedVideoContent: UniversalVideoContent { public let dimensions: CGSize public let duration: Int32 let forcedTimestamp: Int? + let openUrl: (URL) -> Void - public init?(webPage: TelegramMediaWebpage, webpageContent: TelegramMediaWebpageLoadedContent, forcedTimestamp: Int? = nil) { + public init?(webPage: TelegramMediaWebpage, webpageContent: TelegramMediaWebpageLoadedContent, forcedTimestamp: Int? = nil, openUrl: @escaping (URL) -> Void) { guard let embedUrl = webpageContent.embedUrl else { return nil } @@ -30,10 +31,11 @@ public final class WebEmbedVideoContent: UniversalVideoContent { self.dimensions = webpageContent.embedSize?.cgSize ?? CGSize(width: 128.0, height: 128.0) self.duration = Int32(webpageContent.duration ?? (0 as Int)) self.forcedTimestamp = forcedTimestamp + self.openUrl = openUrl } public func makeContentNode(postbox: Postbox, audioSession: ManagedAudioSession) -> UniversalVideoContentNode & ASDisplayNode { - return WebEmbedVideoContentNode(postbox: postbox, audioSessionManager: audioSession, webPage: self.webPage, webpageContent: self.webpageContent, forcedTimestamp: self.forcedTimestamp) + return WebEmbedVideoContentNode(postbox: postbox, audioSessionManager: audioSession, webPage: self.webPage, webpageContent: self.webpageContent, forcedTimestamp: self.forcedTimestamp, openUrl: self.openUrl) } } @@ -70,7 +72,7 @@ final class WebEmbedVideoContentNode: ASDisplayNode, UniversalVideoContentNode { private var readyDisposable = MetaDisposable() - init(postbox: Postbox, audioSessionManager: ManagedAudioSession, webPage: TelegramMediaWebpage, webpageContent: TelegramMediaWebpageLoadedContent, forcedTimestamp: Int? = nil) { + init(postbox: Postbox, audioSessionManager: ManagedAudioSession, webPage: TelegramMediaWebpage, webpageContent: TelegramMediaWebpageLoadedContent, forcedTimestamp: Int? = nil, openUrl: @escaping (URL) -> Void) { self.webpageContent = webpageContent if let embedSize = webpageContent.embedSize { @@ -83,7 +85,7 @@ final class WebEmbedVideoContentNode: ASDisplayNode, UniversalVideoContentNode { let embedType = webEmbedType(content: webpageContent, forcedTimestamp: forcedTimestamp) let embedImpl = webEmbedImplementation(for: embedType) - self.playerNode = WebEmbedPlayerNode(impl: embedImpl, intrinsicDimensions: self.intrinsicDimensions) + self.playerNode = WebEmbedPlayerNode(impl: embedImpl, intrinsicDimensions: self.intrinsicDimensions, openUrl: openUrl) super.init() diff --git a/submodules/TelegramUniversalVideoContent/Sources/YoutubeEmbedImplementation.swift b/submodules/TelegramUniversalVideoContent/Sources/YoutubeEmbedImplementation.swift index 534a88ed92..7bb56feac0 100644 --- a/submodules/TelegramUniversalVideoContent/Sources/YoutubeEmbedImplementation.swift +++ b/submodules/TelegramUniversalVideoContent/Sources/YoutubeEmbedImplementation.swift @@ -174,8 +174,8 @@ final class YoutubeEmbedImplementation: WebEmbedImplementation { updateStatus(self.status) let html = String(format: htmlTemplate, paramsJson) - webView.loadHTMLString(html, baseURL: URL(string: "https://youtube.com/")) - webView.isUserInteractionEnabled = false + webView.loadHTMLString(html, baseURL: URL(string: "https://messenger.telegram.org")) +// webView.isUserInteractionEnabled = false userContentController.addUserScript(WKUserScript(source: userScript, injectionTime: .atDocumentEnd, forMainFrameOnly: false)) } From de039d7303475e123845a26d1a410cee6a48b881 Mon Sep 17 00:00:00 2001 From: Ali <> Date: Tue, 6 Oct 2020 15:04:01 +0100 Subject: [PATCH 08/15] [WIP] Pinned messages --- Telegram/NotificationService/Serialization.m | 2 +- .../Telegram-iOS/en.lproj/Localizable.strings | 1 + .../Sources/LegacySuggestionContext.swift | 2 +- .../Sources/SearchPeerMembers.swift | 47 +- submodules/TelegramApi/Sources/Api0.swift | 1 + submodules/TelegramApi/Sources/Api1.swift | 20 + submodules/TelegramApi/Sources/Api3.swift | 38 +- .../TelegramCore/Sources/SearchMessages.swift | 10 +- .../TelegramCore/Sources/Serialization.swift | 2 +- .../Sources/PresentationStrings.swift | 2403 +++++++++-------- .../Resources/PresentationStrings.mapping | Bin 156951 -> 156997 bytes .../TelegramUI/Sources/ChatController.swift | 89 +- .../Sources/ChatControllerNode.swift | 2 +- .../Sources/ChatHistoryListNode.swift | 10 + .../ChatInterfaceStateContextMenus.swift | 2 +- .../ChatInterfaceStateContextQueries.swift | 4 +- .../ChatInterfaceTitlePanelNodes.swift | 2 +- .../ChatPinnedMessageTitlePanelNode.swift | 78 +- .../ChatPresentationInterfaceState.swift | 41 +- .../WalletUI/Resources/WalletStrings.mapping | Bin 8422 -> 8422 bytes .../WalletUI/Sources/WalletStrings.swift | 4 +- 21 files changed, 1477 insertions(+), 1281 deletions(-) diff --git a/Telegram/NotificationService/Serialization.m b/Telegram/NotificationService/Serialization.m index f137bbe5df..cce25b19cc 100644 --- a/Telegram/NotificationService/Serialization.m +++ b/Telegram/NotificationService/Serialization.m @@ -3,7 +3,7 @@ @implementation Serialization - (NSUInteger)currentLayer { - return 119; + return 120; } - (id _Nullable)parseMessage:(NSData * _Nullable)data { diff --git a/Telegram/Telegram-iOS/en.lproj/Localizable.strings b/Telegram/Telegram-iOS/en.lproj/Localizable.strings index 337a3fdeb7..2beee1714b 100644 --- a/Telegram/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram/Telegram-iOS/en.lproj/Localizable.strings @@ -1921,6 +1921,7 @@ "Conversation.Unpin" = "Unpin"; "Conversation.Report" = "Report Spam"; "Conversation.PinnedMessage" = "Pinned Message"; +"Conversation.PinnedPreviousMessage" = "Previous Message"; "Conversation.Moderate.Delete" = "Delete Message"; "Conversation.Moderate.Ban" = "Ban User"; diff --git a/submodules/LegacyMediaPickerUI/Sources/LegacySuggestionContext.swift b/submodules/LegacyMediaPickerUI/Sources/LegacySuggestionContext.swift index 4580ff3d45..ab405bf084 100644 --- a/submodules/LegacyMediaPickerUI/Sources/LegacySuggestionContext.swift +++ b/submodules/LegacyMediaPickerUI/Sources/LegacySuggestionContext.swift @@ -14,7 +14,7 @@ public func legacySuggestionContext(context: AccountContext, peerId: PeerId, cha suggestionContext.userListSignal = { query in return SSignal { subscriber in if let query = query { - let disposable = searchPeerMembers(context: context, peerId: peerId, chatLocation: chatLocation, query: query).start(next: { peers in + let disposable = searchPeerMembers(context: context, peerId: peerId, chatLocation: chatLocation, query: query, scope: .mention).start(next: { peers in let users = NSMutableArray() for peer in peers { let user = TGUser() diff --git a/submodules/SearchPeerMembers/Sources/SearchPeerMembers.swift b/submodules/SearchPeerMembers/Sources/SearchPeerMembers.swift index a7b38b0465..df45680f8d 100644 --- a/submodules/SearchPeerMembers/Sources/SearchPeerMembers.swift +++ b/submodules/SearchPeerMembers/Sources/SearchPeerMembers.swift @@ -5,20 +5,25 @@ import SyncCore import SwiftSignalKit import AccountContext -public func searchPeerMembers(context: AccountContext, peerId: PeerId, chatLocation: ChatLocation, query: String) -> Signal<[Peer], NoError> { +public enum SearchPeerMembersScope { + case memberSuggestion + case mention +} + +public func searchPeerMembers(context: AccountContext, peerId: PeerId, chatLocation: ChatLocation, query: String, scope: SearchPeerMembersScope) -> Signal<[Peer], NoError> { if case .replyThread = chatLocation { return .single([]) } else if peerId.namespace == Namespaces.Peer.CloudChannel { return context.account.postbox.transaction { transaction -> CachedChannelData? in return transaction.getPeerCachedData(peerId: peerId) as? CachedChannelData } - |> mapToSignal { cachedData -> Signal<[Peer], NoError> in + |> mapToSignal { cachedData -> Signal<([Peer], Bool), NoError> in if let cachedData = cachedData, let memberCount = cachedData.participantsSummary.memberCount, memberCount <= 64 { return Signal { subscriber in let (disposable, _) = context.peerChannelMemberCategoriesContextsManager.recent(postbox: context.account.postbox, network: context.account.network, accountPeerId: context.account.peerId, peerId: peerId, searchQuery: nil, requestUpdate: false, updated: { state in if case .ready = state.loadingState { let normalizedQuery = query.lowercased() - subscriber.putNext(state.list.compactMap { participant -> Peer? in + subscriber.putNext((state.list.compactMap { participant -> Peer? in if participant.peer.isDeleted { return nil } @@ -37,7 +42,7 @@ public func searchPeerMembers(context: AccountContext, peerId: PeerId, chatLocat return nil } - }) + }, true)) } }) @@ -51,12 +56,12 @@ public func searchPeerMembers(context: AccountContext, peerId: PeerId, chatLocat return Signal { subscriber in let (disposable, _) = context.peerChannelMemberCategoriesContextsManager.recent(postbox: context.account.postbox, network: context.account.network, accountPeerId: context.account.peerId, peerId: peerId, searchQuery: query.isEmpty ? nil : query, updated: { state in if case .ready = state.loadingState { - subscriber.putNext(state.list.compactMap { participant in + subscriber.putNext((state.list.compactMap { participant in if participant.peer.isDeleted { return nil } return participant.peer - }) + }, true)) } }) @@ -65,6 +70,36 @@ public func searchPeerMembers(context: AccountContext, peerId: PeerId, chatLocat } } |> runOn(Queue.mainQueue()) } + |> mapToSignal { result, isReady -> Signal<[Peer], NoError> in + switch scope { + case .mention: + return .single(result) + case .memberSuggestion: + return context.account.postbox.transaction { transaction -> [Peer] in + var result = result + let normalizedQuery = query.lowercased() + if isReady { + if let channel = transaction.getPeer(peerId) as? TelegramChannel, case .group = channel.info { + var matches = false + if normalizedQuery.isEmpty { + matches = true + } else { + if channel.indexName.matchesByTokens(normalizedQuery) { + matches = true + } + if let addressName = channel.addressName, addressName.lowercased().hasPrefix(normalizedQuery) { + matches = true + } + } + if matches { + result.insert(channel, at: 0) + } + } + } + return result + } + } + } } else { return searchGroupMembers(postbox: context.account.postbox, network: context.account.network, accountPeerId: context.account.peerId, peerId: peerId, query: query) } diff --git a/submodules/TelegramApi/Sources/Api0.swift b/submodules/TelegramApi/Sources/Api0.swift index 8a137c3a69..dd824ff79f 100644 --- a/submodules/TelegramApi/Sources/Api0.swift +++ b/submodules/TelegramApi/Sources/Api0.swift @@ -322,6 +322,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = { dict[106343499] = { return Api.ChannelParticipantsFilter.parse_channelParticipantsSearch($0) } dict[-1548400251] = { return Api.ChannelParticipantsFilter.parse_channelParticipantsKicked($0) } dict[-1150621555] = { return Api.ChannelParticipantsFilter.parse_channelParticipantsContacts($0) } + dict[915357814] = { return Api.ChannelParticipantsFilter.parse_channelParticipantsMentions($0) } dict[-350980120] = { return Api.WebPage.parse_webPageEmpty($0) } dict[-981018084] = { return Api.WebPage.parse_webPagePending($0) } dict[-392411726] = { return Api.WebPage.parse_webPage($0) } diff --git a/submodules/TelegramApi/Sources/Api1.swift b/submodules/TelegramApi/Sources/Api1.swift index 5a1cdb630c..8e35f0b9c5 100644 --- a/submodules/TelegramApi/Sources/Api1.swift +++ b/submodules/TelegramApi/Sources/Api1.swift @@ -9991,6 +9991,7 @@ public extension Api { case channelParticipantsSearch(q: String) case channelParticipantsKicked(q: String) case channelParticipantsContacts(q: String) + case channelParticipantsMentions(q: String) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { switch self { @@ -10036,6 +10037,12 @@ public extension Api { } serializeString(q, buffer: buffer, boxed: false) break + case .channelParticipantsMentions(let q): + if boxed { + buffer.appendInt32(915357814) + } + serializeString(q, buffer: buffer, boxed: false) + break } } @@ -10055,6 +10062,8 @@ public extension Api { return ("channelParticipantsKicked", [("q", q)]) case .channelParticipantsContacts(let q): return ("channelParticipantsContacts", [("q", q)]) + case .channelParticipantsMentions(let q): + return ("channelParticipantsMentions", [("q", q)]) } } @@ -10111,6 +10120,17 @@ public extension Api { return nil } } + public static func parse_channelParticipantsMentions(_ reader: BufferReader) -> ChannelParticipantsFilter? { + var _1: String? + _1 = parseString(reader) + let _c1 = _1 != nil + if _c1 { + return Api.ChannelParticipantsFilter.channelParticipantsMentions(q: _1!) + } + else { + return nil + } + } } public enum WebPage: TypeConstructorDescription { diff --git a/submodules/TelegramApi/Sources/Api3.swift b/submodules/TelegramApi/Sources/Api3.swift index 330dc0faa3..e258ce144b 100644 --- a/submodules/TelegramApi/Sources/Api3.swift +++ b/submodules/TelegramApi/Sources/Api3.swift @@ -3737,9 +3737,26 @@ public extension Api { }) } - public static func search(flags: Int32, peer: Api.InputPeer, q: String, fromId: Api.InputUser?, topMsgId: Int32?, filter: Api.MessagesFilter, minDate: Int32, maxDate: Int32, offsetId: Int32, addOffset: Int32, limit: Int32, maxId: Int32, minId: Int32, hash: Int32) -> (FunctionDescription, Buffer, DeserializeFunctionResponse) { + public static func setTyping(flags: Int32, peer: Api.InputPeer, topMsgId: Int32?, action: Api.SendMessageAction) -> (FunctionDescription, Buffer, DeserializeFunctionResponse) { let buffer = Buffer() - buffer.appendInt32(1310163211) + buffer.appendInt32(1486110434) + serializeInt32(flags, buffer: buffer, boxed: false) + peer.serialize(buffer, true) + if Int(flags) & Int(1 << 0) != 0 {serializeInt32(topMsgId!, buffer: buffer, boxed: false)} + action.serialize(buffer, true) + return (FunctionDescription(name: "messages.setTyping", parameters: [("flags", flags), ("peer", peer), ("topMsgId", topMsgId), ("action", action)]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.Bool? in + let reader = BufferReader(buffer) + var result: Api.Bool? + if let signature = reader.readInt32() { + result = Api.parse(reader, signature: signature) as? Api.Bool + } + return result + }) + } + + public static func search(flags: Int32, peer: Api.InputPeer, q: String, fromId: Api.InputPeer?, topMsgId: Int32?, filter: Api.MessagesFilter, minDate: Int32, maxDate: Int32, offsetId: Int32, addOffset: Int32, limit: Int32, maxId: Int32, minId: Int32, hash: Int32) -> (FunctionDescription, Buffer, DeserializeFunctionResponse) { + let buffer = Buffer() + buffer.appendInt32(204812012) serializeInt32(flags, buffer: buffer, boxed: false) peer.serialize(buffer, true) serializeString(q, buffer: buffer, boxed: false) @@ -3763,23 +3780,6 @@ public extension Api { return result }) } - - public static func setTyping(flags: Int32, peer: Api.InputPeer, topMsgId: Int32?, action: Api.SendMessageAction) -> (FunctionDescription, Buffer, DeserializeFunctionResponse) { - let buffer = Buffer() - buffer.appendInt32(1486110434) - serializeInt32(flags, buffer: buffer, boxed: false) - peer.serialize(buffer, true) - if Int(flags) & Int(1 << 0) != 0 {serializeInt32(topMsgId!, buffer: buffer, boxed: false)} - action.serialize(buffer, true) - return (FunctionDescription(name: "messages.setTyping", parameters: [("flags", flags), ("peer", peer), ("topMsgId", topMsgId), ("action", action)]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.Bool? in - let reader = BufferReader(buffer) - var result: Api.Bool? - if let signature = reader.readInt32() { - result = Api.parse(reader, signature: signature) as? Api.Bool - } - return result - }) - } } public struct channels { public static func readHistory(channel: Api.InputChannel, maxId: Int32) -> (FunctionDescription, Buffer, DeserializeFunctionResponse) { diff --git a/submodules/TelegramCore/Sources/SearchMessages.swift b/submodules/TelegramCore/Sources/SearchMessages.swift index 19eb12abc5..ecca1e4db0 100644 --- a/submodules/TelegramCore/Sources/SearchMessages.swift +++ b/submodules/TelegramCore/Sources/SearchMessages.swift @@ -221,11 +221,11 @@ public func searchMessages(account: Account, location: SearchMessagesLocation, q guard let inputPeer = apiInputPeer(peer) else { return .single((nil, nil)) } - var fromInputUser: Api.InputUser? = nil + var fromInputPeer: Api.InputPeer? = nil var flags: Int32 = 0 if let from = values.from { - fromInputUser = apiInputUser(from) - if let _ = fromInputUser { + fromInputPeer = apiInputPeer(from) + if let _ = fromInputPeer { flags |= (1 << 0) } } @@ -241,7 +241,7 @@ public func searchMessages(account: Account, location: SearchMessagesLocation, q if peer.id.namespace == Namespaces.Peer.CloudChannel && query.isEmpty && fromId == nil && tags == nil && minDate == nil && maxDate == nil { signal = account.network.request(Api.functions.messages.getHistory(peer: inputPeer, offsetId: lowerBound?.id.id ?? 0, offsetDate: 0, addOffset: 0, limit: limit, maxId: Int32.max - 1, minId: 0, hash: 0)) } else { - signal = account.network.request(Api.functions.messages.search(flags: flags, peer: inputPeer, q: query, fromId: fromInputUser, topMsgId: topMsgId?.id, filter: filter, minDate: minDate ?? 0, maxDate: maxDate ?? (Int32.max - 1), offsetId: lowerBound?.id.id ?? 0, addOffset: 0, limit: limit, maxId: Int32.max - 1, minId: 0, hash: 0)) + signal = account.network.request(Api.functions.messages.search(flags: flags, peer: inputPeer, q: query, fromId: fromInputPeer, topMsgId: topMsgId?.id, filter: filter, minDate: minDate ?? 0, maxDate: maxDate ?? (Int32.max - 1), offsetId: lowerBound?.id.id ?? 0, addOffset: 0, limit: limit, maxId: Int32.max - 1, minId: 0, hash: 0)) } peerMessages = signal |> map(Optional.init) @@ -257,7 +257,7 @@ public func searchMessages(account: Account, location: SearchMessagesLocation, q additionalPeerMessages = .single(nil) } else if mainCompleted || !hasAdditional { let lowerBound = state?.additional?.messages.last.flatMap({ $0.index }) - additionalPeerMessages = account.network.request(Api.functions.messages.search(flags: flags, peer: inputPeer, q: query, fromId: fromInputUser, topMsgId: topMsgId?.id, filter: filter, minDate: minDate ?? 0, maxDate: maxDate ?? (Int32.max - 1), offsetId: lowerBound?.id.id ?? 0, addOffset: 0, limit: limit, maxId: Int32.max - 1, minId: 0, hash: 0)) + additionalPeerMessages = account.network.request(Api.functions.messages.search(flags: flags, peer: inputPeer, q: query, fromId: fromInputPeer, topMsgId: topMsgId?.id, filter: filter, minDate: minDate ?? 0, maxDate: maxDate ?? (Int32.max - 1), offsetId: lowerBound?.id.id ?? 0, addOffset: 0, limit: limit, maxId: Int32.max - 1, minId: 0, hash: 0)) |> map(Optional.init) |> `catch` { _ -> Signal in return .single(nil) diff --git a/submodules/TelegramCore/Sources/Serialization.swift b/submodules/TelegramCore/Sources/Serialization.swift index 94cd1882c6..d03f659a53 100644 --- a/submodules/TelegramCore/Sources/Serialization.swift +++ b/submodules/TelegramCore/Sources/Serialization.swift @@ -210,7 +210,7 @@ public class BoxedMessage: NSObject { public class Serialization: NSObject, MTSerialization { public func currentLayer() -> UInt { - return 119 + return 120 } public func parseMessage(_ data: Data!) -> Any! { diff --git a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift index c34a0efba7..02fa3946b6 100644 --- a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift +++ b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift @@ -4393,1390 +4393,1391 @@ public final class PresentationStrings: Equatable { } public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[3936]! } public var CallFeedback_VideoReasonLowQuality: String { return self._s[3937]! } - public var SocksProxySetup_AddProxyTitle: String { return self._s[3938]! } - public var Passport_Identity_AddInternalPassport: String { return self._s[3939]! } + public var Conversation_PinnedPreviousMessage: String { return self._s[3938]! } + public var SocksProxySetup_AddProxyTitle: String { return self._s[3939]! } + public var Passport_Identity_AddInternalPassport: String { return self._s[3940]! } public func ChatList_RemovedFromFolderTooltip(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3940]!, self._r[3940]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3941]!, self._r[3941]!, [_1, _2]) } public func Conversation_SetReminder_RemindToday(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3941]!, self._r[3941]!, [_0]) + return formatWithArgumentRanges(self._s[3942]!, self._r[3942]!, [_0]) } - public var Passport_Identity_GenderFemale: String { return self._s[3942]! } - public var ConvertToSupergroup_HelpTitle: String { return self._s[3945]! } - public var SharedMedia_TitleAll: String { return self._s[3946]! } - public var Settings_Context_Logout: String { return self._s[3947]! } - public var GroupInfo_SetGroupPhotoDelete: String { return self._s[3949]! } - public var Settings_About_Title: String { return self._s[3950]! } - public var StickerSettings_ContextHide: String { return self._s[3951]! } + public var Passport_Identity_GenderFemale: String { return self._s[3943]! } + public var ConvertToSupergroup_HelpTitle: String { return self._s[3946]! } + public var SharedMedia_TitleAll: String { return self._s[3947]! } + public var Settings_Context_Logout: String { return self._s[3948]! } + public var GroupInfo_SetGroupPhotoDelete: String { return self._s[3950]! } + public var Settings_About_Title: String { return self._s[3951]! } + public var StickerSettings_ContextHide: String { return self._s[3952]! } public func AutoDownloadSettings_UpTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3952]!, self._r[3952]!, [_0]) - } - public func Conversation_LiveLocationYouAndOther(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3953]!, self._r[3953]!, [_0]) } - public var Common_Cancel: String { return self._s[3955]! } - public var CallFeedback_Title: String { return self._s[3957]! } - public func Notification_PinnedContactMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3958]!, self._r[3958]!, [_0]) + public func Conversation_LiveLocationYouAndOther(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3954]!, self._r[3954]!, [_0]) } - public var Activity_UploadingVideoMessage: String { return self._s[3959]! } - public var Wallet_TransactionInfo_OtherFeeInfo: String { return self._s[3960]! } - public var MediaPicker_Send: String { return self._s[3961]! } - public var PasscodeSettings_AutoLock_IfAwayFor_1minute: String { return self._s[3962]! } - public var Conversation_LiveLocationYou: String { return self._s[3963]! } - public var Notifications_ExceptionsUnmuted: String { return self._s[3964]! } + public var Common_Cancel: String { return self._s[3956]! } + public var CallFeedback_Title: String { return self._s[3958]! } + public func Notification_PinnedContactMessage(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3959]!, self._r[3959]!, [_0]) + } + public var Activity_UploadingVideoMessage: String { return self._s[3960]! } + public var Wallet_TransactionInfo_OtherFeeInfo: String { return self._s[3961]! } + public var MediaPicker_Send: String { return self._s[3962]! } + public var PasscodeSettings_AutoLock_IfAwayFor_1minute: String { return self._s[3963]! } + public var Conversation_LiveLocationYou: String { return self._s[3964]! } + public var Notifications_ExceptionsUnmuted: String { return self._s[3965]! } public func Channel_AdminLog_MessageGroupPreHistoryHidden(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3965]!, self._r[3965]!, [_0]) + return formatWithArgumentRanges(self._s[3966]!, self._r[3966]!, [_0]) } public func PUSH_CHAT_ADD_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3966]!, self._r[3966]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3967]!, self._r[3967]!, [_1, _2]) } - public var Conversation_ViewBackground: String { return self._s[3967]! } - public var ChatSettings_PrivateChats: String { return self._s[3970]! } - public var Conversation_ErrorInaccessibleMessage: String { return self._s[3971]! } - public var Wallet_Receive_AmountInfo: String { return self._s[3972]! } - public var Appearance_ThemeNight: String { return self._s[3973]! } - public var Common_Search: String { return self._s[3974]! } - public var TwoStepAuth_ReEnterPasswordTitle: String { return self._s[3975]! } - public var ChangePhoneNumberNumber_Help: String { return self._s[3977]! } - public var Stickers_SuggestAdded: String { return self._s[3978]! } - public var Conversation_DiscardVoiceMessageDescription: String { return self._s[3981]! } - public var NetworkUsageSettings_Cellular: String { return self._s[3982]! } - public var CheckoutInfo_Title: String { return self._s[3983]! } - public var Conversation_ShareBotLocationConfirmationTitle: String { return self._s[3984]! } - public var Channel_BotDoesntSupportGroups: String { return self._s[3985]! } + public var Conversation_ViewBackground: String { return self._s[3968]! } + public var ChatSettings_PrivateChats: String { return self._s[3971]! } + public var Conversation_ErrorInaccessibleMessage: String { return self._s[3972]! } + public var Wallet_Receive_AmountInfo: String { return self._s[3973]! } + public var Appearance_ThemeNight: String { return self._s[3974]! } + public var Common_Search: String { return self._s[3975]! } + public var TwoStepAuth_ReEnterPasswordTitle: String { return self._s[3976]! } + public var ChangePhoneNumberNumber_Help: String { return self._s[3978]! } + public var Stickers_SuggestAdded: String { return self._s[3979]! } + public var Conversation_DiscardVoiceMessageDescription: String { return self._s[3982]! } + public var NetworkUsageSettings_Cellular: String { return self._s[3983]! } + public var CheckoutInfo_Title: String { return self._s[3984]! } + public var Conversation_ShareBotLocationConfirmationTitle: String { return self._s[3985]! } + public var Channel_BotDoesntSupportGroups: String { return self._s[3986]! } public func DialogList_SingleRecordingAudioSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3986]!, self._r[3986]!, [_0]) + return formatWithArgumentRanges(self._s[3987]!, self._r[3987]!, [_0]) } - public var MaskStickerSettings_Info: String { return self._s[3987]! } - public var GroupRemoved_DeleteUser: String { return self._s[3988]! } - public var Contacts_ShareTelegram: String { return self._s[3989]! } - public var Group_UpgradeNoticeText1: String { return self._s[3990]! } + public var MaskStickerSettings_Info: String { return self._s[3988]! } + public var GroupRemoved_DeleteUser: String { return self._s[3989]! } + public var Contacts_ShareTelegram: String { return self._s[3990]! } + public var Group_UpgradeNoticeText1: String { return self._s[3991]! } public func PUSH_PHONE_CALL_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3991]!, self._r[3991]!, [_1]) + return formatWithArgumentRanges(self._s[3992]!, self._r[3992]!, [_1]) } - public var PrivacyLastSeenSettings_Title: String { return self._s[3992]! } - public var SettingsSearch_Synonyms_Support: String { return self._s[3996]! } - public var PhotoEditor_TintTool: String { return self._s[3997]! } - public var Wallet_Receive_InvoiceUrlHeader: String { return self._s[3999]! } - public var GroupPermission_NoSendPolls: String { return self._s[4000]! } - public var NotificationsSound_None: String { return self._s[4001]! } + public var PrivacyLastSeenSettings_Title: String { return self._s[3993]! } + public var SettingsSearch_Synonyms_Support: String { return self._s[3997]! } + public var PhotoEditor_TintTool: String { return self._s[3998]! } + public var Wallet_Receive_InvoiceUrlHeader: String { return self._s[4000]! } + public var GroupPermission_NoSendPolls: String { return self._s[4001]! } + public var NotificationsSound_None: String { return self._s[4002]! } public func LOCAL_CHANNEL_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4002]!, self._r[4002]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[4003]!, self._r[4003]!, [_1, "\(_2)"]) } - public var CheckoutInfo_ShippingInfoCityPlaceholder: String { return self._s[4004]! } - public var ExplicitContent_AlertChannel: String { return self._s[4006]! } - public var Conversation_ClousStorageInfo_Description1: String { return self._s[4007]! } - public var Contacts_SortedByPresence: String { return self._s[4008]! } - public var WallpaperSearch_ColorGray: String { return self._s[4009]! } - public var Channel_AdminLogFilter_EventsNewSubscribers: String { return self._s[4010]! } - public var Conversation_ReportSpam: String { return self._s[4011]! } - public var ChatList_Search_NoResultsFilter: String { return self._s[4014]! } - public var WallpaperSearch_ColorBlack: String { return self._s[4015]! } - public var ArchivedChats_IntroTitle3: String { return self._s[4016]! } - public var Conversation_DefaultRestrictedText: String { return self._s[4017]! } - public var Settings_Devices: String { return self._s[4018]! } - public var Call_AudioRouteSpeaker: String { return self._s[4019]! } - public var GroupInfo_InviteLink_CopyLink: String { return self._s[4020]! } - public var Passport_Address_Country: String { return self._s[4022]! } - public var Cache_MaximumCacheSize: String { return self._s[4023]! } - public var Notifications_Badge_IncludePublicGroups: String { return self._s[4024]! } - public var Wallet_Receive_CreateInvoice: String { return self._s[4026]! } - public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[4027]! } - public var Login_TermsOfServiceLabel: String { return self._s[4028]! } - public var Calls_NoMissedCallsPlacehoder: String { return self._s[4029]! } - public var SocksProxySetup_RequiredCredentials: String { return self._s[4030]! } - public var VoiceOver_MessageContextOpenMessageMenu: String { return self._s[4031]! } - public var AutoNightTheme_ScheduledFrom: String { return self._s[4032]! } - public var ChatSettings_AutoDownloadDocuments: String { return self._s[4033]! } - public var ConvertToSupergroup_Note: String { return self._s[4035]! } - public var Settings_SetNewProfilePhotoOrVideo: String { return self._s[4036]! } - public var PrivacySettings_PasscodeAndTouchId: String { return self._s[4037]! } - public var Common_More: String { return self._s[4038]! } - public var ShareMenu_SelectChats: String { return self._s[4040]! } + public var CheckoutInfo_ShippingInfoCityPlaceholder: String { return self._s[4005]! } + public var ExplicitContent_AlertChannel: String { return self._s[4007]! } + public var Conversation_ClousStorageInfo_Description1: String { return self._s[4008]! } + public var Contacts_SortedByPresence: String { return self._s[4009]! } + public var WallpaperSearch_ColorGray: String { return self._s[4010]! } + public var Channel_AdminLogFilter_EventsNewSubscribers: String { return self._s[4011]! } + public var Conversation_ReportSpam: String { return self._s[4012]! } + public var ChatList_Search_NoResultsFilter: String { return self._s[4015]! } + public var WallpaperSearch_ColorBlack: String { return self._s[4016]! } + public var ArchivedChats_IntroTitle3: String { return self._s[4017]! } + public var Conversation_DefaultRestrictedText: String { return self._s[4018]! } + public var Settings_Devices: String { return self._s[4019]! } + public var Call_AudioRouteSpeaker: String { return self._s[4020]! } + public var GroupInfo_InviteLink_CopyLink: String { return self._s[4021]! } + public var Passport_Address_Country: String { return self._s[4023]! } + public var Cache_MaximumCacheSize: String { return self._s[4024]! } + public var Notifications_Badge_IncludePublicGroups: String { return self._s[4025]! } + public var Wallet_Receive_CreateInvoice: String { return self._s[4027]! } + public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[4028]! } + public var Login_TermsOfServiceLabel: String { return self._s[4029]! } + public var Calls_NoMissedCallsPlacehoder: String { return self._s[4030]! } + public var SocksProxySetup_RequiredCredentials: String { return self._s[4031]! } + public var VoiceOver_MessageContextOpenMessageMenu: String { return self._s[4032]! } + public var AutoNightTheme_ScheduledFrom: String { return self._s[4033]! } + public var ChatSettings_AutoDownloadDocuments: String { return self._s[4034]! } + public var ConvertToSupergroup_Note: String { return self._s[4036]! } + public var Settings_SetNewProfilePhotoOrVideo: String { return self._s[4037]! } + public var PrivacySettings_PasscodeAndTouchId: String { return self._s[4038]! } + public var Common_More: String { return self._s[4039]! } + public var ShareMenu_SelectChats: String { return self._s[4041]! } public func Conversation_ScheduleMessage_SendToday(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4042]!, self._r[4042]!, [_0]) - } - public func Channel_AdminLog_MessageRemovedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4043]!, self._r[4043]!, [_0]) } - public var Contacts_PermissionsKeepDisabled: String { return self._s[4045]! } + public func Channel_AdminLog_MessageRemovedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4044]!, self._r[4044]!, [_0]) + } + public var Contacts_PermissionsKeepDisabled: String { return self._s[4046]! } public func Call_ParticipantVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4046]!, self._r[4046]!, [_0]) + return formatWithArgumentRanges(self._s[4047]!, self._r[4047]!, [_0]) } - public var WatchRemote_AlertOpen: String { return self._s[4047]! } + public var WatchRemote_AlertOpen: String { return self._s[4048]! } public func PUSH_CHAT_ADD_MEMBER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4048]!, self._r[4048]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4049]!, self._r[4049]!, [_1, _2, _3]) } - public var Channel_Members_AddMembersHelp: String { return self._s[4049]! } - public var Shortcut_SwitchAccount: String { return self._s[4050]! } - public var Map_LiveLocationFor8Hours: String { return self._s[4051]! } + public var Channel_Members_AddMembersHelp: String { return self._s[4050]! } + public var Shortcut_SwitchAccount: String { return self._s[4051]! } + public var Map_LiveLocationFor8Hours: String { return self._s[4052]! } public func AutoNightTheme_AutomaticHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4052]!, self._r[4052]!, [_0]) + return formatWithArgumentRanges(self._s[4053]!, self._r[4053]!, [_0]) } - public var Compose_NewGroupTitle: String { return self._s[4053]! } - public var DialogList_You: String { return self._s[4054]! } - public var ReportPeer_ReasonViolence: String { return self._s[4055]! } + public var Compose_NewGroupTitle: String { return self._s[4054]! } + public var DialogList_You: String { return self._s[4055]! } + public var ReportPeer_ReasonViolence: String { return self._s[4056]! } public func PUSH_CHANNEL_MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4056]!, self._r[4056]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4057]!, self._r[4057]!, [_1, _2]) } - public var KeyCommand_ScrollDown: String { return self._s[4060]! } - public var ChatSettings_DownloadInBackground: String { return self._s[4061]! } - public var Wallpaper_ResetWallpapers: String { return self._s[4062]! } - public var Channel_BanList_RestrictedTitle: String { return self._s[4063]! } - public var ArchivedChats_IntroText3: String { return self._s[4064]! } - public var HashtagSearch_AllChats: String { return self._s[4066]! } - public var Channel_Info_BlackList: String { return self._s[4068]! } - public var Contacts_SearchUsersAndGroupsLabel: String { return self._s[4069]! } - public var PrivacyPhoneNumberSettings_DiscoveryHeader: String { return self._s[4070]! } - public var Paint_Neon: String { return self._s[4072]! } - public var SettingsSearch_Synonyms_AppLanguage: String { return self._s[4073]! } - public var AutoDownloadSettings_AutoDownload: String { return self._s[4074]! } + public var KeyCommand_ScrollDown: String { return self._s[4061]! } + public var ChatSettings_DownloadInBackground: String { return self._s[4062]! } + public var Wallpaper_ResetWallpapers: String { return self._s[4063]! } + public var Channel_BanList_RestrictedTitle: String { return self._s[4064]! } + public var ArchivedChats_IntroText3: String { return self._s[4065]! } + public var HashtagSearch_AllChats: String { return self._s[4067]! } + public var Channel_Info_BlackList: String { return self._s[4069]! } + public var Contacts_SearchUsersAndGroupsLabel: String { return self._s[4070]! } + public var PrivacyPhoneNumberSettings_DiscoveryHeader: String { return self._s[4071]! } + public var Paint_Neon: String { return self._s[4073]! } + public var SettingsSearch_Synonyms_AppLanguage: String { return self._s[4074]! } + public var AutoDownloadSettings_AutoDownload: String { return self._s[4075]! } public func Notification_PinnedVideoMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4076]!, self._r[4076]!, [_0]) + return formatWithArgumentRanges(self._s[4077]!, self._r[4077]!, [_0]) } - public var Map_StopLiveLocation: String { return self._s[4077]! } - public var SettingsSearch_Synonyms_Data_SaveEditedPhotos: String { return self._s[4078]! } - public var Channel_Username_InvalidCharacters: String { return self._s[4079]! } - public var InstantPage_Reference: String { return self._s[4080]! } - public var ChatList_HideAction: String { return self._s[4082]! } - public var Conversation_FileICloudDrive: String { return self._s[4084]! } + public var Map_StopLiveLocation: String { return self._s[4078]! } + public var SettingsSearch_Synonyms_Data_SaveEditedPhotos: String { return self._s[4079]! } + public var Channel_Username_InvalidCharacters: String { return self._s[4080]! } + public var InstantPage_Reference: String { return self._s[4081]! } + public var ChatList_HideAction: String { return self._s[4083]! } + public var Conversation_FileICloudDrive: String { return self._s[4085]! } public func PUSH_PINNED_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4085]!, self._r[4085]!, [_1]) + return formatWithArgumentRanges(self._s[4086]!, self._r[4086]!, [_1]) } - public var Passport_PasswordReset: String { return self._s[4087]! } - public var ChatList_Context_UnhideArchive: String { return self._s[4089]! } - public var ConvertToSupergroup_HelpText: String { return self._s[4090]! } - public var Calls_AddTab: String { return self._s[4091]! } - public var TwoStepAuth_ConfirmEmailResendCode: String { return self._s[4092]! } - public var SettingsSearch_Synonyms_Stickers_SuggestStickers: String { return self._s[4093]! } - public var Privacy_GroupsAndChannels: String { return self._s[4095]! } - public var AutoNightTheme_Disabled: String { return self._s[4096]! } - public var CreatePoll_MultipleChoice: String { return self._s[4097]! } + public var Passport_PasswordReset: String { return self._s[4088]! } + public var ChatList_Context_UnhideArchive: String { return self._s[4090]! } + public var ConvertToSupergroup_HelpText: String { return self._s[4091]! } + public var Calls_AddTab: String { return self._s[4092]! } + public var TwoStepAuth_ConfirmEmailResendCode: String { return self._s[4093]! } + public var SettingsSearch_Synonyms_Stickers_SuggestStickers: String { return self._s[4094]! } + public var Privacy_GroupsAndChannels: String { return self._s[4096]! } + public var AutoNightTheme_Disabled: String { return self._s[4097]! } + public var CreatePoll_MultipleChoice: String { return self._s[4098]! } public func PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4098]!, self._r[4098]!, [_1]) + return formatWithArgumentRanges(self._s[4099]!, self._r[4099]!, [_1]) } - public var Watch_Bot_Restart: String { return self._s[4100]! } + public var Watch_Bot_Restart: String { return self._s[4101]! } public func Conversation_Kilobytes(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4101]!, self._r[4101]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[4102]!, self._r[4102]!, ["\(_0)"]) } - public var GroupInfo_ScamGroupWarning: String { return self._s[4102]! } - public var Conversation_EditingMessagePanelMedia: String { return self._s[4103]! } - public var Appearance_PreviewIncomingText: String { return self._s[4104]! } - public var Notifications_ChannelNotificationsExceptionsHelp: String { return self._s[4105]! } - public var ChatList_UndoArchiveRevealedTitle: String { return self._s[4107]! } - public var Stats_GroupOverview: String { return self._s[4109]! } - public var ScheduledMessages_EditTime: String { return self._s[4111]! } - public var Month_GenFebruary: String { return self._s[4112]! } - public var ChatList_AutoarchiveSuggestion_OpenSettings: String { return self._s[4113]! } - public var Stickers_ClearRecent: String { return self._s[4114]! } - public var TwoStepAuth_EnterPasswordPassword: String { return self._s[4115]! } + public var GroupInfo_ScamGroupWarning: String { return self._s[4103]! } + public var Conversation_EditingMessagePanelMedia: String { return self._s[4104]! } + public var Appearance_PreviewIncomingText: String { return self._s[4105]! } + public var Notifications_ChannelNotificationsExceptionsHelp: String { return self._s[4106]! } + public var ChatList_UndoArchiveRevealedTitle: String { return self._s[4108]! } + public var Stats_GroupOverview: String { return self._s[4110]! } + public var ScheduledMessages_EditTime: String { return self._s[4112]! } + public var Month_GenFebruary: String { return self._s[4113]! } + public var ChatList_AutoarchiveSuggestion_OpenSettings: String { return self._s[4114]! } + public var Stickers_ClearRecent: String { return self._s[4115]! } + public var TwoStepAuth_EnterPasswordPassword: String { return self._s[4116]! } public func Checkout_PayPrice(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4116]!, self._r[4116]!, [_0]) + return formatWithArgumentRanges(self._s[4117]!, self._r[4117]!, [_0]) } - public var Login_TermsOfServiceSignupDecline: String { return self._s[4117]! } - public var CheckoutInfo_ErrorCityInvalid: String { return self._s[4118]! } - public var VoiceOver_Chat_PlayHint: String { return self._s[4119]! } - public var ChatAdmins_AllMembersAreAdminsOffHelp: String { return self._s[4120]! } - public var CheckoutInfo_ShippingInfoTitle: String { return self._s[4122]! } - public var CreatePoll_Create: String { return self._s[4123]! } - public var ChatList_Search_FilterLinks: String { return self._s[4124]! } - public var Your_cards_number_is_invalid: String { return self._s[4125]! } - public var Month_ShortApril: String { return self._s[4126]! } - public var SocksProxySetup_UseForCalls: String { return self._s[4127]! } - public var Conversation_EditingCaptionPanelTitle: String { return self._s[4128]! } - public var SocksProxySetup_Status: String { return self._s[4129]! } - public var ChannelInfo_DeleteGroupConfirmation: String { return self._s[4130]! } - public var ChatListFolder_CategoryBots: String { return self._s[4131]! } - public var Passport_FieldIdentitySelfieHelp: String { return self._s[4133]! } - public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[4134]! } - public var Wallpaper_ResetWallpapersInfo: String { return self._s[4135]! } - public var Conversation_TitleUnmute: String { return self._s[4136]! } - public var Group_Setup_TypeHeader: String { return self._s[4137]! } - public var Stats_ViewsPerPost: String { return self._s[4138]! } - public var CheckoutInfo_ShippingInfoCountry: String { return self._s[4139]! } - public var Passport_Identity_TranslationHelp: String { return self._s[4140]! } + public var Login_TermsOfServiceSignupDecline: String { return self._s[4118]! } + public var CheckoutInfo_ErrorCityInvalid: String { return self._s[4119]! } + public var VoiceOver_Chat_PlayHint: String { return self._s[4120]! } + public var ChatAdmins_AllMembersAreAdminsOffHelp: String { return self._s[4121]! } + public var CheckoutInfo_ShippingInfoTitle: String { return self._s[4123]! } + public var CreatePoll_Create: String { return self._s[4124]! } + public var ChatList_Search_FilterLinks: String { return self._s[4125]! } + public var Your_cards_number_is_invalid: String { return self._s[4126]! } + public var Month_ShortApril: String { return self._s[4127]! } + public var SocksProxySetup_UseForCalls: String { return self._s[4128]! } + public var Conversation_EditingCaptionPanelTitle: String { return self._s[4129]! } + public var SocksProxySetup_Status: String { return self._s[4130]! } + public var ChannelInfo_DeleteGroupConfirmation: String { return self._s[4131]! } + public var ChatListFolder_CategoryBots: String { return self._s[4132]! } + public var Passport_FieldIdentitySelfieHelp: String { return self._s[4134]! } + public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[4135]! } + public var Wallpaper_ResetWallpapersInfo: String { return self._s[4136]! } + public var Conversation_TitleUnmute: String { return self._s[4137]! } + public var Group_Setup_TypeHeader: String { return self._s[4138]! } + public var Stats_ViewsPerPost: String { return self._s[4139]! } + public var CheckoutInfo_ShippingInfoCountry: String { return self._s[4140]! } + public var Passport_Identity_TranslationHelp: String { return self._s[4141]! } public func PUSH_CHANNEL_MESSAGE_FWD(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4141]!, self._r[4141]!, [_1]) + return formatWithArgumentRanges(self._s[4142]!, self._r[4142]!, [_1]) } - public var GroupInfo_Administrators_Title: String { return self._s[4142]! } + public var GroupInfo_Administrators_Title: String { return self._s[4143]! } public func Channel_AdminLog_MessageRankName(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4143]!, self._r[4143]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4144]!, self._r[4144]!, [_1, _2]) } public func PUSH_CHAT_MESSAGE_POLL(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4144]!, self._r[4144]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4145]!, self._r[4145]!, [_1, _2, _3]) } - public var Wallet_Receive_Title: String { return self._s[4145]! } - public var CheckoutInfo_ShippingInfoState: String { return self._s[4146]! } - public var Passport_Language_my: String { return self._s[4148]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[4149]! } - public var Map_PlacesNearby: String { return self._s[4150]! } - public var Channel_About_Help: String { return self._s[4151]! } - public var LogoutOptions_AddAccountTitle: String { return self._s[4152]! } - public var ChatSettings_AutomaticAudioDownload: String { return self._s[4153]! } - public var Channel_Username_Title: String { return self._s[4154]! } - public var Activity_RecordingVideoMessage: String { return self._s[4155]! } + public var Wallet_Receive_Title: String { return self._s[4146]! } + public var CheckoutInfo_ShippingInfoState: String { return self._s[4147]! } + public var Passport_Language_my: String { return self._s[4149]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[4150]! } + public var Map_PlacesNearby: String { return self._s[4151]! } + public var Channel_About_Help: String { return self._s[4152]! } + public var LogoutOptions_AddAccountTitle: String { return self._s[4153]! } + public var ChatSettings_AutomaticAudioDownload: String { return self._s[4154]! } + public var Channel_Username_Title: String { return self._s[4155]! } + public var Activity_RecordingVideoMessage: String { return self._s[4156]! } public func StickerPackActionInfo_RemovedText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4156]!, self._r[4156]!, [_0]) + return formatWithArgumentRanges(self._s[4157]!, self._r[4157]!, [_0]) } - public var CheckoutInfo_ShippingInfoCity: String { return self._s[4157]! } - public var Passport_DiscardMessageDescription: String { return self._s[4158]! } - public var Conversation_LinkDialogOpen: String { return self._s[4159]! } - public var ChatList_Context_HideArchive: String { return self._s[4160]! } + public var CheckoutInfo_ShippingInfoCity: String { return self._s[4158]! } + public var Passport_DiscardMessageDescription: String { return self._s[4159]! } + public var Conversation_LinkDialogOpen: String { return self._s[4160]! } + public var ChatList_Context_HideArchive: String { return self._s[4161]! } public func Message_AuthorPinnedGame(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4161]!, self._r[4161]!, [_0]) + return formatWithArgumentRanges(self._s[4162]!, self._r[4162]!, [_0]) } - public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[4162]! } - public var Conversation_Admin: String { return self._s[4163]! } - public var DialogList_TabTitle: String { return self._s[4164]! } + public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[4163]! } + public var Conversation_Admin: String { return self._s[4164]! } + public var DialogList_TabTitle: String { return self._s[4165]! } public func PUSH_CHAT_ALBUM(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4165]!, self._r[4165]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4166]!, self._r[4166]!, [_1, _2]) } - public var Notifications_PermissionsUnreachableText: String { return self._s[4166]! } - public var Passport_Identity_GenderMale: String { return self._s[4168]! } - public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[4170]! } - public var PhoneNumberHelp_Alert: String { return self._s[4171]! } - public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[4172]! } - public var Notifications_InAppNotifications: String { return self._s[4173]! } + public var Notifications_PermissionsUnreachableText: String { return self._s[4167]! } + public var Passport_Identity_GenderMale: String { return self._s[4169]! } + public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[4171]! } + public var PhoneNumberHelp_Alert: String { return self._s[4172]! } + public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[4173]! } + public var Notifications_InAppNotifications: String { return self._s[4174]! } public func Update_AppVersion(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4174]!, self._r[4174]!, [_0]) + return formatWithArgumentRanges(self._s[4175]!, self._r[4175]!, [_0]) } - public var Notification_VideoCallOutgoing: String { return self._s[4175]! } - public var Login_InvalidCodeError: String { return self._s[4176]! } - public var Conversation_PrivateChannelTimeLimitedAlertJoin: String { return self._s[4177]! } + public var Notification_VideoCallOutgoing: String { return self._s[4176]! } + public var Login_InvalidCodeError: String { return self._s[4177]! } + public var Conversation_PrivateChannelTimeLimitedAlertJoin: String { return self._s[4178]! } public func LastSeen_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4178]!, self._r[4178]!, [_0]) + return formatWithArgumentRanges(self._s[4179]!, self._r[4179]!, [_0]) } - public var Conversation_InputTextCaptionPlaceholder: String { return self._s[4179]! } - public var ReportPeer_Report: String { return self._s[4180]! } - public var Camera_FlashOff: String { return self._s[4182]! } - public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[4185]! } - public var PrivacyPolicy_DeclineTitle: String { return self._s[4187]! } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndTouchId: String { return self._s[4188]! } - public var Passport_FieldEmail: String { return self._s[4189]! } + public var Conversation_InputTextCaptionPlaceholder: String { return self._s[4180]! } + public var ReportPeer_Report: String { return self._s[4181]! } + public var Camera_FlashOff: String { return self._s[4183]! } + public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[4186]! } + public var PrivacyPolicy_DeclineTitle: String { return self._s[4188]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndTouchId: String { return self._s[4189]! } + public var Passport_FieldEmail: String { return self._s[4190]! } public func Channel_AdminLog_MessageKickedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4190]!, self._r[4190]!, [_1]) + return formatWithArgumentRanges(self._s[4191]!, self._r[4191]!, [_1]) } - public var Notifications_ExceptionsResetToDefaults: String { return self._s[4191]! } - public var PeerInfo_PaneVoiceAndVideo: String { return self._s[4192]! } - public var Group_OwnershipTransfer_Title: String { return self._s[4193]! } - public var Conversation_DefaultRestrictedInline: String { return self._s[4194]! } - public var Login_PhoneNumberHelp: String { return self._s[4196]! } - public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[4197]! } - public var Conversation_PinnedQuiz: String { return self._s[4198]! } - public var CreateGroup_SoftUserLimitAlert: String { return self._s[4199]! } - public var Login_PhoneNumberAlreadyAuthorizedSwitch: String { return self._s[4200]! } - public var Group_MessagePhotoUpdated: String { return self._s[4201]! } - public var LoginPassword_PasswordPlaceholder: String { return self._s[4202]! } - public var Passport_Identity_Translations: String { return self._s[4204]! } - public var ChatAdmins_AllMembersAreAdmins: String { return self._s[4205]! } - public var ChannelInfo_DeleteChannel: String { return self._s[4207]! } - public var PasscodeSettings_HelpBottom: String { return self._s[4208]! } - public var Channel_Members_AddMembers: String { return self._s[4209]! } - public var AutoDownloadSettings_LastDelimeter: String { return self._s[4210]! } - public var Notification_Exceptions_DeleteAllConfirmation: String { return self._s[4212]! } - public var Conversation_HoldForAudio: String { return self._s[4213]! } - public var Watch_LastSeen_Lately: String { return self._s[4215]! } - public var ChatList_Context_MarkAsRead: String { return self._s[4216]! } - public var Conversation_PinnedMessage: String { return self._s[4217]! } - public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[4218]! } - public var Passport_UpdateRequiredError: String { return self._s[4220]! } - public var PrivacySettings_Passcode: String { return self._s[4221]! } + public var Notifications_ExceptionsResetToDefaults: String { return self._s[4192]! } + public var PeerInfo_PaneVoiceAndVideo: String { return self._s[4193]! } + public var Group_OwnershipTransfer_Title: String { return self._s[4194]! } + public var Conversation_DefaultRestrictedInline: String { return self._s[4195]! } + public var Login_PhoneNumberHelp: String { return self._s[4197]! } + public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[4198]! } + public var Conversation_PinnedQuiz: String { return self._s[4199]! } + public var CreateGroup_SoftUserLimitAlert: String { return self._s[4200]! } + public var Login_PhoneNumberAlreadyAuthorizedSwitch: String { return self._s[4201]! } + public var Group_MessagePhotoUpdated: String { return self._s[4202]! } + public var LoginPassword_PasswordPlaceholder: String { return self._s[4203]! } + public var Passport_Identity_Translations: String { return self._s[4205]! } + public var ChatAdmins_AllMembersAreAdmins: String { return self._s[4206]! } + public var ChannelInfo_DeleteChannel: String { return self._s[4208]! } + public var PasscodeSettings_HelpBottom: String { return self._s[4209]! } + public var Channel_Members_AddMembers: String { return self._s[4210]! } + public var AutoDownloadSettings_LastDelimeter: String { return self._s[4211]! } + public var Notification_Exceptions_DeleteAllConfirmation: String { return self._s[4213]! } + public var Conversation_HoldForAudio: String { return self._s[4214]! } + public var Watch_LastSeen_Lately: String { return self._s[4216]! } + public var ChatList_Context_MarkAsRead: String { return self._s[4217]! } + public var Conversation_PinnedMessage: String { return self._s[4218]! } + public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[4219]! } + public var Passport_UpdateRequiredError: String { return self._s[4221]! } + public var PrivacySettings_Passcode: String { return self._s[4222]! } public func Call_EmojiDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4222]!, self._r[4222]!, [_0]) + return formatWithArgumentRanges(self._s[4223]!, self._r[4223]!, [_0]) } - public var AutoNightTheme_NotAvailable: String { return self._s[4223]! } - public var Conversation_PressVolumeButtonForSound: String { return self._s[4224]! } - public var LoginPassword_InvalidPasswordError: String { return self._s[4225]! } - public var ChatListFolder_IncludedSectionHeader: String { return self._s[4226]! } - public var Channel_SignMessages_Help: String { return self._s[4227]! } - public var ChatList_DeleteForEveryoneConfirmationTitle: String { return self._s[4228]! } - public var Conversation_TitleNoComments: String { return self._s[4229]! } - public var MediaPicker_LivePhotoDescription: String { return self._s[4230]! } - public var GroupInfo_Permissions: String { return self._s[4231]! } - public var GroupPermission_NoSendLinks: String { return self._s[4234]! } - public var Passport_Identity_ResidenceCountry: String { return self._s[4235]! } - public var Appearance_ThemeCarouselNightBlue: String { return self._s[4237]! } - public var ChatList_ArchiveAction: String { return self._s[4238]! } + public var AutoNightTheme_NotAvailable: String { return self._s[4224]! } + public var Conversation_PressVolumeButtonForSound: String { return self._s[4225]! } + public var LoginPassword_InvalidPasswordError: String { return self._s[4226]! } + public var ChatListFolder_IncludedSectionHeader: String { return self._s[4227]! } + public var Channel_SignMessages_Help: String { return self._s[4228]! } + public var ChatList_DeleteForEveryoneConfirmationTitle: String { return self._s[4229]! } + public var Conversation_TitleNoComments: String { return self._s[4230]! } + public var MediaPicker_LivePhotoDescription: String { return self._s[4231]! } + public var GroupInfo_Permissions: String { return self._s[4232]! } + public var GroupPermission_NoSendLinks: String { return self._s[4235]! } + public var Passport_Identity_ResidenceCountry: String { return self._s[4236]! } + public var Appearance_ThemeCarouselNightBlue: String { return self._s[4238]! } + public var ChatList_ArchiveAction: String { return self._s[4239]! } public func Channel_AdminLog_DisabledSlowmode(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4239]!, self._r[4239]!, [_0]) + return formatWithArgumentRanges(self._s[4240]!, self._r[4240]!, [_0]) } - public var GroupInfo_GroupHistory: String { return self._s[4240]! } + public var GroupInfo_GroupHistory: String { return self._s[4241]! } public func Channel_Management_ErrorNotMember(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4242]!, self._r[4242]!, [_0]) + return formatWithArgumentRanges(self._s[4243]!, self._r[4243]!, [_0]) } - public var Privacy_Forwards_LinkIfAllowed: String { return self._s[4244]! } - public var Channel_Info_Banned: String { return self._s[4245]! } - public var Paint_RecentStickers: String { return self._s[4246]! } - public var VoiceOver_MessageContextSend: String { return self._s[4247]! } - public var Group_ErrorNotMutualContact: String { return self._s[4248]! } - public var ReportPeer_ReasonOther: String { return self._s[4250]! } - public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[4251]! } - public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[4253]! } - public var KeyCommand_Find: String { return self._s[4254]! } + public var Privacy_Forwards_LinkIfAllowed: String { return self._s[4245]! } + public var Channel_Info_Banned: String { return self._s[4246]! } + public var Paint_RecentStickers: String { return self._s[4247]! } + public var VoiceOver_MessageContextSend: String { return self._s[4248]! } + public var Group_ErrorNotMutualContact: String { return self._s[4249]! } + public var ReportPeer_ReasonOther: String { return self._s[4251]! } + public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[4252]! } + public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[4254]! } + public var KeyCommand_Find: String { return self._s[4255]! } public func Channel_MessageTitleUpdated(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4255]!, self._r[4255]!, [_0]) + return formatWithArgumentRanges(self._s[4256]!, self._r[4256]!, [_0]) } - public var ChatList_Context_Unmute: String { return self._s[4256]! } - public var Chat_SlowmodeAttachmentLimitReached: String { return self._s[4257]! } - public var Stickers_GroupStickersHelp: String { return self._s[4258]! } - public var Wallet_Configuration_BlockchainIdPlaceholder: String { return self._s[4259]! } - public var Checkout_Title: String { return self._s[4260]! } - public var Activity_RecordingAudio: String { return self._s[4261]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[4262]! } - public var BlockedUsers_BlockTitle: String { return self._s[4263]! } - public var Wallet_Month_ShortFebruary: String { return self._s[4265]! } - public var Calls_All: String { return self._s[4266]! } - public var DialogList_SavedMessagesHelp: String { return self._s[4268]! } - public var Settings_FAQ_Button: String { return self._s[4269]! } + public var ChatList_Context_Unmute: String { return self._s[4257]! } + public var Chat_SlowmodeAttachmentLimitReached: String { return self._s[4258]! } + public var Stickers_GroupStickersHelp: String { return self._s[4259]! } + public var Wallet_Configuration_BlockchainIdPlaceholder: String { return self._s[4260]! } + public var Checkout_Title: String { return self._s[4261]! } + public var Activity_RecordingAudio: String { return self._s[4262]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[4263]! } + public var BlockedUsers_BlockTitle: String { return self._s[4264]! } + public var Wallet_Month_ShortFebruary: String { return self._s[4266]! } + public var Calls_All: String { return self._s[4267]! } + public var DialogList_SavedMessagesHelp: String { return self._s[4269]! } + public var Settings_FAQ_Button: String { return self._s[4270]! } public func Time_MonthOfYear_m5(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4271]!, self._r[4271]!, [_0]) + return formatWithArgumentRanges(self._s[4272]!, self._r[4272]!, [_0]) } - public var Conversation_ReportGroupLocation: String { return self._s[4272]! } - public var Passport_Scans_Upload: String { return self._s[4273]! } - public var Channel_EditAdmin_PermissionPinMessages: String { return self._s[4275]! } - public var ChatList_UnarchiveAction: String { return self._s[4276]! } - public var Stats_GroupTopInviter_History: String { return self._s[4277]! } - public var GroupInfo_Permissions_Title: String { return self._s[4278]! } - public var Passport_Language_el: String { return self._s[4279]! } + public var Conversation_ReportGroupLocation: String { return self._s[4273]! } + public var Passport_Scans_Upload: String { return self._s[4274]! } + public var Channel_EditAdmin_PermissionPinMessages: String { return self._s[4276]! } + public var ChatList_UnarchiveAction: String { return self._s[4277]! } + public var Stats_GroupTopInviter_History: String { return self._s[4278]! } + public var GroupInfo_Permissions_Title: String { return self._s[4279]! } + public var Passport_Language_el: String { return self._s[4280]! } public func Wallet_Time_PreciseDate_m4(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4280]!, self._r[4280]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4281]!, self._r[4281]!, [_1, _2, _3]) } - public var Channel_DiscussionMessageUnavailable: String { return self._s[4281]! } - public var GroupInfo_ActionPromote: String { return self._s[4282]! } - public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[4283]! } + public var Channel_DiscussionMessageUnavailable: String { return self._s[4282]! } + public var GroupInfo_ActionPromote: String { return self._s[4283]! } + public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[4284]! } public func TwoStepAuth_PendingEmailHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4284]!, self._r[4284]!, [_0]) + return formatWithArgumentRanges(self._s[4285]!, self._r[4285]!, [_0]) } - public var VoiceOver_Chat_Reply: String { return self._s[4285]! } - public var Month_GenMay: String { return self._s[4286]! } - public var DialogList_DeleteBotConversationConfirmation: String { return self._s[4287]! } - public var Chat_PsaTooltip_covid: String { return self._s[4288]! } - public var Watch_Suggestion_CantTalk: String { return self._s[4289]! } - public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[4290]! } - public var AppUpgrade_Running: String { return self._s[4291]! } - public var PasscodeSettings_UnlockWithFaceId: String { return self._s[4294]! } - public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[4295]! } - public var SharedMedia_EmptyText: String { return self._s[4296]! } - public var Passport_Address_EditResidentialAddress: String { return self._s[4297]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[4298]! } - public var Message_PinnedGame: String { return self._s[4299]! } - public var KeyCommand_SearchInChat: String { return self._s[4300]! } - public var Appearance_ThemeCarouselNewNight: String { return self._s[4301]! } - public var ChatList_Search_FilterMedia: String { return self._s[4302]! } - public var Message_PinnedAudioMessage: String { return self._s[4303]! } - public var ChannelInfo_ConfirmLeave: String { return self._s[4304]! } + public var VoiceOver_Chat_Reply: String { return self._s[4286]! } + public var Month_GenMay: String { return self._s[4287]! } + public var DialogList_DeleteBotConversationConfirmation: String { return self._s[4288]! } + public var Chat_PsaTooltip_covid: String { return self._s[4289]! } + public var Watch_Suggestion_CantTalk: String { return self._s[4290]! } + public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[4291]! } + public var AppUpgrade_Running: String { return self._s[4292]! } + public var PasscodeSettings_UnlockWithFaceId: String { return self._s[4295]! } + public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[4296]! } + public var SharedMedia_EmptyText: String { return self._s[4297]! } + public var Passport_Address_EditResidentialAddress: String { return self._s[4298]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[4299]! } + public var Message_PinnedGame: String { return self._s[4300]! } + public var KeyCommand_SearchInChat: String { return self._s[4301]! } + public var Appearance_ThemeCarouselNewNight: String { return self._s[4302]! } + public var ChatList_Search_FilterMedia: String { return self._s[4303]! } + public var Message_PinnedAudioMessage: String { return self._s[4304]! } + public var ChannelInfo_ConfirmLeave: String { return self._s[4305]! } public func Channel_AdminLog_MessagePromotedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4305]!, self._r[4305]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4306]!, self._r[4306]!, [_1, _2]) } - public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[4306]! } + public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[4307]! } public func Passport_Email_CodeHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4307]!, self._r[4307]!, [_0]) + return formatWithArgumentRanges(self._s[4308]!, self._r[4308]!, [_0]) } - public var Wallet_Receive_AddressCopied: String { return self._s[4308]! } + public var Wallet_Receive_AddressCopied: String { return self._s[4309]! } public func Message_PinnedTextMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4309]!, self._r[4309]!, [_0]) + return formatWithArgumentRanges(self._s[4310]!, self._r[4310]!, [_0]) } - public var Settings_AddAccount: String { return self._s[4310]! } - public var Channel_AdminLog_CanDeleteMessages: String { return self._s[4311]! } - public var Conversation_DiscardVoiceMessageTitle: String { return self._s[4312]! } - public var Channel_JoinChannel: String { return self._s[4313]! } - public var Watch_UserInfo_Unblock: String { return self._s[4314]! } - public var PhoneLabel_Title: String { return self._s[4315]! } - public var Group_Setup_HistoryHiddenHelp: String { return self._s[4317]! } - public var Privacy_ProfilePhoto_AlwaysShareWith_Title: String { return self._s[4318]! } + public var Settings_AddAccount: String { return self._s[4311]! } + public var Channel_AdminLog_CanDeleteMessages: String { return self._s[4312]! } + public var Conversation_DiscardVoiceMessageTitle: String { return self._s[4313]! } + public var Channel_JoinChannel: String { return self._s[4314]! } + public var Watch_UserInfo_Unblock: String { return self._s[4315]! } + public var PhoneLabel_Title: String { return self._s[4316]! } + public var Group_Setup_HistoryHiddenHelp: String { return self._s[4318]! } + public var Privacy_ProfilePhoto_AlwaysShareWith_Title: String { return self._s[4319]! } public func Login_PhoneGenericEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String, _ _6: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4319]!, self._r[4319]!, [_1, _2, _3, _4, _5, _6]) + return formatWithArgumentRanges(self._s[4320]!, self._r[4320]!, [_1, _2, _3, _4, _5, _6]) } - public var Wallet_Month_GenOctober: String { return self._s[4320]! } - public var Channel_AddBotErrorHaveRights: String { return self._s[4321]! } - public var ChatList_TabIconFoldersTooltipNonEmptyFolders: String { return self._s[4322]! } - public var DialogList_EncryptionProcessing: String { return self._s[4323]! } - public var ChatList_Search_FilterChats: String { return self._s[4324]! } - public var WatchRemote_NotificationText: String { return self._s[4325]! } - public var EditTheme_ChangeColors: String { return self._s[4326]! } - public var GroupRemoved_ViewUserInfo: String { return self._s[4327]! } - public var Wallet_TransactionInfo_RecipientHeader: String { return self._s[4328]! } - public var CallSettings_OnMobile: String { return self._s[4330]! } - public var Month_ShortFebruary: String { return self._s[4332]! } - public var VoiceOver_MessageContextReply: String { return self._s[4333]! } + public var Wallet_Month_GenOctober: String { return self._s[4321]! } + public var Channel_AddBotErrorHaveRights: String { return self._s[4322]! } + public var ChatList_TabIconFoldersTooltipNonEmptyFolders: String { return self._s[4323]! } + public var DialogList_EncryptionProcessing: String { return self._s[4324]! } + public var ChatList_Search_FilterChats: String { return self._s[4325]! } + public var WatchRemote_NotificationText: String { return self._s[4326]! } + public var EditTheme_ChangeColors: String { return self._s[4327]! } + public var GroupRemoved_ViewUserInfo: String { return self._s[4328]! } + public var Wallet_TransactionInfo_RecipientHeader: String { return self._s[4329]! } + public var CallSettings_OnMobile: String { return self._s[4331]! } + public var Month_ShortFebruary: String { return self._s[4333]! } + public var VoiceOver_MessageContextReply: String { return self._s[4334]! } public func PUSH_VIDEO_CALL_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4334]!, self._r[4334]!, [_1]) + return formatWithArgumentRanges(self._s[4335]!, self._r[4335]!, [_1]) } - public var Group_Location_ChangeLocation: String { return self._s[4335]! } - public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[4336]! } - public var Wallet_Send_EncryptComment: String { return self._s[4337]! } - public var VoiceOver_Media_PlaybackStop: String { return self._s[4338]! } - public var SettingsSearch_Synonyms_Data_SaveIncomingPhotos: String { return self._s[4339]! } + public var Group_Location_ChangeLocation: String { return self._s[4336]! } + public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[4337]! } + public var Wallet_Send_EncryptComment: String { return self._s[4338]! } + public var VoiceOver_Media_PlaybackStop: String { return self._s[4339]! } + public var SettingsSearch_Synonyms_Data_SaveIncomingPhotos: String { return self._s[4340]! } public func Channel_AdminLog_MessageRestrictedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4341]!, self._r[4341]!, [_0]) + return formatWithArgumentRanges(self._s[4342]!, self._r[4342]!, [_0]) } - public var PhotoEditor_WarmthTool: String { return self._s[4342]! } - public var Login_InfoAvatarPhoto: String { return self._s[4343]! } - public var Notification_Exceptions_NewException_MessagePreviewHeader: String { return self._s[4344]! } - public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[4345]! } - public var Map_PlacesInThisArea: String { return self._s[4346]! } - public var VoiceOver_Chat_ContactEmail: String { return self._s[4347]! } - public var Notifications_InAppNotificationsSounds: String { return self._s[4348]! } + public var PhotoEditor_WarmthTool: String { return self._s[4343]! } + public var Login_InfoAvatarPhoto: String { return self._s[4344]! } + public var Notification_Exceptions_NewException_MessagePreviewHeader: String { return self._s[4345]! } + public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[4346]! } + public var Map_PlacesInThisArea: String { return self._s[4347]! } + public var VoiceOver_Chat_ContactEmail: String { return self._s[4348]! } + public var Notifications_InAppNotificationsSounds: String { return self._s[4349]! } public func PUSH_PINNED_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4349]!, self._r[4349]!, [_1]) + return formatWithArgumentRanges(self._s[4350]!, self._r[4350]!, [_1]) } - public var ShareMenu_Send: String { return self._s[4350]! } - public var Username_InvalidStartsWithNumber: String { return self._s[4351]! } - public var Appearance_AppIconClassicX: String { return self._s[4352]! } + public var ShareMenu_Send: String { return self._s[4351]! } + public var Username_InvalidStartsWithNumber: String { return self._s[4352]! } + public var Appearance_AppIconClassicX: String { return self._s[4353]! } public func PUSH_CHANNEL_MESSAGE_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4353]!, self._r[4353]!, [_1]) + return formatWithArgumentRanges(self._s[4354]!, self._r[4354]!, [_1]) } - public var Conversation_StopPoll: String { return self._s[4354]! } - public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[4356]! } - public var Passport_Identity_EditIdentityCard: String { return self._s[4357]! } - public var Appearance_ThemePreview_ChatList_3_Name: String { return self._s[4358]! } - public var Wallet_WordCheck_Title: String { return self._s[4359]! } - public var Conversation_Timer_Title: String { return self._s[4360]! } - public var Common_Next: String { return self._s[4361]! } - public var Notification_Exceptions_NewException: String { return self._s[4362]! } + public var Conversation_StopPoll: String { return self._s[4355]! } + public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[4357]! } + public var Passport_Identity_EditIdentityCard: String { return self._s[4358]! } + public var Appearance_ThemePreview_ChatList_3_Name: String { return self._s[4359]! } + public var Wallet_WordCheck_Title: String { return self._s[4360]! } + public var Conversation_Timer_Title: String { return self._s[4361]! } + public var Common_Next: String { return self._s[4362]! } + public var Notification_Exceptions_NewException: String { return self._s[4363]! } public func Generic_OpenHiddenLinkAlert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4363]!, self._r[4363]!, [_0]) + return formatWithArgumentRanges(self._s[4364]!, self._r[4364]!, [_0]) } - public var AccessDenied_CallMicrophone: String { return self._s[4364]! } - public var SettingsSearch_Synonyms_Data_AutoDownloadUsingCellular: String { return self._s[4365]! } - public var ChangePhoneNumberCode_Help: String { return self._s[4366]! } - public var Passport_Identity_OneOfTypeIdentityCard: String { return self._s[4367]! } - public var Channel_AdminLogFilter_EventsLeaving: String { return self._s[4368]! } - public var BlockedUsers_LeavePrefix: String { return self._s[4369]! } + public var AccessDenied_CallMicrophone: String { return self._s[4365]! } + public var SettingsSearch_Synonyms_Data_AutoDownloadUsingCellular: String { return self._s[4366]! } + public var ChangePhoneNumberCode_Help: String { return self._s[4367]! } + public var Passport_Identity_OneOfTypeIdentityCard: String { return self._s[4368]! } + public var Channel_AdminLogFilter_EventsLeaving: String { return self._s[4369]! } + public var BlockedUsers_LeavePrefix: String { return self._s[4370]! } public func Passport_RequestHeader(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4370]!, self._r[4370]!, [_0]) + return formatWithArgumentRanges(self._s[4371]!, self._r[4371]!, [_0]) } - public var Group_About_Help: String { return self._s[4371]! } - public var TwoStepAuth_ChangePasswordDescription: String { return self._s[4372]! } - public var Tour_Title3: String { return self._s[4373]! } - public var Watch_Conversation_Unblock: String { return self._s[4374]! } - public var Watch_UserInfo_Block: String { return self._s[4375]! } - public var Notifications_ChannelNotificationsAlert: String { return self._s[4376]! } - public var TwoFactorSetup_Hint_Action: String { return self._s[4377]! } - public var IntentsSettings_SuggestedChatsInfo: String { return self._s[4378]! } - public var Wallet_Alert_Cancel: String { return self._s[4379]! } - public var TextFormat_AddLinkTitle: String { return self._s[4380]! } - public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[4381]! } - public var TwoStepAuth_EnterPasswordTitle: String { return self._s[4382]! } - public var FastTwoStepSetup_PasswordSection: String { return self._s[4383]! } - public var Compose_ChannelMembers: String { return self._s[4384]! } - public var Conversation_ForwardTitle: String { return self._s[4385]! } + public var Group_About_Help: String { return self._s[4372]! } + public var TwoStepAuth_ChangePasswordDescription: String { return self._s[4373]! } + public var Tour_Title3: String { return self._s[4374]! } + public var Watch_Conversation_Unblock: String { return self._s[4375]! } + public var Watch_UserInfo_Block: String { return self._s[4376]! } + public var Notifications_ChannelNotificationsAlert: String { return self._s[4377]! } + public var TwoFactorSetup_Hint_Action: String { return self._s[4378]! } + public var IntentsSettings_SuggestedChatsInfo: String { return self._s[4379]! } + public var Wallet_Alert_Cancel: String { return self._s[4380]! } + public var TextFormat_AddLinkTitle: String { return self._s[4381]! } + public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[4382]! } + public var TwoStepAuth_EnterPasswordTitle: String { return self._s[4383]! } + public var FastTwoStepSetup_PasswordSection: String { return self._s[4384]! } + public var Compose_ChannelMembers: String { return self._s[4385]! } + public var Conversation_ForwardTitle: String { return self._s[4386]! } public func Wallet_Updated_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4386]!, self._r[4386]!, [_0]) + return formatWithArgumentRanges(self._s[4387]!, self._r[4387]!, [_0]) } - public var Conversation_PinnedPoll: String { return self._s[4388]! } + public var Conversation_PinnedPoll: String { return self._s[4389]! } public func VoiceOver_Chat_AnonymousPollFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4389]!, self._r[4389]!, [_0]) + return formatWithArgumentRanges(self._s[4390]!, self._r[4390]!, [_0]) } - public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[4390]! } - public var Conversation_ContextMenuStickerPackAdd: String { return self._s[4391]! } - public var Stats_Overview: String { return self._s[4392]! } - public var Map_HomeAndWorkTitle: String { return self._s[4393]! } - public var Wallet_Intro_Terms: String { return self._s[4394]! } + public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[4391]! } + public var Conversation_ContextMenuStickerPackAdd: String { return self._s[4392]! } + public var Stats_Overview: String { return self._s[4393]! } + public var Map_HomeAndWorkTitle: String { return self._s[4394]! } + public var Wallet_Intro_Terms: String { return self._s[4395]! } public func Time_PreciseDate_m4(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4395]!, self._r[4395]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4396]!, self._r[4396]!, [_1, _2, _3]) } - public var Passport_Address_CityPlaceholder: String { return self._s[4396]! } - public var InfoPlist_NSLocationAlwaysAndWhenInUseUsageDescription: String { return self._s[4397]! } - public var Privacy_PhoneNumber: String { return self._s[4398]! } - public var ChatList_Search_FilterFiles: String { return self._s[4399]! } - public var ChatList_DeleteForEveryoneConfirmationAction: String { return self._s[4400]! } - public var ChannelIntro_CreateChannel: String { return self._s[4401]! } - public var Conversation_InputTextAnonymousPlaceholder: String { return self._s[4402]! } + public var Passport_Address_CityPlaceholder: String { return self._s[4397]! } + public var InfoPlist_NSLocationAlwaysAndWhenInUseUsageDescription: String { return self._s[4398]! } + public var Privacy_PhoneNumber: String { return self._s[4399]! } + public var ChatList_Search_FilterFiles: String { return self._s[4400]! } + public var ChatList_DeleteForEveryoneConfirmationAction: String { return self._s[4401]! } + public var ChannelIntro_CreateChannel: String { return self._s[4402]! } + public var Conversation_InputTextAnonymousPlaceholder: String { return self._s[4403]! } public func Login_EmailCodeBody(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4403]!, self._r[4403]!, [_0]) + return formatWithArgumentRanges(self._s[4404]!, self._r[4404]!, [_0]) } - public var Weekday_ShortMonday: String { return self._s[4404]! } - public var Passport_Language_ar: String { return self._s[4406]! } - public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[4407]! } - public var TwoFactorSetup_Done_Title: String { return self._s[4408]! } - public var Calls_RatingFeedback: String { return self._s[4409]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsPreview: String { return self._s[4410]! } - public var AutoDownloadSettings_ResetSettings: String { return self._s[4413]! } - public var Watch_Compose_Send: String { return self._s[4414]! } - public var PasscodeSettings_ChangePasscode: String { return self._s[4415]! } - public var WebSearch_RecentSectionClear: String { return self._s[4416]! } + public var Weekday_ShortMonday: String { return self._s[4405]! } + public var Passport_Language_ar: String { return self._s[4407]! } + public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[4408]! } + public var TwoFactorSetup_Done_Title: String { return self._s[4409]! } + public var Calls_RatingFeedback: String { return self._s[4410]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsPreview: String { return self._s[4411]! } + public var AutoDownloadSettings_ResetSettings: String { return self._s[4414]! } + public var Watch_Compose_Send: String { return self._s[4415]! } + public var PasscodeSettings_ChangePasscode: String { return self._s[4416]! } + public var WebSearch_RecentSectionClear: String { return self._s[4417]! } public func Contacts_AccessDeniedHelpPortrait(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4417]!, self._r[4417]!, [_0]) + return formatWithArgumentRanges(self._s[4418]!, self._r[4418]!, [_0]) } - public var WallpaperSearch_ColorTeal: String { return self._s[4418]! } - public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[4419]! } - public var Permissions_ContactsTitle_v0: String { return self._s[4420]! } - public var Checkout_PasswordEntry_Pay: String { return self._s[4422]! } - public var Settings_SavedMessages: String { return self._s[4423]! } - public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[4424]! } - public var Month_ShortMarch: String { return self._s[4425]! } - public var Message_Location: String { return self._s[4426]! } + public var WallpaperSearch_ColorTeal: String { return self._s[4419]! } + public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[4420]! } + public var Permissions_ContactsTitle_v0: String { return self._s[4421]! } + public var Checkout_PasswordEntry_Pay: String { return self._s[4423]! } + public var Settings_SavedMessages: String { return self._s[4424]! } + public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[4425]! } + public var Month_ShortMarch: String { return self._s[4426]! } + public var Message_Location: String { return self._s[4427]! } public func PUSH_MESSAGE_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4427]!, self._r[4427]!, [_1]) + return formatWithArgumentRanges(self._s[4428]!, self._r[4428]!, [_1]) } public func Notification_CallTimeFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4428]!, self._r[4428]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4429]!, self._r[4429]!, [_1, _2]) } - public var VoiceOver_Chat_VoiceMessage: String { return self._s[4430]! } + public var VoiceOver_Chat_VoiceMessage: String { return self._s[4431]! } public func Channel_AdminLog_MessageChangedUnlinkedChannel(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4431]!, self._r[4431]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4432]!, self._r[4432]!, [_1, _2]) } - public var GroupPermission_NoSendMedia: String { return self._s[4432]! } - public var Conversation_ClousStorageInfo_Description2: String { return self._s[4433]! } - public var SharedMedia_CategoryDocs: String { return self._s[4434]! } - public var Appearance_RemoveThemeConfirmation: String { return self._s[4435]! } - public var Paint_Framed: String { return self._s[4436]! } - public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[4437]! } - public var Passport_Identity_DoesNotExpire: String { return self._s[4438]! } - public var Channel_SignMessages: String { return self._s[4439]! } - public var Contacts_AccessDeniedHelpON: String { return self._s[4440]! } - public var Conversation_ContextMenuStickerPackInfo: String { return self._s[4441]! } + public var GroupPermission_NoSendMedia: String { return self._s[4433]! } + public var Conversation_ClousStorageInfo_Description2: String { return self._s[4434]! } + public var SharedMedia_CategoryDocs: String { return self._s[4435]! } + public var Appearance_RemoveThemeConfirmation: String { return self._s[4436]! } + public var Paint_Framed: String { return self._s[4437]! } + public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[4438]! } + public var Passport_Identity_DoesNotExpire: String { return self._s[4439]! } + public var Channel_SignMessages: String { return self._s[4440]! } + public var Contacts_AccessDeniedHelpON: String { return self._s[4441]! } + public var Conversation_ContextMenuStickerPackInfo: String { return self._s[4442]! } public func PUSH_CHAT_LEFT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4442]!, self._r[4442]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4443]!, self._r[4443]!, [_1, _2]) } - public var GroupInfo_UpgradeButton: String { return self._s[4443]! } - public var Channel_EditAdmin_PermissionInviteMembers: String { return self._s[4444]! } - public var AutoDownloadSettings_Files: String { return self._s[4445]! } + public var GroupInfo_UpgradeButton: String { return self._s[4444]! } + public var Channel_EditAdmin_PermissionInviteMembers: String { return self._s[4445]! } + public var AutoDownloadSettings_Files: String { return self._s[4446]! } public func Notification_ChangedGroupName(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4446]!, self._r[4446]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4447]!, self._r[4447]!, [_0, _1]) } - public var Login_SendCodeViaSms: String { return self._s[4448]! } - public var Update_UpdateApp: String { return self._s[4449]! } - public var Channel_Setup_TypePublic: String { return self._s[4450]! } - public var Watch_Compose_CreateMessage: String { return self._s[4451]! } + public var Login_SendCodeViaSms: String { return self._s[4449]! } + public var Update_UpdateApp: String { return self._s[4450]! } + public var Channel_Setup_TypePublic: String { return self._s[4451]! } + public var Watch_Compose_CreateMessage: String { return self._s[4452]! } public func PUSH_CHAT_MESSAGE_VIDEOS(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4452]!, self._r[4452]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4453]!, self._r[4453]!, [_1, _2, _3]) } - public var StickerPacksSettings_ManagingHelp: String { return self._s[4453]! } + public var StickerPacksSettings_ManagingHelp: String { return self._s[4454]! } public func Wallet_Time_PreciseDate_m12(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4454]!, self._r[4454]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4455]!, self._r[4455]!, [_1, _2, _3]) } - public var VoiceOver_Chat_Video: String { return self._s[4455]! } - public var Forward_ChannelReadOnly: String { return self._s[4456]! } - public var StickerPack_HideStickers: String { return self._s[4457]! } - public var ChatListFolder_NameContacts: String { return self._s[4458]! } - public var Profile_BotInfo: String { return self._s[4459]! } - public var Document_TargetConfirmationFormat: String { return self._s[4460]! } - public var GroupInfo_InviteByLink: String { return self._s[4461]! } - public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[4462]! } - public var Watch_Stickers_RecentPlaceholder: String { return self._s[4463]! } - public var Broadcast_AdminLog_EmptyText: String { return self._s[4464]! } - public var Passport_NotLoggedInMessage: String { return self._s[4465]! } - public var Conversation_StopQuizConfirmation: String { return self._s[4466]! } - public var Checkout_PaymentMethod: String { return self._s[4467]! } - public var ChatList_ArchivedChatsTitle: String { return self._s[4471]! } - public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[4472]! } - public var VoiceOver_Chat_RecordPreviewVoiceMessage: String { return self._s[4473]! } - public var PrivacyLastSeenSettings_GroupsAndChannelsHelp: String { return self._s[4474]! } - public var SettingsSearch_Synonyms_Privacy_Data_ContactsReset: String { return self._s[4475]! } - public var Camera_Title: String { return self._s[4476]! } - public var Map_Directions: String { return self._s[4477]! } - public var Wallet_Intro_ImportExisting: String { return self._s[4478]! } - public var Stats_MessagePublicForwardsTitle: String { return self._s[4479]! } - public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[4481]! } - public var Profile_EncryptionKey: String { return self._s[4482]! } + public var VoiceOver_Chat_Video: String { return self._s[4456]! } + public var Forward_ChannelReadOnly: String { return self._s[4457]! } + public var StickerPack_HideStickers: String { return self._s[4458]! } + public var ChatListFolder_NameContacts: String { return self._s[4459]! } + public var Profile_BotInfo: String { return self._s[4460]! } + public var Document_TargetConfirmationFormat: String { return self._s[4461]! } + public var GroupInfo_InviteByLink: String { return self._s[4462]! } + public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[4463]! } + public var Watch_Stickers_RecentPlaceholder: String { return self._s[4464]! } + public var Broadcast_AdminLog_EmptyText: String { return self._s[4465]! } + public var Passport_NotLoggedInMessage: String { return self._s[4466]! } + public var Conversation_StopQuizConfirmation: String { return self._s[4467]! } + public var Checkout_PaymentMethod: String { return self._s[4468]! } + public var ChatList_ArchivedChatsTitle: String { return self._s[4472]! } + public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[4473]! } + public var VoiceOver_Chat_RecordPreviewVoiceMessage: String { return self._s[4474]! } + public var PrivacyLastSeenSettings_GroupsAndChannelsHelp: String { return self._s[4475]! } + public var SettingsSearch_Synonyms_Privacy_Data_ContactsReset: String { return self._s[4476]! } + public var Camera_Title: String { return self._s[4477]! } + public var Map_Directions: String { return self._s[4478]! } + public var Wallet_Intro_ImportExisting: String { return self._s[4479]! } + public var Stats_MessagePublicForwardsTitle: String { return self._s[4480]! } + public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[4482]! } + public var Profile_EncryptionKey: String { return self._s[4483]! } public func LOCAL_CHAT_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4483]!, self._r[4483]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[4484]!, self._r[4484]!, [_1, "\(_2)"]) } public func Compatibility_SecretMediaVersionTooLow(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4484]!, self._r[4484]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4485]!, self._r[4485]!, [_0, _1]) } - public var Passport_Identity_TypePassport: String { return self._s[4485]! } - public var CreatePoll_QuizOptionsHeader: String { return self._s[4487]! } - public var Common_No: String { return self._s[4488]! } - public var Conversation_SendMessage_ScheduleMessage: String { return self._s[4489]! } - public var SettingsSearch_Synonyms_Privacy_LastSeen: String { return self._s[4490]! } - public var Settings_AboutEmpty: String { return self._s[4491]! } - public var TwoStepAuth_FloodError: String { return self._s[4493]! } - public var SettingsSearch_Synonyms_Appearance_TextSize: String { return self._s[4494]! } + public var Passport_Identity_TypePassport: String { return self._s[4486]! } + public var CreatePoll_QuizOptionsHeader: String { return self._s[4488]! } + public var Common_No: String { return self._s[4489]! } + public var Conversation_SendMessage_ScheduleMessage: String { return self._s[4490]! } + public var SettingsSearch_Synonyms_Privacy_LastSeen: String { return self._s[4491]! } + public var Settings_AboutEmpty: String { return self._s[4492]! } + public var TwoStepAuth_FloodError: String { return self._s[4494]! } + public var SettingsSearch_Synonyms_Appearance_TextSize: String { return self._s[4495]! } public func Channel_AdminLog_MessageUnkickedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4496]!, self._r[4496]!, [_1]) + return formatWithArgumentRanges(self._s[4497]!, self._r[4497]!, [_1]) } - public var Conversation_Edit: String { return self._s[4499]! } - public var CheckoutInfo_SaveInfo: String { return self._s[4500]! } - public var VoiceOver_Chat_AnonymousPoll: String { return self._s[4501]! } - public var Call_CameraTooltip: String { return self._s[4503]! } - public var InstantPage_FeedbackButtonShort: String { return self._s[4504]! } - public var Contacts_InviteToTelegram: String { return self._s[4505]! } - public var Wallet_WordImport_CanNotRemember: String { return self._s[4506]! } - public var Notifications_ResetAllNotifications: String { return self._s[4507]! } - public var Calls_NewCall: String { return self._s[4508]! } - public var VoiceOver_Chat_Music: String { return self._s[4511]! } - public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[4512]! } - public var Channel_Edit_AboutItem: String { return self._s[4513]! } - public var Message_VideoExpired: String { return self._s[4514]! } - public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[4515]! } + public var Conversation_Edit: String { return self._s[4500]! } + public var CheckoutInfo_SaveInfo: String { return self._s[4501]! } + public var VoiceOver_Chat_AnonymousPoll: String { return self._s[4502]! } + public var Call_CameraTooltip: String { return self._s[4504]! } + public var InstantPage_FeedbackButtonShort: String { return self._s[4505]! } + public var Contacts_InviteToTelegram: String { return self._s[4506]! } + public var Wallet_WordImport_CanNotRemember: String { return self._s[4507]! } + public var Notifications_ResetAllNotifications: String { return self._s[4508]! } + public var Calls_NewCall: String { return self._s[4509]! } + public var VoiceOver_Chat_Music: String { return self._s[4512]! } + public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[4513]! } + public var Channel_Edit_AboutItem: String { return self._s[4514]! } + public var Message_VideoExpired: String { return self._s[4515]! } + public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[4516]! } public func PUSH_CHAT_RETURNED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4516]!, self._r[4516]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4517]!, self._r[4517]!, [_1, _2]) } - public var NotificationsSound_Input: String { return self._s[4518]! } - public var Notifications_ClassicTones: String { return self._s[4519]! } - public var Conversation_StatusTyping: String { return self._s[4520]! } - public var Checkout_ErrorProviderAccountInvalid: String { return self._s[4521]! } - public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[4522]! } - public var Wallet_Month_ShortSeptember: String { return self._s[4523]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[4524]! } - public var Conversation_MessageLeaveComment: String { return self._s[4525]! } - public var UserInfo_TapToCall: String { return self._s[4526]! } - public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[4527]! } - public var Conversation_ClearAll: String { return self._s[4529]! } - public var UserInfo_NotificationsDefault: String { return self._s[4530]! } - public var Wallet_Send_OwnAddressAlertText: String { return self._s[4531]! } - public var Map_ChooseAPlace: String { return self._s[4532]! } + public var NotificationsSound_Input: String { return self._s[4519]! } + public var Notifications_ClassicTones: String { return self._s[4520]! } + public var Conversation_StatusTyping: String { return self._s[4521]! } + public var Checkout_ErrorProviderAccountInvalid: String { return self._s[4522]! } + public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[4523]! } + public var Wallet_Month_ShortSeptember: String { return self._s[4524]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[4525]! } + public var Conversation_MessageLeaveComment: String { return self._s[4526]! } + public var UserInfo_TapToCall: String { return self._s[4527]! } + public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[4528]! } + public var Conversation_ClearAll: String { return self._s[4530]! } + public var UserInfo_NotificationsDefault: String { return self._s[4531]! } + public var Wallet_Send_OwnAddressAlertText: String { return self._s[4532]! } + public var Map_ChooseAPlace: String { return self._s[4533]! } public func Wallet_Receive_ShareInvoiceUrlInfo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4533]!, self._r[4533]!, [_0]) + return formatWithArgumentRanges(self._s[4534]!, self._r[4534]!, [_0]) } - public var GroupInfo_AddParticipantTitle: String { return self._s[4534]! } - public var ChatList_PeerTypeNonContact: String { return self._s[4535]! } - public var Conversation_SlideToCancel: String { return self._s[4536]! } - public var Month_ShortJuly: String { return self._s[4537]! } - public var SocksProxySetup_ProxyType: String { return self._s[4538]! } + public var GroupInfo_AddParticipantTitle: String { return self._s[4535]! } + public var ChatList_PeerTypeNonContact: String { return self._s[4536]! } + public var Conversation_SlideToCancel: String { return self._s[4537]! } + public var Month_ShortJuly: String { return self._s[4538]! } + public var SocksProxySetup_ProxyType: String { return self._s[4539]! } public func ChatList_DeleteChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4539]!, self._r[4539]!, [_0]) + return formatWithArgumentRanges(self._s[4540]!, self._r[4540]!, [_0]) } - public var ChatList_EditFolders: String { return self._s[4540]! } - public var TwoStepAuth_SetPasswordHelp: String { return self._s[4541]! } - public var Wallet_Send_ConfirmationConfirm: String { return self._s[4543]! } - public var Wallet_Created_ExportErrorTitle: String { return self._s[4544]! } + public var ChatList_EditFolders: String { return self._s[4541]! } + public var TwoStepAuth_SetPasswordHelp: String { return self._s[4542]! } + public var Wallet_Send_ConfirmationConfirm: String { return self._s[4544]! } + public var Wallet_Created_ExportErrorTitle: String { return self._s[4545]! } public func GroupPermission_ApplyAlertText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4545]!, self._r[4545]!, [_0]) + return formatWithArgumentRanges(self._s[4546]!, self._r[4546]!, [_0]) } - public var Permissions_PeopleNearbyTitle_v0: String { return self._s[4546]! } - public var ScheduledMessages_RemindersTitle: String { return self._s[4547]! } - public var Your_cards_expiration_year_is_invalid: String { return self._s[4548]! } - public var Wallet_Info_TransactionPendingHeader: String { return self._s[4550]! } - public var UserInfo_ShareMyContactInfo: String { return self._s[4551]! } - public var Passport_DeleteAddress: String { return self._s[4553]! } - public var Passport_DeletePassportConfirmation: String { return self._s[4554]! } - public var Passport_Identity_ReverseSide: String { return self._s[4555]! } - public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[4556]! } - public var Login_InfoLastNamePlaceholder: String { return self._s[4557]! } - public var Passport_FieldAddress: String { return self._s[4558]! } - public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[4559]! } - public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[4561]! } - public var Map_Home: String { return self._s[4563]! } - public var PollResults_Title: String { return self._s[4564]! } - public var ArchivedChats_IntroText2: String { return self._s[4566]! } - public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[4567]! } - public var VoiceOver_Chat_ContactPhoneNumber: String { return self._s[4568]! } - public var CallFeedback_ReasonSilentRemote: String { return self._s[4570]! } - public var Passport_Identity_AddPersonalDetails: String { return self._s[4572]! } - public var Group_Info_AdminLog: String { return self._s[4574]! } - public var ChatSettings_AutoPlayTitle: String { return self._s[4575]! } - public var Appearance_Animations: String { return self._s[4576]! } - public var Appearance_TextSizeSetting: String { return self._s[4577]! } - public func ForwardedPhotos(_ value: Int32) -> String { + public var Permissions_PeopleNearbyTitle_v0: String { return self._s[4547]! } + public var ScheduledMessages_RemindersTitle: String { return self._s[4548]! } + public var Your_cards_expiration_year_is_invalid: String { return self._s[4549]! } + public var Wallet_Info_TransactionPendingHeader: String { return self._s[4551]! } + public var UserInfo_ShareMyContactInfo: String { return self._s[4552]! } + public var Passport_DeleteAddress: String { return self._s[4554]! } + public var Passport_DeletePassportConfirmation: String { return self._s[4555]! } + public var Passport_Identity_ReverseSide: String { return self._s[4556]! } + public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[4557]! } + public var Login_InfoLastNamePlaceholder: String { return self._s[4558]! } + public var Passport_FieldAddress: String { return self._s[4559]! } + public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[4560]! } + public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[4562]! } + public var Map_Home: String { return self._s[4564]! } + public var PollResults_Title: String { return self._s[4565]! } + public var ArchivedChats_IntroText2: String { return self._s[4567]! } + public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[4568]! } + public var VoiceOver_Chat_ContactPhoneNumber: String { return self._s[4569]! } + public var CallFeedback_ReasonSilentRemote: String { return self._s[4571]! } + public var Passport_Identity_AddPersonalDetails: String { return self._s[4573]! } + public var Group_Info_AdminLog: String { return self._s[4575]! } + public var ChatSettings_AutoPlayTitle: String { return self._s[4576]! } + public var Appearance_Animations: String { return self._s[4577]! } + public var Appearance_TextSizeSetting: String { return self._s[4578]! } + public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, stringValue) } - public func SharedMedia_Video(_ value: Int32) -> String { + public func ForwardedVideos(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, stringValue) } - public func Stats_GroupTopAdminDeletions(_ value: Int32) -> String { + public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, stringValue) } - public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_TitleReplies(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Map_ETAMinutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusOnline(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_ShortMinutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupShowMoreTopPosters(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_MessageVideos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupShowMoreTopAdmins(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_InactiveYear(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Map_ETAHours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_MessageViews(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_DeleteConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_MessageViewComments(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_ShortSeconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_GroupFormat(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Contacts_InviteContacts(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_InactiveMonth(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortSeconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedGifs(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func SharedMedia_Link(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupTopPosterMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedAudios(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) - } - public func GroupInfo_ParticipantCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ForwardedVideos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusSubscribers(_ value: Int32) -> String { - let form = getPluralizationForm(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 = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupTopAdminKicks(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_AddStickerCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceOver_Chat_ContactPhoneNumberCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PollResults_ShowMore(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteExpires_Minutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Photo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_SharePhoto(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_MessageForwards(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendGif(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupShowMoreTopInviters(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, _0, _1) - } - public func Media_ShareItem(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedStickers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_Search_Messages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_UserInfo_Mute(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Contacts_ImportersCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_SelectedMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) - } - public func GroupInfo_ShowMoreMembers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_Exceptions(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendVideo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteExpires_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_MessagePhotos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_Leave(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_File(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Theme_UsersCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ForwardedVideoMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, stringValue) - } public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func VoiceOver_Chat_PollVotes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedLocations(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Seconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func Passport_Scans(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func MessageTimer_ShortWeeks(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_Minutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupTopAdminBans(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedContacts(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteFor_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_TitleComments(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_SelectedChats(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_StickerCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Generic(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Wallet_Updated_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Wallet_Updated_HoursAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortMinutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, _1, _2) } public func Stats_GroupTopInviterInvites(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_StatusMembers(_ value: Int32) -> String { + public func MessageTimer_Hours(_ value: Int32) -> String { let form = getPluralizationForm(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[5 * 6 + Int(form.rawValue)]!, stringValue) } - public func StickerPack_AddMaskCount(_ value: Int32) -> String { + public func Call_Minutes(_ value: Int32) -> String { let form = getPluralizationForm(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[6 * 6 + Int(form.rawValue)]!, stringValue) } - public func MuteFor_Days(_ value: Int32) -> String { + public func ChatList_MessageVideos(_ value: Int32) -> String { let form = getPluralizationForm(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[7 * 6 + Int(form.rawValue)]!, stringValue) } - public func LastSeen_HoursAgo(_ value: Int32) -> String { + public func MessageTimer_ShortSeconds(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessagePoll_VotedCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteExpires_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[108 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[109 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[110 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Weeks(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[111 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[112 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendItem(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[113 * 6 + Int(form.rawValue)]!, stringValue) - } - public func QuickSend_Photos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[114 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedPolls(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[115 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Invitation_Members(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[116 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[117 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func MessageTimer_Months(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[118 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[119 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_ContextViewReplies(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[120 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceOver_Chat_PollOptionCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[121 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatListFilter_ShowMoreChats(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[122 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[123 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[124 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_DeletedChats(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[125 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[126 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func MessageTimer_Minutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[127 * 6 + Int(form.rawValue)]!, stringValue) - } - public func InstantPage_Views(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[128 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceOver_Chat_ContactEmailCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[129 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[130 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[131 * 6 + Int(form.rawValue)]!, stringValue) - } - public func UserCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[132 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[133 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func OldChannels_InactiveWeek(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[134 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortDays(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[135 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PeopleNearby_ShowMorePeople(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[136 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupTopPosterChars(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[137 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Years(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[138 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[139 * 6 + Int(form.rawValue)]!, _1, _2) + return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, stringValue) } public func ForwardedFiles(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[140 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func VoiceOver_Chat_PollOptionCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedStickers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupTopPosterMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_ShareVideo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessagePoll_VotedCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendVideo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Link(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupShowMoreTopInviters(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_AddStickerCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func Wallet_Updated_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Invitation_Members(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) } public func MessagePoll_QuizCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[141 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_ContactPhoneNumberCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedGifs(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func Stats_MessageForwards(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_UserInfo_Mute(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func MessageTimer_Years(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_ShortMinutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortDays(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_Leave(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_Exceptions(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendItem(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_ShortSeconds(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Map_ETAHours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Weeks(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_DeletedChats(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupTopAdminKicks(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) } public func MessageTimer_ShortHours(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[142 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) } - public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { + public func SharedMedia_File(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[143 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue) } - public func InviteText_ContactsCountText(_ value: Int32) -> String { + public func Stats_GroupTopAdminBans(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[144 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) + } + public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func MessageTimer_Seconds(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func ChatListFilter_ShowMoreChats(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_AddMaskCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedVideoMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortMinutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_InactiveWeek(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_TitleComments(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_SharePhoto(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_ShareItem(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_InactiveYear(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, stringValue) + } + public func GroupInfo_ShowMoreMembers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue) + } + public func UserCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedLocations(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) + } + public func InstantPage_Views(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendGif(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Photo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PeopleNearby_ShowMorePeople(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LastSeen_HoursAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue) + } + public func GroupInfo_ParticipantCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupTopAdminDeletions(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortWeeks(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupShowMoreTopAdmins(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedAudios(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusOnline(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteFor_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func MessageTimer_Months(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_SelectedMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_MessagePhotos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Wallet_Updated_HoursAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedPolls(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) } public func Call_Seconds(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[145 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_InactiveMonth(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PollResults_ShowMore(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_TitleReplies(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedPhotos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Passport_Scans(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_ContactEmailCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusSubscribers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Contacts_InviteContacts(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Contacts_ImportersCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[108 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_ContextViewReplies(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[109 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_SelectedChats(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[110 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_StickerCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[111 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Map_ETAMinutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[112 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupShowMoreTopPosters(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[113 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[114 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[115 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[116 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[117 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[118 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[119 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_Search_Messages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[120 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[121 * 6 + Int(form.rawValue)]!, _0, _1) + } + public func Stats_GroupTopPosterChars(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[122 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[123 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[124 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func VoiceOver_Chat_PollVotes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[125 * 6 + Int(form.rawValue)]!, stringValue) + } + public func InviteText_ContactsCountText(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[126 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[127 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[128 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteFor_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[129 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[130 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[131 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_MessageViewComments(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[132 * 6 + Int(form.rawValue)]!, stringValue) + } + public func QuickSend_Photos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[133 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusMembers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[134 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_GroupFormat(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[135 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Theme_UsersCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[136 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_DeleteConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[137 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_MessageViews(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[138 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Video(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[139 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[140 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Generic(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[141 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[142 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[143 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func ForwardedContacts(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[144 * 6 + Int(form.rawValue)]!, stringValue) } public func ForwardedMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[145 * 6 + Int(form.rawValue)]!, stringValue) + } + public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[146 * 6 + Int(form.rawValue)]!, stringValue) diff --git a/submodules/TelegramUI/Resources/PresentationStrings.mapping b/submodules/TelegramUI/Resources/PresentationStrings.mapping index d941da328b653f2b2723377ee1444a538988f82c..3fc340060574a010f0efe8af6353fced1837affd 100644 GIT binary patch delta 9019 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 diff --git a/submodules/TelegramUI/Sources/ChatController.swift b/submodules/TelegramUI/Sources/ChatController.swift index 41e66add9f..bd20d1d110 100644 --- a/submodules/TelegramUI/Sources/ChatController.swift +++ b/submodules/TelegramUI/Sources/ChatController.swift @@ -3268,13 +3268,15 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G } if case let .replyThread(replyThreadMessageId) = strongSelf.chatLocation { - pinnedMessageId = replyThreadMessageId.messageId + pinnedMessageId = replyThreadMessageId.effectiveTopId } - var pinnedMessage: Message? + var pinnedMessage: ChatPinnedMessage? if let pinnedMessageId = pinnedMessageId { if let cachedDataMessages = combinedInitialData.cachedDataMessages { - pinnedMessage = cachedDataMessages[pinnedMessageId] + if let message = cachedDataMessages[pinnedMessageId] { + pinnedMessage = ChatPinnedMessage(message: message, isLatest: true) + } } } @@ -3385,7 +3387,62 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G let isTopReplyThreadMessageShown: Signal = self.chatDisplayNode.historyNode.isTopReplyThreadMessageShown.get() |> distinctUntilChanged - self.cachedDataDisposable = combineLatest(queue: .mainQueue(), self.chatDisplayNode.historyNode.cachedPeerDataAndMessages, hasPendingMessages, isTopReplyThreadMessageShown).start(next: { [weak self] cachedDataAndMessages, hasPendingMessages, isTopReplyThreadMessageShown in + let topPinnedMessage: Signal + switch self.chatLocation { + case let .peer(peerId): + let replyHistory: Signal = (chatHistoryViewForLocation(ChatHistoryLocationInput(content: .Initial(count: 100), id: 0), context: self.context, chatLocation: .peer(peerId), chatLocationContextHolder: Atomic(value: nil), scheduled: false, fixedCombinedReadStates: nil, tagMask: MessageTags.photoOrVideo, additionalData: []) + |> castError(Bool.self) + |> mapToSignal { update -> Signal in + switch update { + case let .Loading(_, type): + if case .Generic(.FillHole) = type { + return .fail(true) + } + case let .HistoryView(_, type, _, _, _, _, _): + if case .Generic(.FillHole) = type { + return .fail(true) + } + } + return .single(update) + }) + |> restartIfError + + topPinnedMessage = combineLatest( + replyHistory, + self.chatDisplayNode.historyNode.topVisibleMessage.get() + ) + |> map { update, topVisibleMessage -> ChatPinnedMessage? in + var message: ChatPinnedMessage? + switch update { + case .Loading: + break + case let .HistoryView(view, _, _, _, _, _, _): + for i in 0 ..< view.entries.count { + let entry = view.entries[i] + var matches = false + if message == nil { + matches = true + } else if let topVisibleMessage = topVisibleMessage { + if entry.message.id < topVisibleMessage.id { + matches = true + } + } else { + matches = true + } + if matches { + message = ChatPinnedMessage(message: entry.message, isLatest: i == view.entries.count - 1) + } + } + break + } + return message + } + |> distinctUntilChanged + case .replyThread: + topPinnedMessage = .single(nil) + } + + self.cachedDataDisposable = combineLatest(queue: .mainQueue(), self.chatDisplayNode.historyNode.cachedPeerDataAndMessages, hasPendingMessages, isTopReplyThreadMessageShown, topPinnedMessage).start(next: { [weak self] cachedDataAndMessages, hasPendingMessages, isTopReplyThreadMessageShown, topPinnedMessage in if let strongSelf = self { let (cachedData, messages) = cachedDataAndMessages @@ -3413,22 +3470,26 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G } else if let _ = cachedData as? CachedSecretChatData { } + var pinnedMessage: ChatPinnedMessage? if case let .replyThread(replyThreadMessage) = strongSelf.chatLocation { if isTopReplyThreadMessageShown { pinnedMessageId = nil } else { - pinnedMessageId = replyThreadMessage.messageId + pinnedMessageId = replyThreadMessage.effectiveTopId } - } - - var pinnedMessage: Message? - if let pinnedMessageId = pinnedMessageId { - pinnedMessage = messages?[pinnedMessageId] + if let pinnedMessageId = pinnedMessageId { + if let message = messages?[pinnedMessageId] { + pinnedMessage = ChatPinnedMessage(message: message, isLatest: true) + } + } + } else { + pinnedMessageId = topPinnedMessage?.message.id + pinnedMessage = topPinnedMessage } var pinnedMessageUpdated = false if let current = strongSelf.presentationInterfaceState.pinnedMessage, let updated = pinnedMessage { - if current.id != updated.id || current.stableVersion != updated.stableVersion { + if current != updated { pinnedMessageUpdated = true } } else if (strongSelf.presentationInterfaceState.pinnedMessage != nil) != (pinnedMessage != nil) { @@ -3437,7 +3498,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G let callsDataUpdated = strongSelf.presentationInterfaceState.callsAvailable != callsAvailable || strongSelf.presentationInterfaceState.callsPrivate != callsPrivate - if strongSelf.presentationInterfaceState.pinnedMessageId != pinnedMessageId || strongSelf.presentationInterfaceState.pinnedMessage?.stableVersion != pinnedMessage?.stableVersion || strongSelf.presentationInterfaceState.peerIsBlocked != peerIsBlocked || pinnedMessageUpdated || callsDataUpdated || strongSelf.presentationInterfaceState.slowmodeState != slowmodeState { + if strongSelf.presentationInterfaceState.pinnedMessageId != pinnedMessageId || strongSelf.presentationInterfaceState.pinnedMessage != pinnedMessage || strongSelf.presentationInterfaceState.peerIsBlocked != peerIsBlocked || pinnedMessageUpdated || callsDataUpdated || strongSelf.presentationInterfaceState.slowmodeState != slowmodeState { strongSelf.updateChatPresentationInterfaceState(animated: strongSelf.willAppear, interactive: strongSelf.willAppear, { state in return state .updatedPinnedMessageId(pinnedMessageId) @@ -4734,7 +4795,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G })]), in: .window(.root)) } } else { - if let pinnedMessageId = strongSelf.presentationInterfaceState.pinnedMessage?.id { + if let pinnedMessageId = strongSelf.presentationInterfaceState.pinnedMessage?.message.id { strongSelf.updateChatPresentationInterfaceState(animated: true, interactive: true, { return $0.updatedInterfaceState({ $0.withUpdatedMessageActionsState({ value in var value = value @@ -4786,7 +4847,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G strongSelf.updateChatPresentationInterfaceState(animated: true, interactive: true, { return $0.updatedInterfaceState({ $0.withUpdatedMessageActionsState({ value in var value = value - value.closedPinnedMessageId = pinnedMessage.id + value.closedPinnedMessageId = pinnedMessage.message.id return value }) }) }) diff --git a/submodules/TelegramUI/Sources/ChatControllerNode.swift b/submodules/TelegramUI/Sources/ChatControllerNode.swift index 949e67c95d..43e4e6865b 100644 --- a/submodules/TelegramUI/Sources/ChatControllerNode.swift +++ b/submodules/TelegramUI/Sources/ChatControllerNode.swift @@ -997,7 +997,7 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate { } } - if let pinnedMessage = self.chatPresentationInterfaceState.pinnedMessage, self.context.sharedContext.immediateExperimentalUISettings.playerEmbedding, self.context.sharedContext.immediateExperimentalUISettings.playlistPlayback, self.embeddedTitleContentNode == nil, let url = extractExperimentalPlaylistUrl(pinnedMessage.text), self.didProcessExperimentalEmbedUrl != url { + if let pinnedMessage = self.chatPresentationInterfaceState.pinnedMessage, self.context.sharedContext.immediateExperimentalUISettings.playerEmbedding, self.context.sharedContext.immediateExperimentalUISettings.playlistPlayback, self.embeddedTitleContentNode == nil, let url = extractExperimentalPlaylistUrl(pinnedMessage.message.text), self.didProcessExperimentalEmbedUrl != url { self.didProcessExperimentalEmbedUrl = url let context = self.context let baseNavigationController = self.controller?.navigationController as? NavigationController diff --git a/submodules/TelegramUI/Sources/ChatHistoryListNode.swift b/submodules/TelegramUI/Sources/ChatHistoryListNode.swift index 61122e1940..37ed46c24a 100644 --- a/submodules/TelegramUI/Sources/ChatHistoryListNode.swift +++ b/submodules/TelegramUI/Sources/ChatHistoryListNode.swift @@ -24,6 +24,11 @@ extension ChatReplyThreadMessage { } } +struct ChatTopVisibleMessage: Equatable { + var id: MessageId + var isLast: Bool +} + private class ChatHistoryListSelectionRecognizer: UIPanGestureRecognizer { private let selectionGestureActivationThreshold: CGFloat = 5.0 @@ -557,6 +562,7 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode { private var loadedMessagesFromCachedDataDisposable: Disposable? let isTopReplyThreadMessageShown = ValuePromise(false, ignoreRepeated: true) + let topVisibleMessage = ValuePromise(nil, ignoreRepeated: true) private let clientId: Atomic @@ -1151,6 +1157,7 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode { private func processDisplayedItemRangeChanged(displayedRange: ListViewDisplayedItemRange, transactionState: ChatHistoryTransactionOpaqueState) { let historyView = transactionState.historyView var isTopReplyThreadMessageShownValue = false + var topVisibleMessage: ChatTopVisibleMessage? if let visible = displayedRange.visibleRange { let indexRange = (historyView.filteredEntries.count - 1 - visible.lastIndex, historyView.filteredEntries.count - 1 - visible.firstIndex) if indexRange.0 > indexRange.1 { @@ -1225,6 +1232,7 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode { if case let .replyThread(replyThreadMessage) = self.chatLocation, replyThreadMessage.effectiveTopId == message.id { isTopReplyThreadMessageShownValue = true } + topVisibleMessage = ChatTopVisibleMessage(id: message.id, isLast: i == historyView.filteredEntries.count - 1) case let .MessageGroupEntry(_, messages, _): for (message, _, _, _) in messages { var hasUnconsumedMention = false @@ -1255,6 +1263,7 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode { if case let .replyThread(replyThreadMessage) = self.chatLocation, replyThreadMessage.effectiveTopId == message.id { isTopReplyThreadMessageShownValue = true } + topVisibleMessage = ChatTopVisibleMessage(id: message.id, isLast: i == historyView.filteredEntries.count - 1) } default: break @@ -1371,6 +1380,7 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode { } } self.isTopReplyThreadMessageShown.set(isTopReplyThreadMessageShownValue) + self.topVisibleMessage.set(topVisibleMessage) if let loaded = displayedRange.loadedRange, let firstEntry = historyView.filteredEntries.first, let lastEntry = historyView.filteredEntries.last { if loaded.firstIndex < 5 && historyView.originalView.laterId != nil { diff --git a/submodules/TelegramUI/Sources/ChatInterfaceStateContextMenus.swift b/submodules/TelegramUI/Sources/ChatInterfaceStateContextMenus.swift index 3c505b404d..89565472e1 100644 --- a/submodules/TelegramUI/Sources/ChatInterfaceStateContextMenus.swift +++ b/submodules/TelegramUI/Sources/ChatInterfaceStateContextMenus.swift @@ -643,7 +643,7 @@ func contextMenuForChatPresentationIntefaceState(chatPresentationInterfaceState: } if data.canPin, case .peer = chatPresentationInterfaceState.chatLocation { - if chatPresentationInterfaceState.pinnedMessage?.id != messages[0].id { + if chatPresentationInterfaceState.pinnedMessage?.message.id != messages[0].id { actions.append(.action(ContextMenuActionItem(text: chatPresentationInterfaceState.strings.Conversation_Pin, icon: { theme in return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Pin"), color: theme.actionSheet.primaryTextColor) }, action: { _, f in diff --git a/submodules/TelegramUI/Sources/ChatInterfaceStateContextQueries.swift b/submodules/TelegramUI/Sources/ChatInterfaceStateContextQueries.swift index 1fc95214f1..f3b0b519de 100644 --- a/submodules/TelegramUI/Sources/ChatInterfaceStateContextQueries.swift +++ b/submodules/TelegramUI/Sources/ChatInterfaceStateContextQueries.swift @@ -145,7 +145,7 @@ private func updatedContextQueryResultStateForQuery(context: AccountContext, pee } let inlineBots: Signal<[(Peer, Double)], NoError> = types.contains(.contextBots) ? recentlyUsedInlineBots(postbox: context.account.postbox) : .single([]) - let participants = combineLatest(inlineBots, searchPeerMembers(context: context, peerId: peer.id, chatLocation: chatLocation, query: query)) + let participants = combineLatest(inlineBots, searchPeerMembers(context: context, peerId: peer.id, chatLocation: chatLocation, query: query, scope: .mention)) |> map { inlineBots, peers -> (ChatPresentationInputQueryResult?) -> ChatPresentationInputQueryResult? in let filteredInlineBots = inlineBots.sorted(by: { $0.1 > $1.1 }).filter { peer, rating in if rating < 0.14 { @@ -347,7 +347,7 @@ func searchQuerySuggestionResultStateForChatInterfacePresentationState(_ chatPre } } - let participants = searchPeerMembers(context: context, peerId: peer.id, chatLocation: chatPresentationInterfaceState.chatLocation, query: query) + let participants = searchPeerMembers(context: context, peerId: peer.id, chatLocation: chatPresentationInterfaceState.chatLocation, query: query, scope: .memberSuggestion) |> map { peers -> (ChatPresentationInputQueryResult?) -> ChatPresentationInputQueryResult? in let filteredPeers = peers var sortedPeers: [Peer] = [] diff --git a/submodules/TelegramUI/Sources/ChatInterfaceTitlePanelNodes.swift b/submodules/TelegramUI/Sources/ChatInterfaceTitlePanelNodes.swift index e41c833fcd..9b40aa2467 100644 --- a/submodules/TelegramUI/Sources/ChatInterfaceTitlePanelNodes.swift +++ b/submodules/TelegramUI/Sources/ChatInterfaceTitlePanelNodes.swift @@ -19,7 +19,7 @@ func titlePanelForChatPresentationInterfaceState(_ chatPresentationInterfaceStat loop: for context in chatPresentationInterfaceState.titlePanelContexts.reversed() { switch context { case .pinnedMessage: - if let pinnedMessage = chatPresentationInterfaceState.pinnedMessage, pinnedMessage.id != chatPresentationInterfaceState.interfaceState.messageActionsState.closedPinnedMessageId { + if let pinnedMessage = chatPresentationInterfaceState.pinnedMessage, pinnedMessage.message.id != chatPresentationInterfaceState.interfaceState.messageActionsState.closedPinnedMessageId { selectedContext = context break loop } diff --git a/submodules/TelegramUI/Sources/ChatPinnedMessageTitlePanelNode.swift b/submodules/TelegramUI/Sources/ChatPinnedMessageTitlePanelNode.swift index 4cddcd270a..298dc83e14 100644 --- a/submodules/TelegramUI/Sources/ChatPinnedMessageTitlePanelNode.swift +++ b/submodules/TelegramUI/Sources/ChatPinnedMessageTitlePanelNode.swift @@ -13,10 +13,18 @@ import StickerResources import PhotoResources import TelegramStringFormatting +private enum PinnedMessageAnimation { + case slideToTop + case slideToBottom +} + final class ChatPinnedMessageTitlePanelNode: ChatTitleAccessoryPanelNode { private let context: AccountContext private let tapButton: HighlightTrackingButtonNode private let closeButton: HighlightableButtonNode + + private let clippingContainer: ASDisplayNode + private let contentContainer: ASDisplayNode private let lineNode: ASImageNode private let titleNode: TextNode private let textNode: TextNode @@ -25,7 +33,7 @@ final class ChatPinnedMessageTitlePanelNode: ChatTitleAccessoryPanelNode { private let separatorNode: ASDisplayNode private var currentLayout: (CGFloat, CGFloat, CGFloat)? - private var currentMessage: Message? + private var currentMessage: ChatPinnedMessage? private var previousMediaReference: AnyMediaReference? private var isReplyThread: Bool = false @@ -46,6 +54,11 @@ final class ChatPinnedMessageTitlePanelNode: ChatTitleAccessoryPanelNode { self.separatorNode = ASDisplayNode() self.separatorNode.isLayerBacked = true + self.clippingContainer = ASDisplayNode() + self.clippingContainer.clipsToBounds = true + + self.contentContainer = ASDisplayNode() + self.lineNode = ASImageNode() self.lineNode.displayWithoutProcessing = true self.lineNode.displaysAsynchronously = false @@ -87,10 +100,12 @@ final class ChatPinnedMessageTitlePanelNode: ChatTitleAccessoryPanelNode { self.closeButton.addTarget(self, action: #selector(self.closePressed), forControlEvents: [.touchUpInside]) self.addSubnode(self.closeButton) + self.addSubnode(self.clippingContainer) + self.clippingContainer.addSubnode(self.contentContainer) self.addSubnode(self.lineNode) - self.addSubnode(self.titleNode) - self.addSubnode(self.textNode) - self.addSubnode(self.imageNode) + self.contentContainer.addSubnode(self.titleNode) + self.contentContainer.addSubnode(self.textNode) + self.contentContainer.addSubnode(self.imageNode) self.tapButton.addTarget(self, action: #selector(self.tapped), forControlEvents: [.touchUpInside]) self.addSubnode(self.tapButton) @@ -128,10 +143,18 @@ final class ChatPinnedMessageTitlePanelNode: ChatTitleAccessoryPanelNode { self.closeButton.isHidden = isReplyThread var messageUpdated = false + var messageUpdatedAnimation: PinnedMessageAnimation? if let currentMessage = self.currentMessage, let pinnedMessage = interfaceState.pinnedMessage { - if currentMessage.id != pinnedMessage.id || currentMessage.stableVersion != pinnedMessage.stableVersion { + if currentMessage != pinnedMessage { messageUpdated = true } + if currentMessage.message.id != pinnedMessage.message.id { + if currentMessage.message.id < pinnedMessage.message.id { + messageUpdatedAnimation = .slideToTop + } else { + messageUpdatedAnimation = .slideToBottom + } + } } else if (self.currentMessage != nil) != (interfaceState.pinnedMessage != nil) { messageUpdated = true } @@ -141,7 +164,7 @@ final class ChatPinnedMessageTitlePanelNode: ChatTitleAccessoryPanelNode { self.currentMessage = interfaceState.pinnedMessage if let currentMessage = currentMessage, let currentLayout = self.currentLayout { - self.enqueueTransition(width: currentLayout.0, leftInset: currentLayout.1, rightInset: currentLayout.2, transition: .immediate, message: currentMessage, theme: interfaceState.theme, strings: interfaceState.strings, nameDisplayOrder: interfaceState.nameDisplayOrder, accountPeerId: self.context.account.peerId, firstTime: previousMessageWasNil, isReplyThread: isReplyThread) + self.enqueueTransition(width: currentLayout.0, leftInset: currentLayout.1, rightInset: currentLayout.2, transition: .immediate, animation: messageUpdatedAnimation, pinnedMessage: currentMessage, theme: interfaceState.theme, strings: interfaceState.strings, nameDisplayOrder: interfaceState.nameDisplayOrder, accountPeerId: self.context.account.peerId, firstTime: previousMessageWasNil, isReplyThread: isReplyThread) } } @@ -156,18 +179,43 @@ final class ChatPinnedMessageTitlePanelNode: ChatTitleAccessoryPanelNode { transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: panelHeight - UIScreenPixel), size: CGSize(width: width, height: UIScreenPixel))) self.tapButton.frame = CGRect(origin: CGPoint(), size: CGSize(width: width - rightInset - closeButtonSize.width - 4.0, height: panelHeight)) + self.clippingContainer.frame = CGRect(origin: CGPoint(), size: CGSize(width: width, height: panelHeight)) + self.contentContainer.frame = CGRect(origin: CGPoint(), size: CGSize(width: width, height: panelHeight)) + if self.currentLayout?.0 != width || self.currentLayout?.1 != leftInset || self.currentLayout?.2 != rightInset { self.currentLayout = (width, leftInset, rightInset) if let currentMessage = self.currentMessage { - self.enqueueTransition(width: width, leftInset: leftInset, rightInset: rightInset, transition: .immediate, message: currentMessage, theme: interfaceState.theme, strings: interfaceState.strings, nameDisplayOrder: interfaceState.nameDisplayOrder, accountPeerId: interfaceState.accountPeerId, firstTime: true, isReplyThread: isReplyThread) + self.enqueueTransition(width: width, leftInset: leftInset, rightInset: rightInset, transition: .immediate, animation: .none, pinnedMessage: currentMessage, theme: interfaceState.theme, strings: interfaceState.strings, nameDisplayOrder: interfaceState.nameDisplayOrder, accountPeerId: interfaceState.accountPeerId, firstTime: true, isReplyThread: isReplyThread) } } return panelHeight } - private func enqueueTransition(width: CGFloat, leftInset: CGFloat, rightInset: CGFloat, transition: ContainedViewLayoutTransition, message: Message, theme: PresentationTheme, strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, accountPeerId: PeerId, firstTime: Bool, isReplyThread: Bool) { + private func enqueueTransition(width: CGFloat, leftInset: CGFloat, rightInset: CGFloat, transition: ContainedViewLayoutTransition, animation: PinnedMessageAnimation?, pinnedMessage: ChatPinnedMessage, theme: PresentationTheme, strings: PresentationStrings, nameDisplayOrder: PresentationPersonNameOrder, accountPeerId: PeerId, firstTime: Bool, isReplyThread: Bool) { + let message = pinnedMessage.message + + if let animation = animation { + let offset: CGFloat + switch animation { + case .slideToTop: + offset = -40.0 + case .slideToBottom: + offset = 40.0 + } + if let copyView = self.contentContainer.view.snapshotView(afterScreenUpdates: false) { + copyView.frame = self.contentContainer.frame + self.clippingContainer.view.addSubview(copyView) + copyView.layer.animatePosition(from: CGPoint(), to: CGPoint(x: 0.0, y: offset), duration: 0.2, removeOnCompletion: false, additive: true) + copyView.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false, completion: { [weak copyView] _ in + copyView?.removeFromSuperview() + }) + self.contentContainer.layer.animatePosition(from: CGPoint(x: 0.0, y: -offset), to: CGPoint(), duration: 0.2, additive: true) + self.contentContainer.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) + } + } + let makeTitleLayout = TextNode.asyncLayout(self.titleNode) let makeTextLayout = TextNode.asyncLayout(self.textNode) let imageNodeLayout = self.imageNode.asyncLayout() @@ -191,7 +239,12 @@ final class ChatPinnedMessageTitlePanelNode: ChatTitleAccessoryPanelNode { var updatedMediaReference: AnyMediaReference? var imageDimensions: CGSize? - var titleString = strings.Conversation_PinnedMessage + var titleString: String + if pinnedMessage.isLatest { + titleString = strings.Conversation_PinnedMessage + } else { + titleString = strings.Conversation_PinnedPreviousMessage + } for media in message.media { if let image = media as? TelegramMediaImage { @@ -300,13 +353,8 @@ final class ChatPinnedMessageTitlePanelNode: ChatTitleAccessoryPanelNode { if let interfaceInteraction = self.interfaceInteraction, let message = self.currentMessage { if self.isReplyThread { interfaceInteraction.scrollToTop() - /*if let sourceReference = message.sourceReference { - interfaceInteraction.navigateToMessage(sourceReference.messageId, true) - } else { - interfaceInteraction.navigateToMessage(message.id, false) - }*/ } else { - interfaceInteraction.navigateToMessage(message.id, false) + interfaceInteraction.navigateToMessage(message.message.id, false) } } } diff --git a/submodules/TelegramUI/Sources/ChatPresentationInterfaceState.swift b/submodules/TelegramUI/Sources/ChatPresentationInterfaceState.swift index 1be0b8f25f..54f76b2d61 100644 --- a/submodules/TelegramUI/Sources/ChatPresentationInterfaceState.swift +++ b/submodules/TelegramUI/Sources/ChatPresentationInterfaceState.swift @@ -257,6 +257,32 @@ struct ChatSlowmodeState: Equatable { var variant: ChatSlowmodeVariant } +final class ChatPinnedMessage: Equatable { + let message: Message + let isLatest: Bool + + init(message: Message, isLatest: Bool) { + self.message = message + self.isLatest = isLatest + } + + static func ==(lhs: ChatPinnedMessage, rhs: ChatPinnedMessage) -> Bool { + if lhs === rhs { + return true + } + if lhs.message.id != rhs.message.id { + return false + } + if lhs.message.stableVersion != rhs.message.stableVersion { + return false + } + if lhs.isLatest != rhs.isLatest { + return false + } + return true + } +} + final class ChatPresentationInterfaceState: Equatable { let interfaceState: ChatInterfaceState let chatLocation: ChatLocation @@ -274,7 +300,7 @@ final class ChatPresentationInterfaceState: Equatable { let titlePanelContexts: [ChatTitlePanelContext] let keyboardButtonsMessage: Message? let pinnedMessageId: MessageId? - let pinnedMessage: Message? + let pinnedMessage: ChatPinnedMessage? let peerIsBlocked: Bool let peerIsMuted: Bool let peerDiscussionId: PeerId? @@ -348,7 +374,7 @@ final class ChatPresentationInterfaceState: Equatable { self.peerNearbyData = peerNearbyData } - init(interfaceState: ChatInterfaceState, chatLocation: ChatLocation, renderedPeer: RenderedPeer?, isNotAccessible: Bool, explicitelyCanPinMessages: Bool, contactStatus: ChatContactStatus?, hasBots: Bool, isArchived: Bool, inputTextPanelState: ChatTextInputPanelState, editMessageState: ChatEditInterfaceMessageState?, recordedMediaPreview: ChatRecordedMediaPreview?, inputQueryResults: [ChatPresentationInputQueryKind: ChatPresentationInputQueryResult], inputMode: ChatInputMode, titlePanelContexts: [ChatTitlePanelContext], keyboardButtonsMessage: Message?, pinnedMessageId: MessageId?, pinnedMessage: Message?, peerIsBlocked: Bool, peerIsMuted: Bool, peerDiscussionId: PeerId?, peerGeoLocation: PeerGeoLocation?, callsAvailable: Bool, callsPrivate: Bool, slowmodeState: ChatSlowmodeState?, chatHistoryState: ChatHistoryNodeHistoryState?, botStartPayload: String?, urlPreview: (String, TelegramMediaWebpage)?, editingUrlPreview: (String, TelegramMediaWebpage)?, search: ChatSearchData?, searchQuerySuggestionResult: ChatPresentationInputQueryResult?, chatWallpaper: TelegramWallpaper, theme: PresentationTheme, strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat, nameDisplayOrder: PresentationPersonNameOrder, limitsConfiguration: LimitsConfiguration, fontSize: PresentationFontSize, bubbleCorners: PresentationChatBubbleCorners, accountPeerId: PeerId, mode: ChatControllerPresentationMode, hasScheduledMessages: Bool, isScheduledMessages: Bool, peerNearbyData: ChatPeerNearbyData?) { + init(interfaceState: ChatInterfaceState, chatLocation: ChatLocation, renderedPeer: RenderedPeer?, isNotAccessible: Bool, explicitelyCanPinMessages: Bool, contactStatus: ChatContactStatus?, hasBots: Bool, isArchived: Bool, inputTextPanelState: ChatTextInputPanelState, editMessageState: ChatEditInterfaceMessageState?, recordedMediaPreview: ChatRecordedMediaPreview?, inputQueryResults: [ChatPresentationInputQueryKind: ChatPresentationInputQueryResult], inputMode: ChatInputMode, titlePanelContexts: [ChatTitlePanelContext], keyboardButtonsMessage: Message?, pinnedMessageId: MessageId?, pinnedMessage: ChatPinnedMessage?, peerIsBlocked: Bool, peerIsMuted: Bool, peerDiscussionId: PeerId?, peerGeoLocation: PeerGeoLocation?, callsAvailable: Bool, callsPrivate: Bool, slowmodeState: ChatSlowmodeState?, chatHistoryState: ChatHistoryNodeHistoryState?, botStartPayload: String?, urlPreview: (String, TelegramMediaWebpage)?, editingUrlPreview: (String, TelegramMediaWebpage)?, search: ChatSearchData?, searchQuerySuggestionResult: ChatPresentationInputQueryResult?, chatWallpaper: TelegramWallpaper, theme: PresentationTheme, strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat, nameDisplayOrder: PresentationPersonNameOrder, limitsConfiguration: LimitsConfiguration, fontSize: PresentationFontSize, bubbleCorners: PresentationChatBubbleCorners, accountPeerId: PeerId, mode: ChatControllerPresentationMode, hasScheduledMessages: Bool, isScheduledMessages: Bool, peerNearbyData: ChatPeerNearbyData?) { self.interfaceState = interfaceState self.chatLocation = chatLocation self.renderedPeer = renderedPeer @@ -447,14 +473,7 @@ final class ChatPresentationInterfaceState: Equatable { if lhs.pinnedMessageId != rhs.pinnedMessageId { return false } - if let lhsMessage = lhs.pinnedMessage, let rhsMessage = rhs.pinnedMessage { - if lhsMessage.id != rhsMessage.id { - return false - } - if lhsMessage.stableVersion != rhsMessage.stableVersion { - return false - } - } else if (lhs.pinnedMessage != nil) != (rhs.pinnedMessage != nil) { + if lhs.pinnedMessage != rhs.pinnedMessage { return false } if lhs.callsAvailable != rhs.callsAvailable { @@ -613,7 +632,7 @@ final class ChatPresentationInterfaceState: Equatable { return ChatPresentationInterfaceState(interfaceState: self.interfaceState, chatLocation: self.chatLocation, renderedPeer: self.renderedPeer, isNotAccessible: self.isNotAccessible, explicitelyCanPinMessages: self.explicitelyCanPinMessages, contactStatus: self.contactStatus, hasBots: self.hasBots, isArchived: self.isArchived, inputTextPanelState: self.inputTextPanelState, editMessageState: self.editMessageState, recordedMediaPreview: self.recordedMediaPreview, inputQueryResults: self.inputQueryResults, inputMode: self.inputMode, titlePanelContexts: self.titlePanelContexts, keyboardButtonsMessage: self.keyboardButtonsMessage, pinnedMessageId: pinnedMessageId, pinnedMessage: self.pinnedMessage, peerIsBlocked: self.peerIsBlocked, peerIsMuted: self.peerIsMuted, peerDiscussionId: self.peerDiscussionId, peerGeoLocation: self.peerGeoLocation, callsAvailable: self.callsAvailable, callsPrivate: self.callsPrivate, slowmodeState: self.slowmodeState, chatHistoryState: self.chatHistoryState, botStartPayload: self.botStartPayload, urlPreview: self.urlPreview, editingUrlPreview: self.editingUrlPreview, search: self.search, searchQuerySuggestionResult: self.searchQuerySuggestionResult, chatWallpaper: self.chatWallpaper, theme: self.theme, strings: self.strings, dateTimeFormat: self.dateTimeFormat, nameDisplayOrder: self.nameDisplayOrder, limitsConfiguration: self.limitsConfiguration, fontSize: self.fontSize, bubbleCorners: self.bubbleCorners, accountPeerId: self.accountPeerId, mode: self.mode, hasScheduledMessages: self.hasScheduledMessages, isScheduledMessages: self.isScheduledMessages, peerNearbyData: self.peerNearbyData) } - func updatedPinnedMessage(_ pinnedMessage: Message?) -> ChatPresentationInterfaceState { + func updatedPinnedMessage(_ pinnedMessage: ChatPinnedMessage?) -> ChatPresentationInterfaceState { return ChatPresentationInterfaceState(interfaceState: self.interfaceState, chatLocation: self.chatLocation, renderedPeer: self.renderedPeer, isNotAccessible: self.isNotAccessible, explicitelyCanPinMessages: self.explicitelyCanPinMessages, contactStatus: self.contactStatus, hasBots: self.hasBots, isArchived: self.isArchived, inputTextPanelState: self.inputTextPanelState, editMessageState: self.editMessageState, recordedMediaPreview: self.recordedMediaPreview, inputQueryResults: self.inputQueryResults, inputMode: self.inputMode, titlePanelContexts: self.titlePanelContexts, keyboardButtonsMessage: self.keyboardButtonsMessage, pinnedMessageId: self.pinnedMessageId, pinnedMessage: pinnedMessage, peerIsBlocked: self.peerIsBlocked, peerIsMuted: self.peerIsMuted, peerDiscussionId: self.peerDiscussionId, peerGeoLocation: self.peerGeoLocation, callsAvailable: self.callsAvailable, callsPrivate: self.callsPrivate, slowmodeState: self.slowmodeState, chatHistoryState: self.chatHistoryState, botStartPayload: self.botStartPayload, urlPreview: self.urlPreview, editingUrlPreview: self.editingUrlPreview, search: self.search, searchQuerySuggestionResult: self.searchQuerySuggestionResult, chatWallpaper: self.chatWallpaper, theme: self.theme, strings: self.strings, dateTimeFormat: self.dateTimeFormat, nameDisplayOrder: self.nameDisplayOrder, limitsConfiguration: self.limitsConfiguration, fontSize: self.fontSize, bubbleCorners: self.bubbleCorners, accountPeerId: self.accountPeerId, mode: self.mode, hasScheduledMessages: self.hasScheduledMessages, isScheduledMessages: self.isScheduledMessages, peerNearbyData: self.peerNearbyData) } diff --git a/submodules/WalletUI/Resources/WalletStrings.mapping b/submodules/WalletUI/Resources/WalletStrings.mapping index 0f39866777c67e74b19a01f779b9a0361509e1f3..17cc3a5663f90f1755dec9124d0cbe37c00f5e0b 100644 GIT binary patch delta 17 ZcmaFn_{?#`Duv0X6{Hy%Cofk}002q>2HpSw delta 17 ZcmaFn_{?#`Duu}>6=WG1Cofl!0{}_;2HXGu diff --git a/submodules/WalletUI/Sources/WalletStrings.swift b/submodules/WalletUI/Sources/WalletStrings.swift index b5d79e61f2..ce409636d3 100644 --- a/submodules/WalletUI/Sources/WalletStrings.swift +++ b/submodules/WalletUI/Sources/WalletStrings.swift @@ -449,12 +449,12 @@ public final class WalletStrings: Equatable { public var Wallet_Send_ConfirmationConfirm: String { return self._s[218]! } public var Wallet_Created_ExportErrorTitle: String { return self._s[219]! } public var Wallet_Info_TransactionPendingHeader: String { return self._s[220]! } - public func Wallet_Updated_MinutesAgo(_ value: Int32) -> String { + public func Wallet_Updated_HoursAgo(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = walletStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, stringValue) } - public func Wallet_Updated_HoursAgo(_ value: Int32) -> String { + public func Wallet_Updated_MinutesAgo(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = walletStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, stringValue) From e7e9e9353574ffd55517de3771c45e6745320bd3 Mon Sep 17 00:00:00 2001 From: Ali <> Date: Tue, 6 Oct 2020 17:19:44 +0100 Subject: [PATCH 09/15] Update xcode --- build-system/xcode_version | 2 +- buildbox/build-telegram.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build-system/xcode_version b/build-system/xcode_version index 8204473ef6..b700dc1d47 100644 --- a/build-system/xcode_version +++ b/build-system/xcode_version @@ -1 +1 @@ -11.5 +12.0.1 diff --git a/buildbox/build-telegram.sh b/buildbox/build-telegram.sh index c5afe51b13..d7acc5af35 100644 --- a/buildbox/build-telegram.sh +++ b/buildbox/build-telegram.sh @@ -5,7 +5,7 @@ set -e BUILD_TELEGRAM_VERSION="1" MACOS_VERSION="10.15" -XCODE_VERSION="11.5" +XCODE_VERSION="12.0.1" GUEST_SHELL="bash" VM_BASE_NAME="macos$(echo $MACOS_VERSION | sed -e 's/\.'/_/g)_Xcode$(echo $XCODE_VERSION | sed -e 's/\.'/_/g)" From b1d2eda2460171a89c508594f5b3f8a2761df2ee Mon Sep 17 00:00:00 2001 From: Ali <> Date: Tue, 6 Oct 2020 17:59:46 +0100 Subject: [PATCH 10/15] [WIP] --- ...hannelDiscussionGroupSetupController.swift | 18 ++++--- .../Sources/SearchPeerMembers.swift | 48 ++++++++++++------- submodules/TelegramApi/Sources/Api0.swift | 2 +- submodules/TelegramApi/Sources/Api1.swift | 28 +++++++---- .../TelegramCore/Sources/ChannelMembers.swift | 19 ++++++++ .../Sources/ChatSearchInputPanelNode.swift | 3 -- .../ChannelMemberCategoryListContext.swift | 13 ++++- ...annelMemberCategoriesContextsManager.swift | 6 +++ 8 files changed, 100 insertions(+), 37 deletions(-) diff --git a/submodules/PeerInfoUI/Sources/ChannelDiscussionGroupSetupController.swift b/submodules/PeerInfoUI/Sources/ChannelDiscussionGroupSetupController.swift index 3e8231b162..7ffe6a614b 100644 --- a/submodules/PeerInfoUI/Sources/ChannelDiscussionGroupSetupController.swift +++ b/submodules/PeerInfoUI/Sources/ChannelDiscussionGroupSetupController.swift @@ -560,9 +560,15 @@ public func channelDiscussionGroupSetupController(context: AccountContext, peerI var isEmptyState = false var displayGroupList = false if let cachedData = view.cachedData as? CachedChannelData { - let isEmpty = cachedData.linkedDiscussionPeerId == nil + var isEmpty = true + switch cachedData.linkedDiscussionPeerId { + case .unknown: + isEmpty = true + case let .known(value): + isEmpty = value == nil + } if let peer = view.peers[view.peerId] as? TelegramChannel, case .broadcast = peer.info { - if cachedData.linkedDiscussionPeerId == nil { + if isEmpty { if groups == nil { isEmptyState = true } else { @@ -570,13 +576,13 @@ public func channelDiscussionGroupSetupController(context: AccountContext, peerI } } } - if let wasEmpty = wasEmpty, wasEmpty != isEmpty { - crossfade = true - } - wasEmpty = isEmpty } else { isEmptyState = true } + if let wasEmpty = wasEmpty, wasEmpty != isEmptyState { + crossfade = true + } + wasEmpty = isEmptyState var emptyStateItem: ItemListControllerEmptyStateItem? if isEmptyState { diff --git a/submodules/SearchPeerMembers/Sources/SearchPeerMembers.swift b/submodules/SearchPeerMembers/Sources/SearchPeerMembers.swift index df45680f8d..05c001fd06 100644 --- a/submodules/SearchPeerMembers/Sources/SearchPeerMembers.swift +++ b/submodules/SearchPeerMembers/Sources/SearchPeerMembers.swift @@ -11,14 +11,12 @@ public enum SearchPeerMembersScope { } public func searchPeerMembers(context: AccountContext, peerId: PeerId, chatLocation: ChatLocation, query: String, scope: SearchPeerMembersScope) -> Signal<[Peer], NoError> { - if case .replyThread = chatLocation { - return .single([]) - } else if peerId.namespace == Namespaces.Peer.CloudChannel { + if peerId.namespace == Namespaces.Peer.CloudChannel { return context.account.postbox.transaction { transaction -> CachedChannelData? in return transaction.getPeerCachedData(peerId: peerId) as? CachedChannelData } |> mapToSignal { cachedData -> Signal<([Peer], Bool), NoError> in - if let cachedData = cachedData, let memberCount = cachedData.participantsSummary.memberCount, memberCount <= 64 { + if case .peer = chatLocation, let cachedData = cachedData, let memberCount = cachedData.participantsSummary.memberCount, memberCount <= 64 { return Signal { subscriber in let (disposable, _) = context.peerChannelMemberCategoriesContextsManager.recent(postbox: context.account.postbox, network: context.account.network, accountPeerId: context.account.peerId, peerId: peerId, searchQuery: nil, requestUpdate: false, updated: { state in if case .ready = state.loadingState { @@ -54,19 +52,37 @@ public func searchPeerMembers(context: AccountContext, peerId: PeerId, chatLocat } return Signal { subscriber in - let (disposable, _) = context.peerChannelMemberCategoriesContextsManager.recent(postbox: context.account.postbox, network: context.account.network, accountPeerId: context.account.peerId, peerId: peerId, searchQuery: query.isEmpty ? nil : query, updated: { state in - if case .ready = state.loadingState { - subscriber.putNext((state.list.compactMap { participant in - if participant.peer.isDeleted { - return nil - } - return participant.peer - }, true)) + switch chatLocation { + case let .peer(peerId): + let (disposable, _) = context.peerChannelMemberCategoriesContextsManager.recent(postbox: context.account.postbox, network: context.account.network, accountPeerId: context.account.peerId, peerId: peerId, searchQuery: query.isEmpty ? nil : query, updated: { state in + if case .ready = state.loadingState { + subscriber.putNext((state.list.compactMap { participant in + if participant.peer.isDeleted { + return nil + } + return participant.peer + }, true)) + } + }) + + return ActionDisposable { + disposable.dispose() + } + case let .replyThread(replyThreadMessage): + let (disposable, _) = context.peerChannelMemberCategoriesContextsManager.mentions(postbox: context.account.postbox, network: context.account.network, accountPeerId: context.account.peerId, peerId: peerId, threadMessageId: replyThreadMessage.messageId, searchQuery: query.isEmpty ? nil : query, updated: { state in + if case .ready = state.loadingState { + subscriber.putNext((state.list.compactMap { participant in + if participant.peer.isDeleted { + return nil + } + return participant.peer + }, true)) + } + }) + + return ActionDisposable { + disposable.dispose() } - }) - - return ActionDisposable { - disposable.dispose() } } |> runOn(Queue.mainQueue()) } diff --git a/submodules/TelegramApi/Sources/Api0.swift b/submodules/TelegramApi/Sources/Api0.swift index dd824ff79f..874ebaa025 100644 --- a/submodules/TelegramApi/Sources/Api0.swift +++ b/submodules/TelegramApi/Sources/Api0.swift @@ -322,7 +322,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = { dict[106343499] = { return Api.ChannelParticipantsFilter.parse_channelParticipantsSearch($0) } dict[-1548400251] = { return Api.ChannelParticipantsFilter.parse_channelParticipantsKicked($0) } dict[-1150621555] = { return Api.ChannelParticipantsFilter.parse_channelParticipantsContacts($0) } - dict[915357814] = { return Api.ChannelParticipantsFilter.parse_channelParticipantsMentions($0) } + dict[-531931925] = { return Api.ChannelParticipantsFilter.parse_channelParticipantsMentions($0) } dict[-350980120] = { return Api.WebPage.parse_webPageEmpty($0) } dict[-981018084] = { return Api.WebPage.parse_webPagePending($0) } dict[-392411726] = { return Api.WebPage.parse_webPage($0) } diff --git a/submodules/TelegramApi/Sources/Api1.swift b/submodules/TelegramApi/Sources/Api1.swift index 8e35f0b9c5..1dd38eed77 100644 --- a/submodules/TelegramApi/Sources/Api1.swift +++ b/submodules/TelegramApi/Sources/Api1.swift @@ -9991,7 +9991,7 @@ public extension Api { case channelParticipantsSearch(q: String) case channelParticipantsKicked(q: String) case channelParticipantsContacts(q: String) - case channelParticipantsMentions(q: String) + case channelParticipantsMentions(flags: Int32, q: String?, topMsgId: Int32?) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { switch self { @@ -10037,11 +10037,13 @@ public extension Api { } serializeString(q, buffer: buffer, boxed: false) break - case .channelParticipantsMentions(let q): + case .channelParticipantsMentions(let flags, let q, let topMsgId): if boxed { - buffer.appendInt32(915357814) + buffer.appendInt32(-531931925) } - serializeString(q, buffer: buffer, boxed: false) + serializeInt32(flags, buffer: buffer, boxed: false) + if Int(flags) & Int(1 << 0) != 0 {serializeString(q!, buffer: buffer, boxed: false)} + if Int(flags) & Int(1 << 1) != 0 {serializeInt32(topMsgId!, buffer: buffer, boxed: false)} break } } @@ -10062,8 +10064,8 @@ public extension Api { return ("channelParticipantsKicked", [("q", q)]) case .channelParticipantsContacts(let q): return ("channelParticipantsContacts", [("q", q)]) - case .channelParticipantsMentions(let q): - return ("channelParticipantsMentions", [("q", q)]) + case .channelParticipantsMentions(let flags, let q, let topMsgId): + return ("channelParticipantsMentions", [("flags", flags), ("q", q), ("topMsgId", topMsgId)]) } } @@ -10121,11 +10123,17 @@ public extension Api { } } public static func parse_channelParticipantsMentions(_ reader: BufferReader) -> ChannelParticipantsFilter? { - var _1: String? - _1 = parseString(reader) + var _1: Int32? + _1 = reader.readInt32() + var _2: String? + if Int(_1!) & Int(1 << 0) != 0 {_2 = parseString(reader) } + var _3: Int32? + if Int(_1!) & Int(1 << 1) != 0 {_3 = reader.readInt32() } let _c1 = _1 != nil - if _c1 { - return Api.ChannelParticipantsFilter.channelParticipantsMentions(q: _1!) + let _c2 = (Int(_1!) & Int(1 << 0) == 0) || _2 != nil + let _c3 = (Int(_1!) & Int(1 << 1) == 0) || _3 != nil + if _c1 && _c2 && _c3 { + return Api.ChannelParticipantsFilter.channelParticipantsMentions(flags: _1!, q: _2, topMsgId: _3) } else { return nil diff --git a/submodules/TelegramCore/Sources/ChannelMembers.swift b/submodules/TelegramCore/Sources/ChannelMembers.swift index e2bcdf9e5f..2fe9cbed67 100644 --- a/submodules/TelegramCore/Sources/ChannelMembers.swift +++ b/submodules/TelegramCore/Sources/ChannelMembers.swift @@ -18,6 +18,7 @@ public enum ChannelMembersCategory { case bots(ChannelMembersCategoryFilter) case restricted(ChannelMembersCategoryFilter) case banned(ChannelMembersCategoryFilter) + case mentions(threadId: MessageId?, filter: ChannelMembersCategoryFilter) } public func channelMembers(postbox: Postbox, network: Network, accountPeerId: PeerId, peerId: PeerId, category: ChannelMembersCategory = .recent(.all), offset: Int32 = 0, limit: Int32 = 64, hash: Int32 = 0) -> Signal<[RenderedChannelParticipant]?, NoError> { @@ -32,6 +33,24 @@ public func channelMembers(postbox: Postbox, network: Network, accountPeerId: Pe case let .search(query): apiFilter = .channelParticipantsSearch(q: query) } + case let .mentions(threadId, filter): + switch filter { + case .all: + var flags: Int32 = 0 + if threadId != nil { + flags |= 1 << 1 + } + apiFilter = .channelParticipantsMentions(flags: flags, q: nil, topMsgId: threadId?.id) + case let .search(query): + var flags: Int32 = 0 + if threadId != nil { + flags |= 1 << 1 + } + if !query.isEmpty { + flags |= 1 << 0 + } + apiFilter = .channelParticipantsMentions(flags: flags, q: query.isEmpty ? nil : query, topMsgId: threadId?.id) + } case .admins: apiFilter = .channelParticipantsAdmins case let .contacts(filter): diff --git a/submodules/TelegramUI/Sources/ChatSearchInputPanelNode.swift b/submodules/TelegramUI/Sources/ChatSearchInputPanelNode.swift index 0f88c5822b..8cbe14652a 100644 --- a/submodules/TelegramUI/Sources/ChatSearchInputPanelNode.swift +++ b/submodules/TelegramUI/Sources/ChatSearchInputPanelNode.swift @@ -189,9 +189,6 @@ final class ChatSearchInputPanelNode: ChatInputPanelNode { canSearchMembers = false } } - if case .replyThread = interfaceState.chatLocation { - canSearchMembers = false - } self.membersButton.isHidden = (!(interfaceState.search?.query.isEmpty ?? true)) || self.displayActivity || !canSearchMembers let resultsEnabled = (resultCount ?? 0) > 0 diff --git a/submodules/TemporaryCachedPeerDataManager/Sources/ChannelMemberCategoryListContext.swift b/submodules/TemporaryCachedPeerDataManager/Sources/ChannelMemberCategoryListContext.swift index 21045ada0f..0b20956993 100644 --- a/submodules/TemporaryCachedPeerDataManager/Sources/ChannelMemberCategoryListContext.swift +++ b/submodules/TemporaryCachedPeerDataManager/Sources/ChannelMemberCategoryListContext.swift @@ -64,6 +64,7 @@ public struct ChannelMemberListState { enum ChannelMemberListCategory { case recent case recentSearch(String) + case mentions(MessageId?, String?) case admins(String?) case contacts(String?) case bots(String?) @@ -211,6 +212,12 @@ private final class ChannelMemberSingleCategoryListContext: ChannelMemberCategor requestCategory = .recent(.all) case let .recentSearch(query): requestCategory = .recent(.search(query)) + case let .mentions(threadId, query): + if let query = query, !query.isEmpty { + requestCategory = .mentions(threadId: threadId, filter: .search(query)) + } else { + requestCategory = .mentions(threadId: threadId, filter: .all) + } case let .admins(query): requestCategory = .admins adminQuery = query @@ -521,6 +528,8 @@ private final class ChannelMemberSingleCategoryListContext: ChannelMemberCategor } } } + case .mentions: + break } } if updatedList { @@ -728,7 +737,7 @@ final class PeerChannelMemberCategoriesContext { emptyTimeout = 0.0 } switch key { - case .recent, .recentSearch, .admins, .contacts, .bots: + case .recent, .recentSearch, .admins, .contacts, .bots, .mentions: let mappedCategory: ChannelMemberListCategory switch key { case .recent: @@ -741,6 +750,8 @@ final class PeerChannelMemberCategoriesContext { mappedCategory = .contacts(query) case let .bots(query): mappedCategory = .bots(query) + case let .mentions(threadId, query): + mappedCategory = .mentions(threadId, query) default: mappedCategory = .recent } diff --git a/submodules/TemporaryCachedPeerDataManager/Sources/PeerChannelMemberCategoriesContextsManager.swift b/submodules/TemporaryCachedPeerDataManager/Sources/PeerChannelMemberCategoriesContextsManager.swift index b5e386a3a8..a2329de73c 100644 --- a/submodules/TemporaryCachedPeerDataManager/Sources/PeerChannelMemberCategoriesContextsManager.swift +++ b/submodules/TemporaryCachedPeerDataManager/Sources/PeerChannelMemberCategoriesContextsManager.swift @@ -8,6 +8,7 @@ import TelegramStringFormatting enum PeerChannelMemberContextKey: Equatable, Hashable { case recent case recentSearch(String) + case mentions(threadId: MessageId?, query: String?) case admins(String?) case contacts(String?) case bots(String?) @@ -321,6 +322,11 @@ public final class PeerChannelMemberCategoriesContextsManager { return self.getContext(postbox: postbox, network: network, accountPeerId: accountPeerId, peerId: peerId, key: key, requestUpdate: requestUpdate, updated: updated) } + public func mentions(postbox: Postbox, network: Network, accountPeerId: PeerId, peerId: PeerId, threadMessageId: MessageId?, searchQuery: String? = nil, requestUpdate: Bool = true, updated: @escaping (ChannelMemberListState) -> Void) -> (Disposable, PeerChannelMemberCategoryControl?) { + let key: PeerChannelMemberContextKey = .mentions(threadId: threadMessageId, query: searchQuery) + return self.getContext(postbox: postbox, network: network, accountPeerId: accountPeerId, peerId: peerId, key: key, requestUpdate: requestUpdate, updated: updated) + } + public func admins(postbox: Postbox, network: Network, accountPeerId: PeerId, peerId: PeerId, searchQuery: String? = nil, updated: @escaping (ChannelMemberListState) -> Void) -> (Disposable, PeerChannelMemberCategoryControl?) { return self.getContext(postbox: postbox, network: network, accountPeerId: accountPeerId, peerId: peerId, key: .admins(searchQuery), requestUpdate: true, updated: updated) } From 814618bcf43f0a6342e95cfe1ea4ea74270eda70 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Tue, 6 Oct 2020 21:57:44 +0400 Subject: [PATCH 11/15] Grouped music files --- .../Telegram-iOS/en.lproj/Localizable.strings | 3 + .../ChatListUI/Sources/DateSuggestion.swift | 6 +- .../Sources/Node/ChatListItemStrings.swift | 11 + submodules/CheckNode/Sources/CheckNode.swift | 4 + .../LegacyComponents/TGCheckButtonView.h | 3 +- .../Sources/TGCheckButtonView.m | 17 +- .../Sources/SemanticStatusNode.swift | 10 +- .../Sources/PresentationStrings.swift | 5601 +++++++++-------- .../Resources/PresentationStrings.mapping | Bin 156992 -> 157021 bytes .../TelegramUI/Sources/ChatController.swift | 20 +- .../ChatMessageAttachedContentNode.swift | 2 +- .../Sources/ChatMessageBubbleItemNode.swift | 32 +- .../ChatMessageFileBubbleContentNode.swift | 32 +- .../ChatMessageInteractiveFileNode.swift | 225 +- 14 files changed, 3071 insertions(+), 2895 deletions(-) diff --git a/Telegram/Telegram-iOS/en.lproj/Localizable.strings b/Telegram/Telegram-iOS/en.lproj/Localizable.strings index b57b879e58..8d50dadb19 100644 --- a/Telegram/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram/Telegram-iOS/en.lproj/Localizable.strings @@ -5817,3 +5817,6 @@ Any member of this group will be able to see messages in the channel."; "Channel.DiscussionMessageUnavailable" = "Sorry, this post has been removed from the discussion group."; "Conversation.ContextViewStats" = "View Statistics"; + +"ChatList.MessageMusic_1" = "1 Music File"; +"ChatList.MessageMusic_any" = "%@ Music Files"; diff --git a/submodules/ChatListUI/Sources/DateSuggestion.swift b/submodules/ChatListUI/Sources/DateSuggestion.swift index 2b3d9ccc36..35a1aceb48 100644 --- a/submodules/ChatListUI/Sources/DateSuggestion.swift +++ b/submodules/ChatListUI/Sources/DateSuggestion.swift @@ -104,13 +104,13 @@ func suggestDates(for string: String, strings: PresentationStrings, dateTimeForm let stringComponents = string.components(separatedBy: dateSeparator) if stringComponents.count < 3 { - for i in 0..<5 { - if let date = calendar.date(byAdding: .year, value: -i, to: resultDate), date < now { + for i in 0..<8 { + if let date = calendar.date(byAdding: .year, value: -i, to: resultDate), date < now, date > telegramReleaseDate { let lowerDate = getLowerDate(for: resultDate) result.append((lowerDate, date, nil)) } } - } else if resultDate < now { + } else if resultDate < now, date > telegramReleaseDate { let lowerDate = getLowerDate(for: resultDate) result.append((lowerDate, resultDate, nil)) } diff --git a/submodules/ChatListUI/Sources/Node/ChatListItemStrings.swift b/submodules/ChatListUI/Sources/Node/ChatListItemStrings.swift index 8cb7770fd2..76bb311036 100644 --- a/submodules/ChatListUI/Sources/Node/ChatListItemStrings.swift +++ b/submodules/ChatListUI/Sources/Node/ChatListItemStrings.swift @@ -10,6 +10,7 @@ import LocalizedPeerData private enum MessageGroupType { case photos case videos + case music case generic } @@ -18,6 +19,9 @@ private func singleMessageType(message: Message) -> MessageGroupType { if let _ = media as? TelegramMediaImage { return .photos } else if let file = media as? TelegramMediaFile { + if file.isMusic { + return .music + } if file.isVideo && !file.isInstantVideo { return .videos } @@ -80,6 +84,13 @@ public func chatListItemStrings(strings: PresentationStrings, nameDisplayOrder: messageText = strings.ChatList_MessageVideos(Int32(messages.count)) textIsReady = true } + case .music: + if !messageText.isEmpty { + textIsReady = true + } else { + messageText = strings.ChatList_MessageMusic(Int32(messages.count)) + textIsReady = true + } case .generic: break } diff --git a/submodules/CheckNode/Sources/CheckNode.swift b/submodules/CheckNode/Sources/CheckNode.swift index 4a1071282c..d7a3485417 100644 --- a/submodules/CheckNode/Sources/CheckNode.swift +++ b/submodules/CheckNode/Sources/CheckNode.swift @@ -8,6 +8,7 @@ public enum CheckNodeStyle { case plain case overlay case navigation + case compact } public final class CheckNode: ASDisplayNode { @@ -47,6 +48,9 @@ public final class CheckNode: ASDisplayNode { case .navigation: style = TGCheckButtonStyleGallery checkSize = CGSize(width: 39.0, height: 39.0) + case .compact: + style = TGCheckButtonStyleCompact + checkSize = CGSize(width: 30.0, height: 30.0) } let checkView = TGCheckButtonView(style: style, pallete: TGCheckButtonPallete(defaultBackgroundColor: self.fillColor, accentBackgroundColor: self.fillColor, defaultBorderColor: self.strokeColor, mediaBorderColor: self.strokeColor, chatBorderColor: self.strokeColor, check: self.foregroundColor, blueColor: self.fillColor, barBackgroundColor: self.fillColor))! checkView.setSelected(true, animated: false) diff --git a/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGCheckButtonView.h b/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGCheckButtonView.h index 5ec223eeb0..12622ece3e 100644 --- a/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGCheckButtonView.h +++ b/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGCheckButtonView.h @@ -8,7 +8,8 @@ typedef enum TGCheckButtonStyleMedia, TGCheckButtonStyleGallery, TGCheckButtonStyleShare, - TGCheckButtonStyleChat + TGCheckButtonStyleChat, + TGCheckButtonStyleCompact } TGCheckButtonStyle; @interface TGCheckButtonPallete : NSObject diff --git a/submodules/LegacyComponents/Sources/TGCheckButtonView.m b/submodules/LegacyComponents/Sources/TGCheckButtonView.m index 998363d54b..01672a1a96 100644 --- a/submodules/LegacyComponents/Sources/TGCheckButtonView.m +++ b/submodules/LegacyComponents/Sources/TGCheckButtonView.m @@ -106,6 +106,12 @@ } break; + case TGCheckButtonStyleCompact: + { + insideInset = 6.0f; + } + break; + default: { insideInset = 5.0f; @@ -182,13 +188,18 @@ default: { + CGFloat lineWidth = 1.0f; + if (style == TGCheckButtonStyleCompact) { + lineWidth = 1.5f; + } + CGRect rect = CGRectMake(0, 0, size.width, size.height); UIGraphicsBeginImageContextWithOptions(rect.size, false, 0); CGContextRef context = UIGraphicsGetCurrentContext(); - CGContextSetLineWidth(context, 1.0f); + CGContextSetLineWidth(context, lineWidth); CGContextSetStrokeColorWithColor(context, borderColor.CGColor); - CGContextStrokeEllipseInRect(context, CGRectInset(rect, insideInset + 0.5f, insideInset + 0.5f)); + CGContextStrokeEllipseInRect(context, CGRectInset(rect, insideInset + lineWidth / 2.0, insideInset + lineWidth / 2.0)); backgroundImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); @@ -234,7 +245,7 @@ UIColor *color = style == TGCheckButtonStyleDefaultBlue ? blueColor : greenColor; CGContextSetFillColorWithColor(context, color.CGColor); - CGFloat inset = (style == TGCheckButtonStyleDefault || style == TGCheckButtonStyleDefaultBlue) ? 0.0f : 1.2f; + CGFloat inset = (style == TGCheckButtonStyleDefault || style == TGCheckButtonStyleDefaultBlue || style == TGCheckButtonStyleCompact) ? 0.0f : 1.2f; CGContextFillEllipseInRect(context, CGRectInset(rect, insideInset + inset, insideInset + inset)); fillImage = UIGraphicsGetImageFromCurrentImageContext(); diff --git a/submodules/SemanticStatusNode/Sources/SemanticStatusNode.swift b/submodules/SemanticStatusNode/Sources/SemanticStatusNode.swift index c075d9c70a..40e20caf78 100644 --- a/submodules/SemanticStatusNode/Sources/SemanticStatusNode.swift +++ b/submodules/SemanticStatusNode/Sources/SemanticStatusNode.swift @@ -454,13 +454,15 @@ private final class SemanticStatusNodeDrawingState: NSObject { let hollow: Bool let transitionState: SemanticStatusNodeTransitionDrawingState? let drawingState: SemanticStatusNodeStateDrawingState + let cutout: SemanticStatusNode.Cutout? - init(background: UIColor, foreground: UIColor, hollow: Bool, transitionState: SemanticStatusNodeTransitionDrawingState?, drawingState: SemanticStatusNodeStateDrawingState) { + init(background: UIColor, foreground: UIColor, hollow: Bool, transitionState: SemanticStatusNodeTransitionDrawingState?, drawingState: SemanticStatusNodeStateDrawingState, cutout: SemanticStatusNode.Cutout?) { self.background = background self.foreground = foreground self.hollow = hollow self.transitionState = transitionState self.drawingState = drawingState + self.cutout = cutout super.init() } @@ -481,6 +483,10 @@ private final class SemanticStatusNodeTransitionContext { } public final class SemanticStatusNode: ASControlNode { + final class Cutout { + + } + public var backgroundNodeColor: UIColor { didSet { if !self.backgroundNodeColor.isEqual(oldValue) { @@ -589,7 +595,7 @@ public final class SemanticStatusNode: ASControlNode { transitionState = SemanticStatusNodeTransitionDrawingState(transition: t, drawingState: transitionContext.previousStateContext.drawingState(transitionFraction: 1.0 - t)) } - return SemanticStatusNodeDrawingState(background: self.backgroundNodeColor, foreground: self.foregroundNodeColor, hollow: self.hollow, transitionState: transitionState, drawingState: self.stateContext.drawingState(transitionFraction: transitionFraction)) + return SemanticStatusNodeDrawingState(background: self.backgroundNodeColor, foreground: self.foregroundNodeColor, hollow: self.hollow, transitionState: transitionState, drawingState: self.stateContext.drawingState(transitionFraction: transitionFraction), cutout: nil) } @objc override public class func draw(_ bounds: CGRect, withParameters parameters: Any?, isCancelled: () -> Bool, isRasterizing: Bool) { diff --git a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift index 6716d6d513..42445fd41b 100644 --- a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift +++ b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift @@ -2353,3435 +2353,3440 @@ public final class PresentationStrings: Equatable { public var Appearance_Preview: String { return self._s[2042]! } public var VoiceOver_Chat_Contact: String { return self._s[2043]! } public var Passport_Language_th: String { return self._s[2044]! } - public var PhotoEditor_CropAspectRatioOriginal: String { return self._s[2046]! } - public var LastSeen_Offline: String { return self._s[2049]! } - public var Map_OpenInHereMaps: String { return self._s[2050]! } - public var SettingsSearch_Synonyms_Data_AutoplayVideos: String { return self._s[2051]! } - public var AutoDownloadSettings_Reset: String { return self._s[2053]! } - public var Wallet_Month_GenFebruary: String { return self._s[2054]! } - public var Conversation_SendMessage_SetReminder: String { return self._s[2055]! } - public var Channel_AdminLog_EmptyMessageText: String { return self._s[2056]! } + public var PhotoEditor_CropAspectRatioOriginal: String { return self._s[2047]! } + public var LastSeen_Offline: String { return self._s[2050]! } + public var Map_OpenInHereMaps: String { return self._s[2051]! } + public var SettingsSearch_Synonyms_Data_AutoplayVideos: String { return self._s[2052]! } + public var AutoDownloadSettings_Reset: String { return self._s[2054]! } + public var Wallet_Month_GenFebruary: String { return self._s[2055]! } + public var Conversation_SendMessage_SetReminder: String { return self._s[2056]! } + public var Channel_AdminLog_EmptyMessageText: String { return self._s[2057]! } public func AddContact_StatusSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2057]!, self._r[2057]!, [_0]) - } - public func AuthCode_Alert(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2058]!, self._r[2058]!, [_0]) } - public var Passport_Identity_EditDriversLicense: String { return self._s[2059]! } - public var ChatListFolder_NameNonMuted: String { return self._s[2060]! } - public var Username_Placeholder: String { return self._s[2061]! } + public func AuthCode_Alert(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2059]!, self._r[2059]!, [_0]) + } + public var Passport_Identity_EditDriversLicense: String { return self._s[2060]! } + public var ChatListFolder_NameNonMuted: String { return self._s[2061]! } + public var Username_Placeholder: String { return self._s[2062]! } public func PUSH_ALBUM(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2062]!, self._r[2062]!, [_1]) + return formatWithArgumentRanges(self._s[2063]!, self._r[2063]!, [_1]) } - public var Wallet_Send_NetworkErrorText: String { return self._s[2063]! } - public var Checkout_NewCard_SaveInfo: String { return self._s[2064]! } - public var Passport_Language_it: String { return self._s[2065]! } + public var Wallet_Send_NetworkErrorText: String { return self._s[2064]! } + public var Checkout_NewCard_SaveInfo: String { return self._s[2065]! } + public var Passport_Language_it: String { return self._s[2066]! } public func Channel_OwnershipTransfer_DescriptionInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2066]!, self._r[2066]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2067]!, self._r[2067]!, [_1, _2]) } - public var NotificationsSound_Pulse: String { return self._s[2067]! } - public var MessagePoll_NoVotes: String { return self._s[2071]! } - public var Message_Wallpaper: String { return self._s[2072]! } - public var Wallet_Created_Proceed: String { return self._s[2073]! } - public var Appearance_Other: String { return self._s[2074]! } - public var Passport_Identity_NativeNameHelp: String { return self._s[2076]! } - public var Group_PublicLink_Placeholder: String { return self._s[2079]! } - public var Appearance_ThemePreview_ChatList_2_Text: String { return self._s[2080]! } - public var VoiceOver_Recording_StopAndPreview: String { return self._s[2081]! } - public var ChatListFolder_NameBots: String { return self._s[2082]! } - public var Conversation_StopPollConfirmation: String { return self._s[2083]! } - public var UserInfo_DeleteContact: String { return self._s[2084]! } + public var NotificationsSound_Pulse: String { return self._s[2068]! } + public var MessagePoll_NoVotes: String { return self._s[2072]! } + public var Message_Wallpaper: String { return self._s[2073]! } + public var Wallet_Created_Proceed: String { return self._s[2074]! } + public var Appearance_Other: String { return self._s[2075]! } + public var Passport_Identity_NativeNameHelp: String { return self._s[2077]! } + public var Group_PublicLink_Placeholder: String { return self._s[2080]! } + public var Appearance_ThemePreview_ChatList_2_Text: String { return self._s[2081]! } + public var VoiceOver_Recording_StopAndPreview: String { return self._s[2082]! } + public var ChatListFolder_NameBots: String { return self._s[2083]! } + public var Conversation_StopPollConfirmation: String { return self._s[2084]! } + public var UserInfo_DeleteContact: String { return self._s[2085]! } public func Time_MonthOfYear_m11(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2085]!, self._r[2085]!, [_0]) + return formatWithArgumentRanges(self._s[2086]!, self._r[2086]!, [_0]) } - public var Wallpaper_Wallpaper: String { return self._s[2087]! } + public var Wallpaper_Wallpaper: String { return self._s[2088]! } public func PUSH_MESSAGE_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2088]!, self._r[2088]!, [_1]) + return formatWithArgumentRanges(self._s[2089]!, self._r[2089]!, [_1]) } - public var LoginPassword_ForgotPassword: String { return self._s[2089]! } - public var FeaturedStickerPacks_Title: String { return self._s[2090]! } - public var Paint_Pen: String { return self._s[2091]! } - public var Channel_AdminLogFilter_EventsInfo: String { return self._s[2092]! } - public var ChatListFolderSettings_Info: String { return self._s[2093]! } - public var FastTwoStepSetup_HintPlaceholder: String { return self._s[2094]! } - public var PhotoEditor_CurvesAll: String { return self._s[2096]! } - public var Wallet_Info_UnknownTransaction: String { return self._s[2097]! } + public var LoginPassword_ForgotPassword: String { return self._s[2090]! } + public var FeaturedStickerPacks_Title: String { return self._s[2091]! } + public var Paint_Pen: String { return self._s[2092]! } + public var Channel_AdminLogFilter_EventsInfo: String { return self._s[2093]! } + public var ChatListFolderSettings_Info: String { return self._s[2094]! } + public var FastTwoStepSetup_HintPlaceholder: String { return self._s[2095]! } + public var PhotoEditor_CurvesAll: String { return self._s[2097]! } + public var Wallet_Info_UnknownTransaction: String { return self._s[2098]! } public func Time_PreciseDate_m12(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2099]!, self._r[2099]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2100]!, self._r[2100]!, [_1, _2, _3]) } - public var Passport_Address_TypeRentalAgreement: String { return self._s[2101]! } - public var Message_ImageExpired: String { return self._s[2102]! } - public var Call_ConnectionErrorMessage: String { return self._s[2103]! } - public var SearchImages_NoImagesFound: String { return self._s[2105]! } - public var PeerInfo_PaneGifs: String { return self._s[2106]! } - public var Passport_DeletePersonalDetailsConfirmation: String { return self._s[2107]! } - public var EnterPasscode_RepeatNewPasscode: String { return self._s[2108]! } - public var PhotoEditor_VignetteTool: String { return self._s[2109]! } - public var Passport_Language_dz: String { return self._s[2110]! } - public var Notifications_ChannelNotificationsHelp: String { return self._s[2111]! } - public var Conversation_BlockUser: String { return self._s[2112]! } + public var Passport_Address_TypeRentalAgreement: String { return self._s[2102]! } + public var Message_ImageExpired: String { return self._s[2103]! } + public var Call_ConnectionErrorMessage: String { return self._s[2104]! } + public var SearchImages_NoImagesFound: String { return self._s[2106]! } + public var PeerInfo_PaneGifs: String { return self._s[2107]! } + public var Passport_DeletePersonalDetailsConfirmation: String { return self._s[2108]! } + public var EnterPasscode_RepeatNewPasscode: String { return self._s[2109]! } + public var PhotoEditor_VignetteTool: String { return self._s[2110]! } + public var Passport_Language_dz: String { return self._s[2111]! } + public var Notifications_ChannelNotificationsHelp: String { return self._s[2112]! } + public var Conversation_BlockUser: String { return self._s[2113]! } public func Wallet_Send_Balance(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2114]!, self._r[2114]!, [_0]) + return formatWithArgumentRanges(self._s[2115]!, self._r[2115]!, [_0]) } - public var GroupPermission_PermissionDisabledByDefault: String { return self._s[2115]! } - public var Group_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[2116]! } + public var GroupPermission_PermissionDisabledByDefault: String { return self._s[2116]! } + public var Group_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[2117]! } public func Time_MonthOfYear_m8(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2117]!, self._r[2117]!, [_0]) + return formatWithArgumentRanges(self._s[2118]!, self._r[2118]!, [_0]) } - public var KeyCommand_NewMessage: String { return self._s[2118]! } - public var EditTheme_Edit_Preview_IncomingReplyText: String { return self._s[2120]! } + public var KeyCommand_NewMessage: String { return self._s[2119]! } + public var EditTheme_Edit_Preview_IncomingReplyText: String { return self._s[2121]! } public func PUSH_CHAT_MESSAGE_GEO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2122]!, self._r[2122]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2123]!, self._r[2123]!, [_1, _2]) } - public var ContactList_Context_StartSecretChat: String { return self._s[2123]! } - public var VoiceOver_Chat_File: String { return self._s[2124]! } - public var ChatList_EditFolder: String { return self._s[2126]! } - public var Appearance_BubbleCorners_Title: String { return self._s[2127]! } - public var PeerInfo_PaneAudio: String { return self._s[2128]! } - public var Wallet_SecureStorageReset_Title: String { return self._s[2129]! } - public var ChatListFolder_CategoryContacts: String { return self._s[2131]! } + public var ContactList_Context_StartSecretChat: String { return self._s[2124]! } + public var VoiceOver_Chat_File: String { return self._s[2125]! } + public var ChatList_EditFolder: String { return self._s[2127]! } + public var Appearance_BubbleCorners_Title: String { return self._s[2128]! } + public var PeerInfo_PaneAudio: String { return self._s[2129]! } + public var Wallet_SecureStorageReset_Title: String { return self._s[2130]! } + public var ChatListFolder_CategoryContacts: String { return self._s[2132]! } public func Login_InvalidPhoneEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2132]!, self._r[2132]!, [_1, _2, _3, _4, _5]) + return formatWithArgumentRanges(self._s[2133]!, self._r[2133]!, [_1, _2, _3, _4, _5]) } - public var ChatList_PeerTypeChannel: String { return self._s[2133]! } - public var VoiceOver_Navigation_Search: String { return self._s[2134]! } - public var Settings_Search: String { return self._s[2135]! } - public var WallpaperSearch_ColorYellow: String { return self._s[2136]! } - public var Login_PhoneBannedError: String { return self._s[2137]! } - public var KeyCommand_JumpToNextChat: String { return self._s[2138]! } - public var Passport_Language_fa: String { return self._s[2139]! } - public var Settings_About: String { return self._s[2140]! } - public var Wallet_Configuration_Title: String { return self._s[2141]! } - public var AutoDownloadSettings_MaxFileSize: String { return self._s[2142]! } - public var Channel_AdminLog_InfoPanelChannelAlertText: String { return self._s[2143]! } - public var AutoDownloadSettings_DataUsageHigh: String { return self._s[2144]! } + public var ChatList_PeerTypeChannel: String { return self._s[2134]! } + public var VoiceOver_Navigation_Search: String { return self._s[2135]! } + public var Settings_Search: String { return self._s[2136]! } + public var WallpaperSearch_ColorYellow: String { return self._s[2137]! } + public var Login_PhoneBannedError: String { return self._s[2138]! } + public var KeyCommand_JumpToNextChat: String { return self._s[2139]! } + public var Passport_Language_fa: String { return self._s[2140]! } + public var Settings_About: String { return self._s[2141]! } + public var Wallet_Configuration_Title: String { return self._s[2142]! } + public var AutoDownloadSettings_MaxFileSize: String { return self._s[2143]! } + public var Channel_AdminLog_InfoPanelChannelAlertText: String { return self._s[2144]! } + public var AutoDownloadSettings_DataUsageHigh: String { return self._s[2145]! } public func PUSH_CHAT_MESSAGE_TEXT(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2145]!, self._r[2145]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2146]!, self._r[2146]!, [_1, _2, _3]) } - public var Common_OK: String { return self._s[2146]! } - public var Contacts_SortBy: String { return self._s[2147]! } - public var AutoNightTheme_PreferredTheme: String { return self._s[2148]! } + public var Common_OK: String { return self._s[2147]! } + public var Contacts_SortBy: String { return self._s[2148]! } + public var AutoNightTheme_PreferredTheme: String { return self._s[2149]! } public func AutoDownloadSettings_OnFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2150]!, self._r[2150]!, [_0]) + return formatWithArgumentRanges(self._s[2151]!, self._r[2151]!, [_0]) } - public var CallFeedback_IncludeLogs: String { return self._s[2153]! } + public var CallFeedback_IncludeLogs: String { return self._s[2154]! } public func External_OpenIn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2154]!, self._r[2154]!, [_0]) + return formatWithArgumentRanges(self._s[2155]!, self._r[2155]!, [_0]) } - public var Passcode_AppLockedAlert: String { return self._s[2155]! } - public var TwoStepAuth_SetupPasswordTitle: String { return self._s[2156]! } - public var Wallet_Send_ErrorDecryptionFailed: String { return self._s[2157]! } - public var Channel_NotificationLoading: String { return self._s[2159]! } - public var Passport_Identity_DocumentNumber: String { return self._s[2160]! } - public var VoiceOver_Chat_PagePreview: String { return self._s[2161]! } - public var VoiceOver_Chat_OpenHint: String { return self._s[2162]! } - public var Weekday_ShortFriday: String { return self._s[2163]! } - public var Wallet_CreateInvoice_Title: String { return self._s[2164]! } - public var Conversation_TitleMute: String { return self._s[2165]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsSound: String { return self._s[2166]! } - public var ScheduledMessages_PollUnavailable: String { return self._s[2167]! } - public var DialogList_LanguageTooltip: String { return self._s[2168]! } - public var Channel_AdminLogFilter_EventsPinned: String { return self._s[2169]! } + public var Passcode_AppLockedAlert: String { return self._s[2156]! } + public var TwoStepAuth_SetupPasswordTitle: String { return self._s[2157]! } + public var Wallet_Send_ErrorDecryptionFailed: String { return self._s[2158]! } + public var Channel_NotificationLoading: String { return self._s[2160]! } + public var Passport_Identity_DocumentNumber: String { return self._s[2161]! } + public var VoiceOver_Chat_PagePreview: String { return self._s[2162]! } + public var VoiceOver_Chat_OpenHint: String { return self._s[2163]! } + public var Weekday_ShortFriday: String { return self._s[2164]! } + public var Wallet_CreateInvoice_Title: String { return self._s[2165]! } + public var Conversation_TitleMute: String { return self._s[2166]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsSound: String { return self._s[2167]! } + public var ScheduledMessages_PollUnavailable: String { return self._s[2168]! } + public var DialogList_LanguageTooltip: String { return self._s[2169]! } + public var Channel_AdminLogFilter_EventsPinned: String { return self._s[2170]! } public func DialogList_SingleUploadingVideoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2170]!, self._r[2170]!, [_0]) + return formatWithArgumentRanges(self._s[2171]!, self._r[2171]!, [_0]) } - public var TwoStepAuth_SetupResendEmailCodeAlert: String { return self._s[2172]! } - public var Privacy_Calls_AlwaysAllow_Title: String { return self._s[2173]! } - public var Settings_EditVideo: String { return self._s[2174]! } - public var Stickers_FrequentlyUsed: String { return self._s[2175]! } - public var GroupPermission_Title: String { return self._s[2176]! } - public var AccessDenied_VideoMessageCamera: String { return self._s[2177]! } - public var Appearance_ThemeCarouselDay: String { return self._s[2178]! } + public var TwoStepAuth_SetupResendEmailCodeAlert: String { return self._s[2173]! } + public var Privacy_Calls_AlwaysAllow_Title: String { return self._s[2174]! } + public var Settings_EditVideo: String { return self._s[2175]! } + public var Stickers_FrequentlyUsed: String { return self._s[2176]! } + public var GroupPermission_Title: String { return self._s[2177]! } + public var AccessDenied_VideoMessageCamera: String { return self._s[2178]! } + public var Appearance_ThemeCarouselDay: String { return self._s[2179]! } public func PUSH_CHAT_MESSAGE_AUDIO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2179]!, self._r[2179]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2180]!, self._r[2180]!, [_1, _2]) } - public var Passport_Identity_DocumentNumberPlaceholder: String { return self._s[2180]! } - public var Tour_Title6: String { return self._s[2181]! } - public var EmptyGroupInfo_Title: String { return self._s[2182]! } + public var Passport_Identity_DocumentNumberPlaceholder: String { return self._s[2181]! } + public var Tour_Title6: String { return self._s[2182]! } + public var EmptyGroupInfo_Title: String { return self._s[2183]! } public func Channel_AdminLog_MessageToggleSignaturesOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2183]!, self._r[2183]!, [_0]) + return formatWithArgumentRanges(self._s[2184]!, self._r[2184]!, [_0]) } - public var Passport_Language_sk: String { return self._s[2184]! } - public var VoiceOver_Chat_YourAnonymousPoll: String { return self._s[2185]! } - public var Preview_SaveToCameraRoll: String { return self._s[2186]! } - public var LogoutOptions_SetPasscodeTitle: String { return self._s[2187]! } - public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[2188]! } - public var Conversation_ContextMenuMore: String { return self._s[2189]! } - public var Conversation_ForwardAuthorHiddenTooltip: String { return self._s[2190]! } - public var Channel_AdminLog_CanBeAnonymous: String { return self._s[2191]! } - public var CallFeedback_ReasonSilentLocal: String { return self._s[2193]! } - public var UserInfo_NotificationsDisable: String { return self._s[2194]! } + public var Passport_Language_sk: String { return self._s[2185]! } + public var VoiceOver_Chat_YourAnonymousPoll: String { return self._s[2186]! } + public var Preview_SaveToCameraRoll: String { return self._s[2187]! } + public var LogoutOptions_SetPasscodeTitle: String { return self._s[2188]! } + public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[2189]! } + public var Conversation_ContextMenuMore: String { return self._s[2190]! } + public var Conversation_ForwardAuthorHiddenTooltip: String { return self._s[2191]! } + public var Channel_AdminLog_CanBeAnonymous: String { return self._s[2192]! } + public var CallFeedback_ReasonSilentLocal: String { return self._s[2194]! } + public var UserInfo_NotificationsDisable: String { return self._s[2195]! } public func Channel_AdminLog_EmptyFilterQueryText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2196]!, self._r[2196]!, [_0]) + return formatWithArgumentRanges(self._s[2197]!, self._r[2197]!, [_0]) } - public var SettingsSearch_Synonyms_EditProfile_Bio: String { return self._s[2197]! } + public var SettingsSearch_Synonyms_EditProfile_Bio: String { return self._s[2198]! } public func Date_ChatDateHeader(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2199]!, self._r[2199]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2200]!, self._r[2200]!, [_1, _2]) } - public var WallpaperSearch_ColorPrefix: String { return self._s[2200]! } + public var WallpaperSearch_ColorPrefix: String { return self._s[2201]! } public func Message_ForwardedPsa_covid(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2201]!, self._r[2201]!, [_0]) + return formatWithArgumentRanges(self._s[2202]!, self._r[2202]!, [_0]) } - public var Conversation_RestrictedMedia: String { return self._s[2203]! } - public var Group_MessageVideoUpdated: String { return self._s[2204]! } - public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[2205]! } - public var GroupInfo_DeleteAndExit: String { return self._s[2206]! } - public var TwoFactorSetup_Email_Action: String { return self._s[2207]! } - public var Media_ShareThisVideo: String { return self._s[2209]! } - public var DialogList_Replies: String { return self._s[2210]! } + public var Conversation_RestrictedMedia: String { return self._s[2204]! } + public var Group_MessageVideoUpdated: String { return self._s[2205]! } + public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[2206]! } + public var GroupInfo_DeleteAndExit: String { return self._s[2207]! } + public var TwoFactorSetup_Email_Action: String { return self._s[2208]! } + public var Media_ShareThisVideo: String { return self._s[2210]! } + public var DialogList_Replies: String { return self._s[2211]! } public func Conversation_Moderate_DeleteAllMessages(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2211]!, self._r[2211]!, [_0]) + return formatWithArgumentRanges(self._s[2212]!, self._r[2212]!, [_0]) } - public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[2212]! } - public var Watch_Suggestion_OnMyWay: String { return self._s[2213]! } - public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[2214]! } + public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[2213]! } + public var Watch_Suggestion_OnMyWay: String { return self._s[2214]! } + public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[2215]! } public func PUSH_PINNED_POLL(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2215]!, self._r[2215]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2216]!, self._r[2216]!, [_1, _2]) } public func GroupInfo_InvitationLinkAcceptChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2216]!, self._r[2216]!, [_0]) + return formatWithArgumentRanges(self._s[2217]!, self._r[2217]!, [_0]) } - public var Channel_EditAdmin_PermissinAddAdminOff: String { return self._s[2217]! } - public var Conversation_WalletRequiredSetup: String { return self._s[2218]! } - public var ChatAdmins_AllMembersAreAdminsOnHelp: String { return self._s[2219]! } - public var ChatList_Search_NoResultsFitlerMedia: String { return self._s[2220]! } - public var Channel_Members_InviteLink: String { return self._s[2221]! } - public var Conversation_TapAndHoldToRecord: String { return self._s[2222]! } - public var Wallet_Info_Receive: String { return self._s[2223]! } - public var WatchRemote_AlertText: String { return self._s[2224]! } + public var Channel_EditAdmin_PermissinAddAdminOff: String { return self._s[2218]! } + public var Conversation_WalletRequiredSetup: String { return self._s[2219]! } + public var ChatAdmins_AllMembersAreAdminsOnHelp: String { return self._s[2220]! } + public var ChatList_Search_NoResultsFitlerMedia: String { return self._s[2221]! } + public var Channel_Members_InviteLink: String { return self._s[2222]! } + public var Conversation_TapAndHoldToRecord: String { return self._s[2223]! } + public var Wallet_Info_Receive: String { return self._s[2224]! } + public var WatchRemote_AlertText: String { return self._s[2225]! } public func Channel_DiscussionGroup_PrivateChannelLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2225]!, self._r[2225]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2226]!, self._r[2226]!, [_1, _2]) } - public var Conversation_Pin: String { return self._s[2226]! } - public var InfoPlist_NSMicrophoneUsageDescription: String { return self._s[2227]! } - public var Stickers_RemoveFromFavorites: String { return self._s[2228]! } + public var Conversation_Pin: String { return self._s[2227]! } + public var InfoPlist_NSMicrophoneUsageDescription: String { return self._s[2228]! } + public var Stickers_RemoveFromFavorites: String { return self._s[2229]! } public func Notification_PinnedPollMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2229]!, self._r[2229]!, [_0]) + return formatWithArgumentRanges(self._s[2230]!, self._r[2230]!, [_0]) } - public var Appearance_AppIconFilled: String { return self._s[2230]! } - public var StickerPack_ErrorNotFound: String { return self._s[2231]! } + public var Appearance_AppIconFilled: String { return self._s[2231]! } + public var StickerPack_ErrorNotFound: String { return self._s[2232]! } public func Channel_AdminLog_MessageRestrictedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2232]!, self._r[2232]!, [_1]) + return formatWithArgumentRanges(self._s[2233]!, self._r[2233]!, [_1]) } - public var Passport_Identity_AddIdentityCard: String { return self._s[2233]! } + public var Passport_Identity_AddIdentityCard: String { return self._s[2234]! } public func PUSH_CHANNEL_MESSAGE_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2234]!, self._r[2234]!, [_1]) + return formatWithArgumentRanges(self._s[2235]!, self._r[2235]!, [_1]) } - public var Call_Camera: String { return self._s[2235]! } - public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[2236]! } - public var Group_Location_Info: String { return self._s[2237]! } - public var Watch_LastSeen_WithinAMonth: String { return self._s[2238]! } - public var UserInfo_NotificationsDefaultEnabled: String { return self._s[2239]! } + public var Call_Camera: String { return self._s[2236]! } + public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[2237]! } + public var Group_Location_Info: String { return self._s[2238]! } + public var Watch_LastSeen_WithinAMonth: String { return self._s[2239]! } + public var UserInfo_NotificationsDefaultEnabled: String { return self._s[2240]! } public func DialogList_PinLimitError(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2240]!, self._r[2240]!, [_0]) + return formatWithArgumentRanges(self._s[2241]!, self._r[2241]!, [_0]) } - public var Weekday_Yesterday: String { return self._s[2241]! } - public var TwoStepAuth_SetupPasswordEnterPasswordNew: String { return self._s[2242]! } - public var ArchivedPacksAlert_Title: String { return self._s[2243]! } - public var PeerInfo_PaneMembers: String { return self._s[2244]! } - public var PhotoEditor_SelectCoverFrame: String { return self._s[2245]! } - public var ContactInfo_PhoneLabelMain: String { return self._s[2246]! } + public var Weekday_Yesterday: String { return self._s[2242]! } + public var TwoStepAuth_SetupPasswordEnterPasswordNew: String { return self._s[2243]! } + public var ArchivedPacksAlert_Title: String { return self._s[2244]! } + public var PeerInfo_PaneMembers: String { return self._s[2245]! } + public var PhotoEditor_SelectCoverFrame: String { return self._s[2246]! } + public var ContactInfo_PhoneLabelMain: String { return self._s[2247]! } public func Time_PreciseDate_m7(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2247]!, self._r[2247]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2248]!, self._r[2248]!, [_1, _2, _3]) } - public var TwoFactorSetup_EmailVerification_ChangeAction: String { return self._s[2248]! } - public var Channel_DiscussionGroup: String { return self._s[2249]! } - public var EditTheme_Edit_Preview_IncomingReplyName: String { return self._s[2250]! } - public var Channel_EditAdmin_PermissionsHeader: String { return self._s[2252]! } - public var VoiceOver_MessageContextForward: String { return self._s[2253]! } - public var SocksProxySetup_TypeNone: String { return self._s[2254]! } - public var CreatePoll_MultipleChoiceQuizAlert: String { return self._s[2256]! } - public var ProfilePhoto_OpenInEditor: String { return self._s[2258]! } - public var WallpaperSearch_ColorPurple: String { return self._s[2259]! } - public var ChatListFolder_IncludeChatsTitle: String { return self._s[2260]! } - public var Group_Username_InvalidTooShort: String { return self._s[2261]! } + public var TwoFactorSetup_EmailVerification_ChangeAction: String { return self._s[2249]! } + public var Channel_DiscussionGroup: String { return self._s[2250]! } + public var EditTheme_Edit_Preview_IncomingReplyName: String { return self._s[2251]! } + public var Channel_EditAdmin_PermissionsHeader: String { return self._s[2253]! } + public var VoiceOver_MessageContextForward: String { return self._s[2254]! } + public var SocksProxySetup_TypeNone: String { return self._s[2255]! } + public var CreatePoll_MultipleChoiceQuizAlert: String { return self._s[2257]! } + public var ProfilePhoto_OpenInEditor: String { return self._s[2259]! } + public var WallpaperSearch_ColorPurple: String { return self._s[2260]! } + public var ChatListFolder_IncludeChatsTitle: String { return self._s[2261]! } + public var Group_Username_InvalidTooShort: String { return self._s[2262]! } public func Login_EmailPhoneBody(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2262]!, self._r[2262]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[2263]!, self._r[2263]!, [_0, _1, _2]) } - public var Passport_Language_tk: String { return self._s[2263]! } - public var ConvertToSupergroup_Title: String { return self._s[2264]! } - public var Channel_BanUser_PermissionEmbedLinks: String { return self._s[2265]! } - public var Cache_KeepMediaHelp: String { return self._s[2266]! } - public var Channel_Management_Title: String { return self._s[2267]! } + public var Passport_Language_tk: String { return self._s[2264]! } + public var ConvertToSupergroup_Title: String { return self._s[2265]! } + public var Channel_BanUser_PermissionEmbedLinks: String { return self._s[2266]! } + public var Cache_KeepMediaHelp: String { return self._s[2267]! } + public var Channel_Management_Title: String { return self._s[2268]! } public func PUSH_MESSAGE_PHOTO_SECRET(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2268]!, self._r[2268]!, [_1]) + return formatWithArgumentRanges(self._s[2269]!, self._r[2269]!, [_1]) } - public var Conversation_ForwardChats: String { return self._s[2269]! } - public var Passport_Language_bg: String { return self._s[2270]! } - public var SocksProxySetup_TypeSocks: String { return self._s[2271]! } - public var Permissions_PrivacyPolicy: String { return self._s[2272]! } - public var VoiceOver_Chat_YourMusic: String { return self._s[2273]! } - public var SettingsSearch_Synonyms_Notifications_ResetAllNotifications: String { return self._s[2274]! } - public var Conversation_EmptyGifPanelPlaceholder: String { return self._s[2275]! } - public var Conversation_ContextMenuOpenChannel: String { return self._s[2276]! } - public var Activity_UploadingVideo: String { return self._s[2277]! } - public var PrivacyPolicy_AgeVerificationAgree: String { return self._s[2279]! } - public var Wallet_Sending_Text: String { return self._s[2280]! } - public var SocksProxySetup_Credentials: String { return self._s[2282]! } - public var Preview_SaveGif: String { return self._s[2283]! } - public var Cache_Photos: String { return self._s[2284]! } - public var Conversation_ContextMenuCancelEditing: String { return self._s[2285]! } - public var Wallet_Intro_NotNow: String { return self._s[2286]! } - public var Contacts_FailedToSendInvitesMessage: String { return self._s[2287]! } - public var Passport_Language_lt: String { return self._s[2288]! } - public var Passport_DeleteDocument: String { return self._s[2289]! } - public var GroupInfo_SetGroupPhotoStop: String { return self._s[2290]! } - public var AccessDenied_VideoMessageMicrophone: String { return self._s[2291]! } + public var Conversation_ForwardChats: String { return self._s[2270]! } + public var Passport_Language_bg: String { return self._s[2271]! } + public var SocksProxySetup_TypeSocks: String { return self._s[2272]! } + public var Permissions_PrivacyPolicy: String { return self._s[2273]! } + public var VoiceOver_Chat_YourMusic: String { return self._s[2274]! } + public var SettingsSearch_Synonyms_Notifications_ResetAllNotifications: String { return self._s[2275]! } + public var Conversation_EmptyGifPanelPlaceholder: String { return self._s[2276]! } + public var Conversation_ContextMenuOpenChannel: String { return self._s[2277]! } + public var Activity_UploadingVideo: String { return self._s[2278]! } + public var PrivacyPolicy_AgeVerificationAgree: String { return self._s[2280]! } + public var Wallet_Sending_Text: String { return self._s[2281]! } + public var SocksProxySetup_Credentials: String { return self._s[2283]! } + public var Preview_SaveGif: String { return self._s[2284]! } + public var Cache_Photos: String { return self._s[2285]! } + public var Conversation_ContextMenuCancelEditing: String { return self._s[2286]! } + public var Wallet_Intro_NotNow: String { return self._s[2287]! } + public var Contacts_FailedToSendInvitesMessage: String { return self._s[2288]! } + public var Passport_Language_lt: String { return self._s[2289]! } + public var Passport_DeleteDocument: String { return self._s[2290]! } + public var GroupInfo_SetGroupPhotoStop: String { return self._s[2291]! } + public var AccessDenied_VideoMessageMicrophone: String { return self._s[2292]! } public func PeopleNearby_VisibleUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2292]!, self._r[2292]!, [_0]) + return formatWithArgumentRanges(self._s[2293]!, self._r[2293]!, [_0]) } - public var AccessDenied_VideoCallCamera: String { return self._s[2293]! } + public var AccessDenied_VideoCallCamera: String { return self._s[2294]! } public func Channel_AdminLog_MessageDeleted(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2294]!, self._r[2294]!, [_0]) + return formatWithArgumentRanges(self._s[2295]!, self._r[2295]!, [_0]) } - public var PhotoEditor_SharpenTool: String { return self._s[2295]! } + public var PhotoEditor_SharpenTool: String { return self._s[2296]! } public func PUSH_CHANNEL_MESSAGE_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2296]!, self._r[2296]!, [_1]) + return formatWithArgumentRanges(self._s[2297]!, self._r[2297]!, [_1]) } - public var DialogList_Unpin: String { return self._s[2297]! } - public var Stickers_NoStickersFound: String { return self._s[2298]! } - public var UserInfo_AddContact: String { return self._s[2300]! } + public var DialogList_Unpin: String { return self._s[2298]! } + public var Stickers_NoStickersFound: String { return self._s[2299]! } + public var UserInfo_AddContact: String { return self._s[2301]! } public func AddContact_SharedContactExceptionInfo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2302]!, self._r[2302]!, [_0]) - } - public func Notification_PinnedLocationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2303]!, self._r[2303]!, [_0]) } - public var CallFeedback_VideoReasonDistorted: String { return self._s[2304]! } - public var Tour_Text2: String { return self._s[2305]! } + public func Notification_PinnedLocationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2304]!, self._r[2304]!, [_0]) + } + public var CallFeedback_VideoReasonDistorted: String { return self._s[2305]! } + public var Tour_Text2: String { return self._s[2306]! } public func Conversation_TitleCommentsFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2307]!, self._r[2307]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2308]!, self._r[2308]!, [_1, _2]) } - public var Wallet_SecureStorageChanged_CreateWallet: String { return self._s[2308]! } - public var Paint_Delete: String { return self._s[2310]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsVibrate: String { return self._s[2311]! } + public var Wallet_SecureStorageChanged_CreateWallet: String { return self._s[2309]! } + public var Paint_Delete: String { return self._s[2311]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsVibrate: String { return self._s[2312]! } public func PrivacySettings_LastSeenEverybodyMinus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2313]!, self._r[2313]!, [_0]) + return formatWithArgumentRanges(self._s[2314]!, self._r[2314]!, [_0]) } - public var Privacy_Calls_NeverAllow_Title: String { return self._s[2314]! } - public var Notification_CallOutgoingShort: String { return self._s[2315]! } - public var Checkout_PasswordEntry_Title: String { return self._s[2316]! } - public var Channel_AdminLogFilter_AdminsAll: String { return self._s[2317]! } - public var Notification_MessageLifetime1m: String { return self._s[2318]! } - public var Wallet_TransactionInfo_CommentHeader: String { return self._s[2320]! } - public var BlockedUsers_AddNew: String { return self._s[2321]! } - public var Wallet_Intro_CreateErrorText: String { return self._s[2322]! } - public var FastTwoStepSetup_EmailSection: String { return self._s[2323]! } - public var Settings_SaveEditedPhotos: String { return self._s[2324]! } - public var GroupInfo_GroupNamePlaceholder: String { return self._s[2325]! } - public var Channel_AboutItem: String { return self._s[2326]! } - public var GroupInfo_InviteLink_RevokeLink: String { return self._s[2327]! } - public var Privacy_Calls_P2PNever: String { return self._s[2329]! } - public var Wallet_Weekday_Yesterday: String { return self._s[2330]! } - public var Passport_Language_uk: String { return self._s[2331]! } - public var NetworkUsageSettings_Wifi: String { return self._s[2332]! } - public var Conversation_Moderate_Report: String { return self._s[2333]! } - public var Wallpaper_ResetWallpapersConfirmation: String { return self._s[2334]! } - public var VoiceOver_Chat_SeenByRecipients: String { return self._s[2335]! } - public var Permissions_SiriText_v0: String { return self._s[2336]! } - public var Theme_Colors_Background: String { return self._s[2337]! } - public var Notification_CallMissed: String { return self._s[2338]! } - public var Stats_ZoomOut: String { return self._s[2339]! } - public var Profile_AddToExisting: String { return self._s[2340]! } - public var Passport_FieldAddressUploadHelp: String { return self._s[2343]! } - public var Undo_DeletedChannel: String { return self._s[2344]! } + public var Privacy_Calls_NeverAllow_Title: String { return self._s[2315]! } + public var Notification_CallOutgoingShort: String { return self._s[2316]! } + public var Checkout_PasswordEntry_Title: String { return self._s[2317]! } + public var Channel_AdminLogFilter_AdminsAll: String { return self._s[2318]! } + public var Notification_MessageLifetime1m: String { return self._s[2319]! } + public var Wallet_TransactionInfo_CommentHeader: String { return self._s[2321]! } + public var BlockedUsers_AddNew: String { return self._s[2322]! } + public var Wallet_Intro_CreateErrorText: String { return self._s[2323]! } + public var FastTwoStepSetup_EmailSection: String { return self._s[2324]! } + public var Settings_SaveEditedPhotos: String { return self._s[2325]! } + public var GroupInfo_GroupNamePlaceholder: String { return self._s[2326]! } + public var Channel_AboutItem: String { return self._s[2327]! } + public var GroupInfo_InviteLink_RevokeLink: String { return self._s[2328]! } + public var Privacy_Calls_P2PNever: String { return self._s[2330]! } + public var Wallet_Weekday_Yesterday: String { return self._s[2331]! } + public var Passport_Language_uk: String { return self._s[2332]! } + public var NetworkUsageSettings_Wifi: String { return self._s[2333]! } + public var Conversation_Moderate_Report: String { return self._s[2334]! } + public var Wallpaper_ResetWallpapersConfirmation: String { return self._s[2335]! } + public var VoiceOver_Chat_SeenByRecipients: String { return self._s[2336]! } + public var Permissions_SiriText_v0: String { return self._s[2337]! } + public var Theme_Colors_Background: String { return self._s[2338]! } + public var Notification_CallMissed: String { return self._s[2339]! } + public var Stats_ZoomOut: String { return self._s[2340]! } + public var Profile_AddToExisting: String { return self._s[2341]! } + public var Passport_FieldAddressUploadHelp: String { return self._s[2344]! } + public var Undo_DeletedChannel: String { return self._s[2345]! } public func Channel_AdminLog_MessagePinned(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2345]!, self._r[2345]!, [_0]) + return formatWithArgumentRanges(self._s[2346]!, self._r[2346]!, [_0]) } - public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2346]! } - public var Map_LiveLocationGroupDescription: String { return self._s[2347]! } - public var Passport_InfoFAQ_URL: String { return self._s[2348]! } - public var IntentsSettings_SuggestedChats: String { return self._s[2350]! } + public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2347]! } + public var Map_LiveLocationGroupDescription: String { return self._s[2348]! } + public var Passport_InfoFAQ_URL: String { return self._s[2349]! } + public var IntentsSettings_SuggestedChats: String { return self._s[2351]! } public func PUSH_MESSAGE_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2351]!, self._r[2351]!, [_1]) + return formatWithArgumentRanges(self._s[2352]!, self._r[2352]!, [_1]) } - public var State_connecting: String { return self._s[2352]! } - public var Passport_Identity_Country: String { return self._s[2353]! } - public var Passport_PasswordDescription: String { return self._s[2354]! } - public var ChatList_PsaLabel_covid: String { return self._s[2355]! } + public var State_connecting: String { return self._s[2353]! } + public var Passport_Identity_Country: String { return self._s[2354]! } + public var Passport_PasswordDescription: String { return self._s[2355]! } + public var ChatList_PsaLabel_covid: String { return self._s[2356]! } public func PUSH_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2356]!, self._r[2356]!, [_1]) + return formatWithArgumentRanges(self._s[2357]!, self._r[2357]!, [_1]) } - public var Contacts_AddPeopleNearby: String { return self._s[2357]! } - public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[2358]! } - public var ClearCache_Description: String { return self._s[2359]! } - public var Localization_LanguageName: String { return self._s[2360]! } + public var Contacts_AddPeopleNearby: String { return self._s[2358]! } + public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[2359]! } + public var ClearCache_Description: String { return self._s[2360]! } + public var Localization_LanguageName: String { return self._s[2361]! } public func UserInfo_UnblockConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2361]!, self._r[2361]!, [_0]) + return formatWithArgumentRanges(self._s[2362]!, self._r[2362]!, [_0]) } - public var ChatList_TabIconFoldersTooltipEmptyFolders: String { return self._s[2362]! } - public var UserInfo_CreateNewContact: String { return self._s[2363]! } - public var Channel_Stickers_NotFound: String { return self._s[2364]! } - public var Watch_Message_Poll: String { return self._s[2365]! } - public var Privacy_Forwards_WhoCanForward: String { return self._s[2366]! } + public var ChatList_TabIconFoldersTooltipEmptyFolders: String { return self._s[2363]! } + public var UserInfo_CreateNewContact: String { return self._s[2364]! } + public var Channel_Stickers_NotFound: String { return self._s[2365]! } + public var Watch_Message_Poll: String { return self._s[2366]! } + public var Privacy_Forwards_WhoCanForward: String { return self._s[2367]! } public func Notification_Kicked(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2367]!, self._r[2367]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2368]!, self._r[2368]!, [_0, _1]) } - public var Login_InfoDeletePhoto: String { return self._s[2368]! } - public var Appearance_ThemePreview_ChatList_6_Name: String { return self._s[2369]! } - public var InstantPage_FeedbackButton: String { return self._s[2370]! } - public var Appearance_PreviewReplyText: String { return self._s[2371]! } - public var Passport_FieldPhoneHelp: String { return self._s[2372]! } - public var Group_ErrorAddTooMuchBots: String { return self._s[2373]! } - public var Media_SendingOptionsTooltip: String { return self._s[2374]! } - public var ScheduledMessages_ScheduledOnline: String { return self._s[2375]! } - public var Notifications_Badge: String { return self._s[2376]! } - public var VoiceOver_Chat_VideoMessage: String { return self._s[2377]! } - public var TwoStepAuth_RecoveryCodeExpired: String { return self._s[2378]! } - public var Wallet_Configuration_ApplyErrorTitle: String { return self._s[2379]! } + public var Login_InfoDeletePhoto: String { return self._s[2369]! } + public var Appearance_ThemePreview_ChatList_6_Name: String { return self._s[2370]! } + public var InstantPage_FeedbackButton: String { return self._s[2371]! } + public var Appearance_PreviewReplyText: String { return self._s[2372]! } + public var Passport_FieldPhoneHelp: String { return self._s[2373]! } + public var Group_ErrorAddTooMuchBots: String { return self._s[2374]! } + public var Media_SendingOptionsTooltip: String { return self._s[2375]! } + public var ScheduledMessages_ScheduledOnline: String { return self._s[2376]! } + public var Notifications_Badge: String { return self._s[2377]! } + public var VoiceOver_Chat_VideoMessage: String { return self._s[2378]! } + public var TwoStepAuth_RecoveryCodeExpired: String { return self._s[2379]! } + public var Wallet_Configuration_ApplyErrorTitle: String { return self._s[2380]! } public func Notification_PinnedPhotoMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2381]!, self._r[2381]!, [_0]) + return formatWithArgumentRanges(self._s[2382]!, self._r[2382]!, [_0]) } - public var Wallet_Info_Send: String { return self._s[2382]! } - public var Passport_InfoLearnMore: String { return self._s[2383]! } - public var EnterPasscode_EnterTitle: String { return self._s[2384]! } - public var Appearance_EditTheme: String { return self._s[2385]! } - public var EditTheme_Expand_BottomInfo: String { return self._s[2386]! } - public var Stats_FollowersTitle: String { return self._s[2387]! } - public var Passport_Identity_SurnamePlaceholder: String { return self._s[2388]! } - public var Channel_Subscribers_Title: String { return self._s[2389]! } - public var Group_ErrorSupergroupConversionNotPossible: String { return self._s[2390]! } + public var Wallet_Info_Send: String { return self._s[2383]! } + public var Passport_InfoLearnMore: String { return self._s[2384]! } + public var EnterPasscode_EnterTitle: String { return self._s[2385]! } + public var Appearance_EditTheme: String { return self._s[2386]! } + public var EditTheme_Expand_BottomInfo: String { return self._s[2387]! } + public var Stats_FollowersTitle: String { return self._s[2388]! } + public var Passport_Identity_SurnamePlaceholder: String { return self._s[2389]! } + public var Channel_Subscribers_Title: String { return self._s[2390]! } + public var Group_ErrorSupergroupConversionNotPossible: String { return self._s[2391]! } public func Wallet_Time_PreciseDate_m5(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2391]!, self._r[2391]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2392]!, self._r[2392]!, [_1, _2, _3]) } - public var EditTheme_ThemeTemplateAlertTitle: String { return self._s[2392]! } - public var Wallet_Intro_CreateWallet: String { return self._s[2393]! } - public var Conversation_AddToReadingList: String { return self._s[2394]! } - public var EditTheme_Create_Preview_IncomingText: String { return self._s[2395]! } + public var EditTheme_ThemeTemplateAlertTitle: String { return self._s[2393]! } + public var Wallet_Intro_CreateWallet: String { return self._s[2394]! } + public var Conversation_AddToReadingList: String { return self._s[2395]! } + public var EditTheme_Create_Preview_IncomingText: String { return self._s[2396]! } public func Notifications_ExceptionsChangeSound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2396]!, self._r[2396]!, [_0]) + return formatWithArgumentRanges(self._s[2397]!, self._r[2397]!, [_0]) } - public var Group_AdminLog_EmptyText: String { return self._s[2397]! } - public var Passport_Identity_EditInternalPassport: String { return self._s[2398]! } - public var Wallet_Sending_Title: String { return self._s[2399]! } - public var Watch_Location_Current: String { return self._s[2400]! } - public var PrivacyPolicy_Title: String { return self._s[2401]! } - public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[2408]! } - public var Channel_TypeSetup_Title: String { return self._s[2411]! } - public var Appearance_PreviewReplyAuthor: String { return self._s[2412]! } - public var Passport_Language_ja: String { return self._s[2413]! } - public var ReportPeer_ReasonSpam: String { return self._s[2414]! } - public var Privacy_PaymentsClearInfoHelp: String { return self._s[2415]! } - public var Conversation_EditingMessageMediaEditCurrentPhoto: String { return self._s[2417]! } - public var Channel_AdminLog_ChangeInfo: String { return self._s[2418]! } - public var ChatListFolder_NameNonContacts: String { return self._s[2419]! } - public var Call_Audio: String { return self._s[2420]! } - public var PhotoEditor_CurvesGreen: String { return self._s[2421]! } - public var Wallet_Updated_JustNow: String { return self._s[2422]! } - public var ChatList_Search_NoResultsFitlerFiles: String { return self._s[2423]! } - public var Settings_PrivacySettings: String { return self._s[2424]! } - public var Stats_Followers: String { return self._s[2425]! } - public var Notifications_AddExceptionTitle: String { return self._s[2426]! } - public var TwoFactorSetup_Password_Title: String { return self._s[2427]! } - public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[2428]! } - public var OldChannels_NoticeText: String { return self._s[2429]! } - public var Conversation_SavedMessages: String { return self._s[2430]! } + public var Group_AdminLog_EmptyText: String { return self._s[2398]! } + public var Passport_Identity_EditInternalPassport: String { return self._s[2399]! } + public var Wallet_Sending_Title: String { return self._s[2400]! } + public var Watch_Location_Current: String { return self._s[2401]! } + public var PrivacyPolicy_Title: String { return self._s[2402]! } + public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[2409]! } + public var Channel_TypeSetup_Title: String { return self._s[2412]! } + public var Appearance_PreviewReplyAuthor: String { return self._s[2413]! } + public var Passport_Language_ja: String { return self._s[2414]! } + public var ReportPeer_ReasonSpam: String { return self._s[2415]! } + public var Privacy_PaymentsClearInfoHelp: String { return self._s[2416]! } + public var Conversation_EditingMessageMediaEditCurrentPhoto: String { return self._s[2418]! } + public var Channel_AdminLog_ChangeInfo: String { return self._s[2419]! } + public var ChatListFolder_NameNonContacts: String { return self._s[2420]! } + public var Call_Audio: String { return self._s[2421]! } + public var PhotoEditor_CurvesGreen: String { return self._s[2422]! } + public var Wallet_Updated_JustNow: String { return self._s[2423]! } + public var ChatList_Search_NoResultsFitlerFiles: String { return self._s[2424]! } + public var Settings_PrivacySettings: String { return self._s[2425]! } + public var Stats_Followers: String { return self._s[2426]! } + public var Notifications_AddExceptionTitle: String { return self._s[2427]! } + public var TwoFactorSetup_Password_Title: String { return self._s[2428]! } + public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[2429]! } + public var OldChannels_NoticeText: String { return self._s[2430]! } + public var Conversation_SavedMessages: String { return self._s[2431]! } public func Conversation_PeerNearbyTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2432]!, self._r[2432]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2433]!, self._r[2433]!, [_1, _2]) } - public var Passport_Address_TypeResidentialAddress: String { return self._s[2433]! } + public var Passport_Address_TypeResidentialAddress: String { return self._s[2434]! } public func Wallet_Info_TransactionBlockchainFee(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2434]!, self._r[2434]!, [_0]) + return formatWithArgumentRanges(self._s[2435]!, self._r[2435]!, [_0]) } - public var Appearance_ThemeNightBlue: String { return self._s[2435]! } - public var Notification_ChannelInviterSelf: String { return self._s[2436]! } - public var Watch_UserInfo_Service: String { return self._s[2438]! } - public var ChatList_Context_Back: String { return self._s[2439]! } - public var Passport_Email_Title: String { return self._s[2440]! } - public var Wallet_Month_ShortDecember: String { return self._s[2441]! } - public var Stats_GroupTopAdmin_Promote: String { return self._s[2442]! } + public var Appearance_ThemeNightBlue: String { return self._s[2436]! } + public var Notification_ChannelInviterSelf: String { return self._s[2437]! } + public var Watch_UserInfo_Service: String { return self._s[2439]! } + public var ChatList_Context_Back: String { return self._s[2440]! } + public var Passport_Email_Title: String { return self._s[2441]! } + public var Wallet_Month_ShortDecember: String { return self._s[2442]! } + public var Stats_GroupTopAdmin_Promote: String { return self._s[2443]! } public func PUSH_PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2443]!, self._r[2443]!, [_1]) + return formatWithArgumentRanges(self._s[2444]!, self._r[2444]!, [_1]) } - public var Conversation_UnsupportedMedia: String { return self._s[2444]! } - public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[2445]! } - public var Privacy_TopPeersHelp: String { return self._s[2447]! } - public var Privacy_Forwards_AlwaysLink: String { return self._s[2448]! } - public var Notifications_Badge_CountUnreadMessages_InfoOn: String { return self._s[2449]! } - public var Permissions_NotificationsTitle_v0: String { return self._s[2450]! } - public var Notification_PassportValueProofOfAddress: String { return self._s[2451]! } - public var Map_Map: String { return self._s[2452]! } - public var WallpaperSearch_ColorBlue: String { return self._s[2453]! } - public var Privacy_Calls_CustomShareHelp: String { return self._s[2454]! } - public var PhotoEditor_BlurToolRadial: String { return self._s[2455]! } - public var ChatList_Search_FilterMusic: String { return self._s[2456]! } - public var SettingsSearch_Synonyms_Data_AutoplayGifs: String { return self._s[2457]! } - public var Privacy_PaymentsClear_ShippingInfo: String { return self._s[2458]! } - public var Settings_LogoutConfirmationTitle: String { return self._s[2460]! } + public var Conversation_UnsupportedMedia: String { return self._s[2445]! } + public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[2446]! } + public var Privacy_TopPeersHelp: String { return self._s[2448]! } + public var Privacy_Forwards_AlwaysLink: String { return self._s[2449]! } + public var Notifications_Badge_CountUnreadMessages_InfoOn: String { return self._s[2450]! } + public var Permissions_NotificationsTitle_v0: String { return self._s[2451]! } + public var Notification_PassportValueProofOfAddress: String { return self._s[2452]! } + public var Map_Map: String { return self._s[2453]! } + public var WallpaperSearch_ColorBlue: String { return self._s[2454]! } + public var Privacy_Calls_CustomShareHelp: String { return self._s[2455]! } + public var PhotoEditor_BlurToolRadial: String { return self._s[2456]! } + public var ChatList_Search_FilterMusic: String { return self._s[2457]! } + public var SettingsSearch_Synonyms_Data_AutoplayGifs: String { return self._s[2458]! } + public var Privacy_PaymentsClear_ShippingInfo: String { return self._s[2459]! } + public var Settings_LogoutConfirmationTitle: String { return self._s[2461]! } public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2461]!, self._r[2461]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2462]!, self._r[2462]!, [_1, _2]) } public func Notification_ChangedGroupPhoto(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2462]!, self._r[2462]!, [_0]) + return formatWithArgumentRanges(self._s[2463]!, self._r[2463]!, [_0]) } - public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[2463]! } - public var Group_Username_CreatePublicLinkHelp: String { return self._s[2464]! } - public var GroupInfo_Location: String { return self._s[2466]! } - public var Passport_Language_ka: String { return self._s[2467]! } + public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[2464]! } + public var Group_Username_CreatePublicLinkHelp: String { return self._s[2465]! } + public var GroupInfo_Location: String { return self._s[2467]! } + public var Passport_Language_ka: String { return self._s[2468]! } public func TwoStepAuth_SetupPendingEmail(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2468]!, self._r[2468]!, [_0]) + return formatWithArgumentRanges(self._s[2469]!, self._r[2469]!, [_0]) } - public var Conversation_ContextMenuOpenChannelProfile: String { return self._s[2469]! } - public var ScheduledMessages_ClearAllConfirmation: String { return self._s[2472]! } - public var DialogList_SearchSectionRecent: String { return self._s[2473]! } - public var Passport_Address_OneOfTypeTemporaryRegistration: String { return self._s[2474]! } - public var Conversation_Timer_Send: String { return self._s[2475]! } - public var ChatState_Updating: String { return self._s[2477]! } - public var ChannelMembers_WhoCanAddMembers: String { return self._s[2478]! } - public var ChannelInfo_DeleteGroup: String { return self._s[2479]! } - public var TwoStepAuth_RecoveryFailed: String { return self._s[2480]! } - public var Channel_OwnershipTransfer_EnterPassword: String { return self._s[2481]! } - public var ChatList_Search_NoResults: String { return self._s[2482]! } - public var ChatListFolderSettings_AddRecommended: String { return self._s[2484]! } - public var ChangePhoneNumberCode_Called: String { return self._s[2485]! } - public var PeerInfo_GroupAboutItem: String { return self._s[2486]! } - public var Wallet_Info_YourBalance: String { return self._s[2488]! } + public var Conversation_ContextMenuOpenChannelProfile: String { return self._s[2470]! } + public var ScheduledMessages_ClearAllConfirmation: String { return self._s[2473]! } + public var DialogList_SearchSectionRecent: String { return self._s[2474]! } + public var Passport_Address_OneOfTypeTemporaryRegistration: String { return self._s[2475]! } + public var Conversation_Timer_Send: String { return self._s[2476]! } + public var ChatState_Updating: String { return self._s[2478]! } + public var ChannelMembers_WhoCanAddMembers: String { return self._s[2479]! } + public var ChannelInfo_DeleteGroup: String { return self._s[2480]! } + public var TwoStepAuth_RecoveryFailed: String { return self._s[2481]! } + public var Channel_OwnershipTransfer_EnterPassword: String { return self._s[2482]! } + public var ChatList_Search_NoResults: String { return self._s[2483]! } + public var ChatListFolderSettings_AddRecommended: String { return self._s[2485]! } + public var ChangePhoneNumberCode_Called: String { return self._s[2486]! } + public var PeerInfo_GroupAboutItem: String { return self._s[2487]! } + public var Wallet_Info_YourBalance: String { return self._s[2489]! } public func LiveLocationUpdated_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2489]!, self._r[2489]!, [_0]) + return formatWithArgumentRanges(self._s[2490]!, self._r[2490]!, [_0]) } - public var PrivacySettings_AuthSessions: String { return self._s[2490]! } - public var Passport_Address_Postcode: String { return self._s[2491]! } - public var VoiceOver_Chat_YourVideoMessage: String { return self._s[2492]! } - public var Passport_Address_Street2Placeholder: String { return self._s[2493]! } - public var Group_Location_Title: String { return self._s[2494]! } - public var SettingsSearch_Synonyms_Data_AutoDownloadReset: String { return self._s[2495]! } - public var PeopleNearby_UsersEmpty: String { return self._s[2496]! } - public var SettingsSearch_Synonyms_Data_Title: String { return self._s[2498]! } + public var PrivacySettings_AuthSessions: String { return self._s[2491]! } + public var Passport_Address_Postcode: String { return self._s[2492]! } + public var VoiceOver_Chat_YourVideoMessage: String { return self._s[2493]! } + public var Passport_Address_Street2Placeholder: String { return self._s[2494]! } + public var Group_Location_Title: String { return self._s[2495]! } + public var SettingsSearch_Synonyms_Data_AutoDownloadReset: String { return self._s[2496]! } + public var PeopleNearby_UsersEmpty: String { return self._s[2497]! } + public var SettingsSearch_Synonyms_Data_Title: String { return self._s[2499]! } public func Checkout_PasswordEntry_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2500]!, self._r[2500]!, [_0]) + return formatWithArgumentRanges(self._s[2501]!, self._r[2501]!, [_0]) } - public var Proxy_TooltipUnavailable: String { return self._s[2501]! } - public var Map_Search: String { return self._s[2502]! } - public var AutoDownloadSettings_TypeContacts: String { return self._s[2503]! } - public var Conversation_SearchByName_Prefix: String { return self._s[2504]! } + public var Proxy_TooltipUnavailable: String { return self._s[2502]! } + public var Map_Search: String { return self._s[2503]! } + public var AutoDownloadSettings_TypeContacts: String { return self._s[2504]! } + public var Conversation_SearchByName_Prefix: String { return self._s[2505]! } public func Channel_AdminLog_MessageToggleSignaturesOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2505]!, self._r[2505]!, [_0]) + return formatWithArgumentRanges(self._s[2506]!, self._r[2506]!, [_0]) } - public var TwoStepAuth_EmailAddSuccess: String { return self._s[2506]! } - public var ProfilePhoto_MainPhoto: String { return self._s[2507]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsSound: String { return self._s[2508]! } - public var SharedMedia_EmptyMusicText: String { return self._s[2509]! } - public var ChatSettings_AutoDownloadPhotos: String { return self._s[2510]! } - public var NetworkUsageSettings_BytesReceived: String { return self._s[2511]! } - public var Channel_AdminLog_EmptyText: String { return self._s[2512]! } - public var Channel_BanUser_PermissionSendMessages: String { return self._s[2513]! } - public var Undo_ChatDeletedForBothSides: String { return self._s[2514]! } - public var Notifications_GroupNotifications: String { return self._s[2515]! } - public var Wallet_Configuration_BlockchainNameChangedTitle: String { return self._s[2516]! } - public var Wallet_AccessDenied_Title: String { return self._s[2517]! } - public var AccessDenied_SaveMedia: String { return self._s[2518]! } - public var GroupInfo_LabelOwner: String { return self._s[2519]! } - public var Passport_Language_id: String { return self._s[2520]! } - public var ChatSettings_AutoDownloadTitle: String { return self._s[2521]! } - public var Conversation_UnpinMessageAlert: String { return self._s[2522]! } + public var TwoStepAuth_EmailAddSuccess: String { return self._s[2507]! } + public var ProfilePhoto_MainPhoto: String { return self._s[2508]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsSound: String { return self._s[2509]! } + public var SharedMedia_EmptyMusicText: String { return self._s[2510]! } + public var ChatSettings_AutoDownloadPhotos: String { return self._s[2511]! } + public var NetworkUsageSettings_BytesReceived: String { return self._s[2512]! } + public var Channel_AdminLog_EmptyText: String { return self._s[2513]! } + public var Channel_BanUser_PermissionSendMessages: String { return self._s[2514]! } + public var Undo_ChatDeletedForBothSides: String { return self._s[2515]! } + public var Notifications_GroupNotifications: String { return self._s[2516]! } + public var Wallet_Configuration_BlockchainNameChangedTitle: String { return self._s[2517]! } + public var Wallet_AccessDenied_Title: String { return self._s[2518]! } + public var AccessDenied_SaveMedia: String { return self._s[2519]! } + public var GroupInfo_LabelOwner: String { return self._s[2520]! } + public var Passport_Language_id: String { return self._s[2521]! } + public var ChatSettings_AutoDownloadTitle: String { return self._s[2522]! } + public var Conversation_UnpinMessageAlert: String { return self._s[2523]! } public func LiveLocationUpdated_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2523]!, self._r[2523]!, [_0]) - } - public func Call_RemoteVideoPaused(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2524]!, self._r[2524]!, [_0]) } - public var TwoFactorSetup_Done_Text: String { return self._s[2525]! } + public func Call_RemoteVideoPaused(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2525]!, self._r[2525]!, [_0]) + } + public var TwoFactorSetup_Done_Text: String { return self._s[2526]! } public func LastSeen_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2526]!, self._r[2526]!, [_0]) + return formatWithArgumentRanges(self._s[2527]!, self._r[2527]!, [_0]) } - public var Wallet_Words_Title: String { return self._s[2527]! } - public var NetworkUsageSettings_BytesSent: String { return self._s[2528]! } - public var OwnershipTransfer_Transfer: String { return self._s[2529]! } + public var Wallet_Words_Title: String { return self._s[2528]! } + public var NetworkUsageSettings_BytesSent: String { return self._s[2529]! } + public var OwnershipTransfer_Transfer: String { return self._s[2530]! } public func Notification_Exceptions_Sound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2530]!, self._r[2530]!, [_0]) + return formatWithArgumentRanges(self._s[2531]!, self._r[2531]!, [_0]) } - public var Passport_Language_pt: String { return self._s[2531]! } - public var PrivacySettings_WebSessions: String { return self._s[2532]! } - public var PrivacyPolicy_DeclineDeleteNow: String { return self._s[2534]! } - public var TwoFactorSetup_Hint_Title: String { return self._s[2535]! } + public var Passport_Language_pt: String { return self._s[2532]! } + public var PrivacySettings_WebSessions: String { return self._s[2533]! } + public var PrivacyPolicy_DeclineDeleteNow: String { return self._s[2535]! } + public var TwoFactorSetup_Hint_Title: String { return self._s[2536]! } public func Notification_Joined(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2536]!, self._r[2536]!, [_0]) + return formatWithArgumentRanges(self._s[2537]!, self._r[2537]!, [_0]) } - public var Group_Username_RemoveExistingUsernamesInfo: String { return self._s[2537]! } - public var PrivacyLastSeenSettings_CustomShareSettings_Delete: String { return self._s[2538]! } - public var AutoNightTheme_Scheduled: String { return self._s[2539]! } - public var CreatePoll_ExplanationHeader: String { return self._s[2540]! } - public var Calls_TabTitle: String { return self._s[2541]! } - public var ChatList_UndoArchiveHiddenText: String { return self._s[2542]! } - public var Notification_VideoCallCanceled: String { return self._s[2543]! } - public var Login_CodeSentInternal: String { return self._s[2544]! } - public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[2545]! } - public var Call_RecordingDisabledMessage: String { return self._s[2547]! } - public var AutoDownloadSettings_TypeChannels: String { return self._s[2549]! } - public var Wallet_Configuration_BlockchainNameChangedProceed: String { return self._s[2550]! } - public var Channel_Info_Stickers: String { return self._s[2551]! } - public var Passport_DeleteAddressConfirmation: String { return self._s[2552]! } + public var Group_Username_RemoveExistingUsernamesInfo: String { return self._s[2538]! } + public var PrivacyLastSeenSettings_CustomShareSettings_Delete: String { return self._s[2539]! } + public var AutoNightTheme_Scheduled: String { return self._s[2540]! } + public var CreatePoll_ExplanationHeader: String { return self._s[2541]! } + public var Calls_TabTitle: String { return self._s[2542]! } + public var ChatList_UndoArchiveHiddenText: String { return self._s[2543]! } + public var Notification_VideoCallCanceled: String { return self._s[2544]! } + public var Login_CodeSentInternal: String { return self._s[2545]! } + public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[2546]! } + public var Call_RecordingDisabledMessage: String { return self._s[2548]! } + public var AutoDownloadSettings_TypeChannels: String { return self._s[2550]! } + public var Wallet_Configuration_BlockchainNameChangedProceed: String { return self._s[2551]! } + public var Channel_Info_Stickers: String { return self._s[2552]! } + public var Passport_DeleteAddressConfirmation: String { return self._s[2553]! } public func Conversation_PeerNearbyDistance(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2553]!, self._r[2553]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2554]!, self._r[2554]!, [_1, _2]) } - public var ChannelMembers_WhoCanAddMembers_Admins: String { return self._s[2554]! } + public var ChannelMembers_WhoCanAddMembers_Admins: String { return self._s[2555]! } public func Call_StatusOngoing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2555]!, self._r[2555]!, [_0]) + return formatWithArgumentRanges(self._s[2556]!, self._r[2556]!, [_0]) } - public var Passport_DiscardMessageTitle: String { return self._s[2556]! } - public var Localization_LanguageOther: String { return self._s[2557]! } - public var Conversation_EncryptionCanceled: String { return self._s[2558]! } - public var ChatSettings_AutomaticPhotoDownload: String { return self._s[2559]! } + public var Passport_DiscardMessageTitle: String { return self._s[2557]! } + public var Localization_LanguageOther: String { return self._s[2558]! } + public var Conversation_EncryptionCanceled: String { return self._s[2559]! } + public var ChatSettings_AutomaticPhotoDownload: String { return self._s[2560]! } public func Notification_SecretChatMessageScreenshot(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2561]!, self._r[2561]!, [_0]) + return formatWithArgumentRanges(self._s[2562]!, self._r[2562]!, [_0]) } - public var Target_InviteToGroupErrorAlreadyInvited: String { return self._s[2563]! } - public var SocksProxySetup_SavedProxies: String { return self._s[2564]! } + public var Target_InviteToGroupErrorAlreadyInvited: String { return self._s[2564]! } + public var SocksProxySetup_SavedProxies: String { return self._s[2565]! } public func ApplyLanguage_ChangeLanguageAlreadyActive(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2565]!, self._r[2565]!, [_1]) + return formatWithArgumentRanges(self._s[2566]!, self._r[2566]!, [_1]) } - public var Conversation_ScamWarning: String { return self._s[2566]! } - public var Channel_AdminLog_InfoPanelAlertTitle: String { return self._s[2567]! } - public var LocalGroup_Title: String { return self._s[2568]! } - public var SettingsSearch_Synonyms_Notifications_MessageNotificationsAlert: String { return self._s[2569]! } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[2570]! } - public var Login_PhoneFloodError: String { return self._s[2571]! } - public var Username_InvalidTaken: String { return self._s[2573]! } - public var SocksProxySetup_AddProxy: String { return self._s[2575]! } - public var PrivacyLastSeenSettings_WhoCanSeeMyTimestamp: String { return self._s[2576]! } - public var MediaPicker_UngroupDescription: String { return self._s[2577]! } - public var Login_CodeExpired: String { return self._s[2578]! } - public var Localization_ChooseLanguage: String { return self._s[2579]! } - public var Checkout_NewCard_PostcodePlaceholder: String { return self._s[2580]! } + public var Conversation_ScamWarning: String { return self._s[2567]! } + public var Channel_AdminLog_InfoPanelAlertTitle: String { return self._s[2568]! } + public var LocalGroup_Title: String { return self._s[2569]! } + public var SettingsSearch_Synonyms_Notifications_MessageNotificationsAlert: String { return self._s[2570]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[2571]! } + public var Login_PhoneFloodError: String { return self._s[2572]! } + public var Username_InvalidTaken: String { return self._s[2574]! } + public var SocksProxySetup_AddProxy: String { return self._s[2576]! } + public var PrivacyLastSeenSettings_WhoCanSeeMyTimestamp: String { return self._s[2577]! } + public var MediaPicker_UngroupDescription: String { return self._s[2578]! } + public var Login_CodeExpired: String { return self._s[2579]! } + public var Localization_ChooseLanguage: String { return self._s[2580]! } + public var Checkout_NewCard_PostcodePlaceholder: String { return self._s[2581]! } public func ChangePhone_ErrorOccupied(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2581]!, self._r[2581]!, [_0]) - } - public func Channel_DiscussionGroup_HeaderSet(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2582]!, self._r[2582]!, [_0]) } - public var ReportPeer_ReasonOther_Title: String { return self._s[2584]! } - public var Conversation_ScheduleMessage_Title: String { return self._s[2585]! } - public var PeerInfo_ButtonDiscuss: String { return self._s[2586]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedPublicGroups: String { return self._s[2587]! } - public var Call_StatusNoAnswer: String { return self._s[2588]! } - public var ScheduledMessages_DeleteMany: String { return self._s[2590]! } - public var Channel_DiscussionGroupInfo: String { return self._s[2591]! } - public var Conversation_UnarchiveDone: String { return self._s[2592]! } - public var LogoutOptions_AddAccountText: String { return self._s[2593]! } - public var Message_PinnedContactMessage: String { return self._s[2594]! } + public func Channel_DiscussionGroup_HeaderSet(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2583]!, self._r[2583]!, [_0]) + } + public var ReportPeer_ReasonOther_Title: String { return self._s[2585]! } + public var Conversation_ScheduleMessage_Title: String { return self._s[2586]! } + public var PeerInfo_ButtonDiscuss: String { return self._s[2587]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedPublicGroups: String { return self._s[2588]! } + public var Call_StatusNoAnswer: String { return self._s[2589]! } + public var ScheduledMessages_DeleteMany: String { return self._s[2591]! } + public var Channel_DiscussionGroupInfo: String { return self._s[2592]! } + public var Conversation_UnarchiveDone: String { return self._s[2593]! } + public var LogoutOptions_AddAccountText: String { return self._s[2594]! } + public var Message_PinnedContactMessage: String { return self._s[2595]! } public func FileSize_GB(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2596]!, self._r[2596]!, [_0]) + return formatWithArgumentRanges(self._s[2597]!, self._r[2597]!, [_0]) } - public var Stats_GroupLanguagesTitle: String { return self._s[2597]! } - public var Passport_FieldAddressHelp: String { return self._s[2598]! } + public var Stats_GroupLanguagesTitle: String { return self._s[2598]! } + public var Passport_FieldAddressHelp: String { return self._s[2599]! } public func Passport_FieldOneOf_Or(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2599]!, self._r[2599]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2600]!, self._r[2600]!, [_1, _2]) } - public var ChatSettings_OpenLinksIn: String { return self._s[2601]! } - public var TwoFactorSetup_Hint_SkipAction: String { return self._s[2602]! } - public var Message_Photo: String { return self._s[2603]! } - public var MediaPicker_AddCaption: String { return self._s[2605]! } - public var LogoutOptions_Title: String { return self._s[2606]! } + public var ChatSettings_OpenLinksIn: String { return self._s[2602]! } + public var TwoFactorSetup_Hint_SkipAction: String { return self._s[2603]! } + public var Message_Photo: String { return self._s[2604]! } + public var MediaPicker_AddCaption: String { return self._s[2606]! } + public var LogoutOptions_Title: String { return self._s[2607]! } public func PUSH_PINNED_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2607]!, self._r[2607]!, [_1]) + return formatWithArgumentRanges(self._s[2608]!, self._r[2608]!, [_1]) } - public var Conversation_StatusKickedFromGroup: String { return self._s[2608]! } - public var Channel_AdminLogFilter_AdminsTitle: String { return self._s[2609]! } - public var ChatList_DeleteSavedMessagesConfirmationTitle: String { return self._s[2610]! } - public var Channel_AdminLogFilter_Title: String { return self._s[2611]! } - public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[2612]! } + public var Conversation_StatusKickedFromGroup: String { return self._s[2609]! } + public var Channel_AdminLogFilter_AdminsTitle: String { return self._s[2610]! } + public var ChatList_DeleteSavedMessagesConfirmationTitle: String { return self._s[2611]! } + public var Channel_AdminLogFilter_Title: String { return self._s[2612]! } + public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[2613]! } public func Wallet_Info_TransactionDateHeader(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2613]!, self._r[2613]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2614]!, self._r[2614]!, [_1, _2]) } - public var Compose_GroupTokenListPlaceholder: String { return self._s[2614]! } - public var Wallet_Words_NotDoneResponse: String { return self._s[2615]! } - public var Notifications_MessageNotificationsExceptions: String { return self._s[2616]! } - public var ChannelIntro_Title: String { return self._s[2617]! } - public var Stickers_Install: String { return self._s[2618]! } + public var Compose_GroupTokenListPlaceholder: String { return self._s[2615]! } + public var Wallet_Words_NotDoneResponse: String { return self._s[2616]! } + public var Notifications_MessageNotificationsExceptions: String { return self._s[2617]! } + public var ChannelIntro_Title: String { return self._s[2618]! } + public var Stickers_Install: String { return self._s[2619]! } public func VoiceOver_Chat_FileFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2619]!, self._r[2619]!, [_0]) + return formatWithArgumentRanges(self._s[2620]!, self._r[2620]!, [_0]) } - public var EditTheme_Create_Preview_IncomingReplyText: String { return self._s[2620]! } - public var Conversation_SwipeToReplyHintTitle: String { return self._s[2622]! } - public var Settings_Username: String { return self._s[2625]! } - public var FastTwoStepSetup_Title: String { return self._s[2626]! } - public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[2627]! } - public var SettingsSearch_Synonyms_Privacy_Title: String { return self._s[2628]! } - public var Passport_Identity_IssueDatePlaceholder: String { return self._s[2629]! } - public var CallFeedback_ReasonEcho: String { return self._s[2630]! } + public var EditTheme_Create_Preview_IncomingReplyText: String { return self._s[2621]! } + public var Conversation_SwipeToReplyHintTitle: String { return self._s[2623]! } + public var Settings_Username: String { return self._s[2626]! } + public var FastTwoStepSetup_Title: String { return self._s[2627]! } + public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[2628]! } + public var SettingsSearch_Synonyms_Privacy_Title: String { return self._s[2629]! } + public var Passport_Identity_IssueDatePlaceholder: String { return self._s[2630]! } + public var CallFeedback_ReasonEcho: String { return self._s[2631]! } public func Time_MonthOfYear_m1(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2631]!, self._r[2631]!, [_0]) + return formatWithArgumentRanges(self._s[2632]!, self._r[2632]!, [_0]) } - public var Conversation_OpenBotLinkTitle: String { return self._s[2632]! } - public var SocksProxySetup_Title: String { return self._s[2633]! } - public var CallFeedback_Success: String { return self._s[2634]! } - public var WallpaperPreview_SwipeTopText: String { return self._s[2636]! } - public var InstantPage_AutoNightTheme: String { return self._s[2638]! } - public var Watch_Conversation_Reply: String { return self._s[2639]! } - public var WallpaperPreview_Pattern: String { return self._s[2640]! } - public var CheckoutInfo_ReceiverInfoEmail: String { return self._s[2641]! } - public var Wallet_Send_ErrorNotEnoughFundsTitle: String { return self._s[2642]! } + public var Conversation_OpenBotLinkTitle: String { return self._s[2633]! } + public var SocksProxySetup_Title: String { return self._s[2634]! } + public var CallFeedback_Success: String { return self._s[2635]! } + public var WallpaperPreview_SwipeTopText: String { return self._s[2637]! } + public var InstantPage_AutoNightTheme: String { return self._s[2639]! } + public var Watch_Conversation_Reply: String { return self._s[2640]! } + public var WallpaperPreview_Pattern: String { return self._s[2641]! } + public var CheckoutInfo_ReceiverInfoEmail: String { return self._s[2642]! } + public var Wallet_Send_ErrorNotEnoughFundsTitle: String { return self._s[2643]! } public func Conversation_DeleteMessagesFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2643]!, self._r[2643]!, [_0]) + return formatWithArgumentRanges(self._s[2644]!, self._r[2644]!, [_0]) } - public var AutoDownloadSettings_TypeGroupChats: String { return self._s[2644]! } - public var DialogList_SavedMessagesTooltip: String { return self._s[2646]! } - public var Update_Title: String { return self._s[2647]! } - public var Conversation_ShareMyPhoneNumber: String { return self._s[2648]! } + public var AutoDownloadSettings_TypeGroupChats: String { return self._s[2645]! } + public var DialogList_SavedMessagesTooltip: String { return self._s[2647]! } + public var Update_Title: String { return self._s[2648]! } + public var Conversation_ShareMyPhoneNumber: String { return self._s[2649]! } public func Wallet_WordCheck_Text(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2649]!, self._r[2649]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2650]!, self._r[2650]!, [_1, _2, _3]) } - public var Wallet_SecureStorageReset_BiometryTouchId: String { return self._s[2650]! } - public var WallpaperPreview_CropTopText: String { return self._s[2652]! } - public var Channel_EditMessageErrorGeneric: String { return self._s[2653]! } - public var AccessDenied_LocationAlwaysDenied: String { return self._s[2654]! } - public var ChatListFolder_DiscardCancel: String { return self._s[2655]! } - public var Message_PinnedPhotoMessage: String { return self._s[2656]! } - public var Appearance_ThemeDayClassic: String { return self._s[2657]! } - public var SocksProxySetup_ProxySocks5: String { return self._s[2658]! } - public var AccessDenied_Wallpapers: String { return self._s[2664]! } + public var Wallet_SecureStorageReset_BiometryTouchId: String { return self._s[2651]! } + public var WallpaperPreview_CropTopText: String { return self._s[2653]! } + public var Channel_EditMessageErrorGeneric: String { return self._s[2654]! } + public var AccessDenied_LocationAlwaysDenied: String { return self._s[2655]! } + public var ChatListFolder_DiscardCancel: String { return self._s[2656]! } + public var Message_PinnedPhotoMessage: String { return self._s[2657]! } + public var Appearance_ThemeDayClassic: String { return self._s[2658]! } + public var SocksProxySetup_ProxySocks5: String { return self._s[2659]! } + public var AccessDenied_Wallpapers: String { return self._s[2665]! } public func Channel_AdminLog_MessageChangedGroupAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2665]!, self._r[2665]!, [_0]) + return formatWithArgumentRanges(self._s[2666]!, self._r[2666]!, [_0]) } - public var Weekday_Sunday: String { return self._s[2666]! } - public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[2668]! } - public var PeopleNearby_MakeVisibleDescription: String { return self._s[2669]! } - public var AccessDenied_LocationDisabled: String { return self._s[2670]! } - public var Tour_Text3: String { return self._s[2671]! } - public var AuthSessions_AddDevice_ScanTitle: String { return self._s[2672]! } + public var Weekday_Sunday: String { return self._s[2667]! } + public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[2669]! } + public var PeopleNearby_MakeVisibleDescription: String { return self._s[2670]! } + public var AccessDenied_LocationDisabled: String { return self._s[2671]! } + public var Tour_Text3: String { return self._s[2672]! } + public var AuthSessions_AddDevice_ScanTitle: String { return self._s[2673]! } public func Time_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2673]!, self._r[2673]!, [_0]) + return formatWithArgumentRanges(self._s[2674]!, self._r[2674]!, [_0]) } - public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[2674]! } - public var Conversation_ClearCache: String { return self._s[2675]! } - public var StickerPacksSettings_ArchivedMasks_Info: String { return self._s[2676]! } - public var ChatList_Tabs_AllChats: String { return self._s[2677]! } - public var DialogList_RecentTitlePeople: String { return self._s[2678]! } - public var Stickers_AddToFavorites: String { return self._s[2679]! } - public var ChatList_Context_RemoveFromFolder: String { return self._s[2680]! } - public var Settings_RemoveVideo: String { return self._s[2681]! } - public var PhotoEditor_CropAspectRatioSquare: String { return self._s[2682]! } - public var ConversationProfile_LeaveDeleteAndExit: String { return self._s[2683]! } - public var VoiceOver_Chat_YourFile: String { return self._s[2684]! } - public var SettingsSearch_Synonyms_Privacy_Forwards: String { return self._s[2685]! } - public var Group_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[2686]! } - public var Channel_AdminLog_AddMembers: String { return self._s[2687]! } - public var Map_SendThisLocation: String { return self._s[2689]! } - public var TwoStepAuth_EmailSkipAlert: String { return self._s[2691]! } - public var IntentsSettings_SuggestedChatsPrivateChats: String { return self._s[2692]! } - public var CloudStorage_Title: String { return self._s[2693]! } - public var TwoFactorSetup_Password_Action: String { return self._s[2694]! } - public var TwoStepAuth_ConfirmationText: String { return self._s[2695]! } - public var Passport_Address_EditTemporaryRegistration: String { return self._s[2697]! } - public var Undo_LeftGroup: String { return self._s[2698]! } - public var Conversation_StopLiveLocation: String { return self._s[2700]! } - public var NotificationSettings_ShowNotificationsFromAccountsSection: String { return self._s[2701]! } - public var Message_PinnedInvoice: String { return self._s[2702]! } - public var ApplyLanguage_LanguageNotSupportedError: String { return self._s[2703]! } + public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[2675]! } + public var Conversation_ClearCache: String { return self._s[2676]! } + public var StickerPacksSettings_ArchivedMasks_Info: String { return self._s[2677]! } + public var ChatList_Tabs_AllChats: String { return self._s[2678]! } + public var DialogList_RecentTitlePeople: String { return self._s[2679]! } + public var Stickers_AddToFavorites: String { return self._s[2680]! } + public var ChatList_Context_RemoveFromFolder: String { return self._s[2681]! } + public var Settings_RemoveVideo: String { return self._s[2682]! } + public var PhotoEditor_CropAspectRatioSquare: String { return self._s[2683]! } + public var ConversationProfile_LeaveDeleteAndExit: String { return self._s[2684]! } + public var VoiceOver_Chat_YourFile: String { return self._s[2685]! } + public var SettingsSearch_Synonyms_Privacy_Forwards: String { return self._s[2686]! } + public var Group_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[2687]! } + public var Channel_AdminLog_AddMembers: String { return self._s[2688]! } + public var Map_SendThisLocation: String { return self._s[2690]! } + public var TwoStepAuth_EmailSkipAlert: String { return self._s[2692]! } + public var IntentsSettings_SuggestedChatsPrivateChats: String { return self._s[2693]! } + public var CloudStorage_Title: String { return self._s[2694]! } + public var TwoFactorSetup_Password_Action: String { return self._s[2695]! } + public var TwoStepAuth_ConfirmationText: String { return self._s[2696]! } + public var Passport_Address_EditTemporaryRegistration: String { return self._s[2698]! } + public var Undo_LeftGroup: String { return self._s[2699]! } + public var Conversation_StopLiveLocation: String { return self._s[2701]! } + public var NotificationSettings_ShowNotificationsFromAccountsSection: String { return self._s[2702]! } + public var Message_PinnedInvoice: String { return self._s[2703]! } + public var ApplyLanguage_LanguageNotSupportedError: String { return self._s[2704]! } public func PUSH_CHAT_MESSAGE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2704]!, self._r[2704]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2705]!, self._r[2705]!, [_1, _2]) } public func Notification_PinnedAudioMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2705]!, self._r[2705]!, [_0]) + return formatWithArgumentRanges(self._s[2706]!, self._r[2706]!, [_0]) } - public var Weekday_Tuesday: String { return self._s[2706]! } - public var ChangePhoneNumberCode_Code: String { return self._s[2707]! } - public var VoiceOver_Chat_YourMessage: String { return self._s[2708]! } - public var Calls_CallTabDescription: String { return self._s[2709]! } - public var SocksProxySetup_UseProxy: String { return self._s[2711]! } - public var SettingsSearch_Synonyms_Stickers_Title: String { return self._s[2712]! } - public var PasscodeSettings_AlphanumericCode: String { return self._s[2713]! } - public var VoiceOver_Chat_YourVideo: String { return self._s[2714]! } - public var ChannelMembers_WhoCanAddMembersAdminsHelp: String { return self._s[2716]! } - public var SettingsSearch_Synonyms_Privacy_DeleteAccountIfAwayFor: String { return self._s[2717]! } - public var Exceptions_AddToExceptions: String { return self._s[2718]! } - public var UserInfo_Title: String { return self._s[2719]! } - public var Passport_DeleteDocumentConfirmation: String { return self._s[2721]! } - public var ChatList_Unmute: String { return self._s[2723]! } - public var SettingsSearch_Synonyms_Privacy_Data_ContactsSync: String { return self._s[2724]! } - public var Stats_GroupTopPostersTitle: String { return self._s[2725]! } - public var Username_CheckingUsername: String { return self._s[2726]! } - public var WallpaperColors_SetCustomColor: String { return self._s[2727]! } - public var AuthSessions_AddedDeviceTerminate: String { return self._s[2731]! } - public var Privacy_ProfilePhoto_CustomHelp: String { return self._s[2732]! } - public var Settings_ChangePhoneNumber: String { return self._s[2733]! } - public var PeerInfo_PaneLinks: String { return self._s[2734]! } - public var Appearance_ThemePreview_ChatList_1_Text: String { return self._s[2737]! } - public var Channel_EditAdmin_PermissionInviteSubscribers: String { return self._s[2739]! } - public var LogoutOptions_ChangePhoneNumberText: String { return self._s[2740]! } - public var VoiceOver_Media_PlaybackPause: String { return self._s[2741]! } - public var Wallet_RestoreFailed_Title: String { return self._s[2742]! } - public var Stats_FollowersBySourceTitle: String { return self._s[2744]! } + public var Weekday_Tuesday: String { return self._s[2707]! } + public var ChangePhoneNumberCode_Code: String { return self._s[2708]! } + public var VoiceOver_Chat_YourMessage: String { return self._s[2709]! } + public var Calls_CallTabDescription: String { return self._s[2710]! } + public var SocksProxySetup_UseProxy: String { return self._s[2712]! } + public var SettingsSearch_Synonyms_Stickers_Title: String { return self._s[2713]! } + public var PasscodeSettings_AlphanumericCode: String { return self._s[2714]! } + public var VoiceOver_Chat_YourVideo: String { return self._s[2715]! } + public var ChannelMembers_WhoCanAddMembersAdminsHelp: String { return self._s[2717]! } + public var SettingsSearch_Synonyms_Privacy_DeleteAccountIfAwayFor: String { return self._s[2718]! } + public var Exceptions_AddToExceptions: String { return self._s[2719]! } + public var UserInfo_Title: String { return self._s[2720]! } + public var Passport_DeleteDocumentConfirmation: String { return self._s[2722]! } + public var ChatList_Unmute: String { return self._s[2724]! } + public var SettingsSearch_Synonyms_Privacy_Data_ContactsSync: String { return self._s[2725]! } + public var Stats_GroupTopPostersTitle: String { return self._s[2726]! } + public var Username_CheckingUsername: String { return self._s[2727]! } + public var WallpaperColors_SetCustomColor: String { return self._s[2728]! } + public var AuthSessions_AddedDeviceTerminate: String { return self._s[2732]! } + public var Privacy_ProfilePhoto_CustomHelp: String { return self._s[2733]! } + public var Settings_ChangePhoneNumber: String { return self._s[2734]! } + public var PeerInfo_PaneLinks: String { return self._s[2735]! } + public var Appearance_ThemePreview_ChatList_1_Text: String { return self._s[2738]! } + public var Channel_EditAdmin_PermissionInviteSubscribers: String { return self._s[2740]! } + public var LogoutOptions_ChangePhoneNumberText: String { return self._s[2741]! } + public var VoiceOver_Media_PlaybackPause: String { return self._s[2742]! } + public var Wallet_RestoreFailed_Title: String { return self._s[2743]! } + public var Stats_FollowersBySourceTitle: String { return self._s[2745]! } public func Conversation_ScheduleMessage_SendOn(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2745]!, self._r[2745]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2746]!, self._r[2746]!, [_0, _1]) } - public var Compose_NewEncryptedChatTitle: String { return self._s[2746]! } - public var Channel_CommentsGroup_Header: String { return self._s[2748]! } + public var Compose_NewEncryptedChatTitle: String { return self._s[2747]! } + public var Channel_CommentsGroup_Header: String { return self._s[2749]! } public func ShareFileTip_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2752]!, self._r[2752]!, [_0]) + return formatWithArgumentRanges(self._s[2753]!, self._r[2753]!, [_0]) } public func PUSH_MESSAGE_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2753]!, self._r[2753]!, [_1]) + return formatWithArgumentRanges(self._s[2754]!, self._r[2754]!, [_1]) } - public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[2755]! } + public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[2756]! } public func TwoStepAuth_RecoveryEmailUnavailable(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2756]!, self._r[2756]!, [_0]) + return formatWithArgumentRanges(self._s[2757]!, self._r[2757]!, [_0]) } - public var Conversation_OpenBotLinkOpen: String { return self._s[2757]! } - public var VoiceOver_Chat_RecordModeVoiceMessage: String { return self._s[2758]! } - public var PrivacySettings_LastSeen: String { return self._s[2760]! } - public var SettingsSearch_Synonyms_Privacy_Passcode: String { return self._s[2761]! } - public var Theme_Colors_Proceed: String { return self._s[2762]! } - public var UserInfo_ScamBotWarning: String { return self._s[2763]! } - public var LogoutOptions_LogOut: String { return self._s[2765]! } - public var Conversation_SendMessage: String { return self._s[2766]! } - public var Passport_Address_Region: String { return self._s[2768]! } - public var MediaPicker_CameraRoll: String { return self._s[2770]! } + public var Conversation_OpenBotLinkOpen: String { return self._s[2758]! } + public var VoiceOver_Chat_RecordModeVoiceMessage: String { return self._s[2759]! } + public var PrivacySettings_LastSeen: String { return self._s[2761]! } + public var SettingsSearch_Synonyms_Privacy_Passcode: String { return self._s[2762]! } + public var Theme_Colors_Proceed: String { return self._s[2763]! } + public var UserInfo_ScamBotWarning: String { return self._s[2764]! } + public var LogoutOptions_LogOut: String { return self._s[2766]! } + public var Conversation_SendMessage: String { return self._s[2767]! } + public var Passport_Address_Region: String { return self._s[2769]! } + public var MediaPicker_CameraRoll: String { return self._s[2771]! } public func VoiceOver_Chat_ForwardedFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2771]!, self._r[2771]!, [_0]) + return formatWithArgumentRanges(self._s[2772]!, self._r[2772]!, [_0]) } - public var Call_ReportSend: String { return self._s[2773]! } - public var Month_ShortJune: String { return self._s[2774]! } - public var AutoDownloadSettings_GroupChats: String { return self._s[2775]! } + public var Call_ReportSend: String { return self._s[2774]! } + public var Month_ShortJune: String { return self._s[2775]! } + public var AutoDownloadSettings_GroupChats: String { return self._s[2776]! } public func Channel_AdminLog_CaptionEdited(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2777]!, self._r[2777]!, [_0]) + return formatWithArgumentRanges(self._s[2778]!, self._r[2778]!, [_0]) } - public var TwoStepAuth_DisableSuccess: String { return self._s[2778]! } - public var Cache_KeepMedia: String { return self._s[2779]! } + public var TwoStepAuth_DisableSuccess: String { return self._s[2779]! } + public var Cache_KeepMedia: String { return self._s[2780]! } public func Date_ChatDateHeaderYear(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2780]!, self._r[2780]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2781]!, self._r[2781]!, [_1, _2, _3]) } - public var Wallet_Alert_OK: String { return self._s[2781]! } - public var Appearance_LargeEmoji: String { return self._s[2782]! } + public var Wallet_Alert_OK: String { return self._s[2782]! } + public var Appearance_LargeEmoji: String { return self._s[2783]! } public func Notification_NewAuthDetected(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String, _ _6: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2783]!, self._r[2783]!, [_1, _2, _3, _4, _5, _6]) + return formatWithArgumentRanges(self._s[2784]!, self._r[2784]!, [_1, _2, _3, _4, _5, _6]) } - public var Chat_AttachmentMultipleForwardDisabled: String { return self._s[2784]! } - public var Wallet_Navigation_Close: String { return self._s[2785]! } - public var Call_CameraConfirmationText: String { return self._s[2786]! } + public var Chat_AttachmentMultipleForwardDisabled: String { return self._s[2785]! } + public var Wallet_Navigation_Close: String { return self._s[2786]! } + public var Call_CameraConfirmationText: String { return self._s[2787]! } public func AuthSessions_AppUnofficial(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2788]!, self._r[2788]!, [_0]) + return formatWithArgumentRanges(self._s[2789]!, self._r[2789]!, [_0]) } - public var VoiceOver_MessageContextReport: String { return self._s[2790]! } - public var ChatListFolder_ExcludeChatsTitle: String { return self._s[2791]! } - public var NotificationsSound_Tritone: String { return self._s[2793]! } - public var Wallet_Configuration_BlockchainIdHeader: String { return self._s[2794]! } - public var Notifications_InAppNotificationsPreview: String { return self._s[2797]! } - public var Stats_GroupTopAdmin_Actions: String { return self._s[2798]! } - public var PeerInfo_AddToContacts: String { return self._s[2799]! } - public var AccessDenied_Title: String { return self._s[2800]! } - public var Tour_Title1: String { return self._s[2801]! } - public var VoiceOver_AttachMedia: String { return self._s[2802]! } + public var VoiceOver_MessageContextReport: String { return self._s[2791]! } + public var ChatListFolder_ExcludeChatsTitle: String { return self._s[2792]! } + public var NotificationsSound_Tritone: String { return self._s[2794]! } + public var Wallet_Configuration_BlockchainIdHeader: String { return self._s[2795]! } + public var Notifications_InAppNotificationsPreview: String { return self._s[2798]! } + public var Stats_GroupTopAdmin_Actions: String { return self._s[2799]! } + public var PeerInfo_AddToContacts: String { return self._s[2800]! } + public var AccessDenied_Title: String { return self._s[2801]! } + public var Tour_Title1: String { return self._s[2802]! } + public var VoiceOver_AttachMedia: String { return self._s[2803]! } public func SharedMedia_SearchNoResultsDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2804]!, self._r[2804]!, [_0]) + return formatWithArgumentRanges(self._s[2805]!, self._r[2805]!, [_0]) } - public var Chat_Gifs_SavedSectionHeader: String { return self._s[2805]! } - public var LogoutOptions_ChangePhoneNumberTitle: String { return self._s[2806]! } + public var Chat_Gifs_SavedSectionHeader: String { return self._s[2806]! } + public var LogoutOptions_ChangePhoneNumberTitle: String { return self._s[2807]! } public func Passport_Scans_ScanIndex(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2807]!, self._r[2807]!, [_0]) + return formatWithArgumentRanges(self._s[2808]!, self._r[2808]!, [_0]) } - public var Channel_AdminLog_MessagePreviousLink: String { return self._s[2808]! } - public var Wallet_Send_AddressText: String { return self._s[2809]! } - public var OldChannels_Title: String { return self._s[2810]! } - public var LoginPassword_FloodError: String { return self._s[2811]! } - public var Checkout_ErrorPaymentFailed: String { return self._s[2813]! } + public var Channel_AdminLog_MessagePreviousLink: String { return self._s[2809]! } + public var Wallet_Send_AddressText: String { return self._s[2810]! } + public var OldChannels_Title: String { return self._s[2811]! } + public var LoginPassword_FloodError: String { return self._s[2812]! } + public var Checkout_ErrorPaymentFailed: String { return self._s[2814]! } public func Time_MonthOfYear_m7(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2814]!, self._r[2814]!, [_0]) + return formatWithArgumentRanges(self._s[2815]!, self._r[2815]!, [_0]) } - public var VoiceOver_Media_PlaybackPlay: String { return self._s[2817]! } - public var Passport_CorrectErrors: String { return self._s[2819]! } + public var VoiceOver_Media_PlaybackPlay: String { return self._s[2818]! } + public var Passport_CorrectErrors: String { return self._s[2820]! } public func PUSH_CHAT_PHOTO_EDITED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2820]!, self._r[2820]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2821]!, self._r[2821]!, [_1, _2]) } - public var ChatListFolderSettings_Title: String { return self._s[2821]! } + public var ChatListFolderSettings_Title: String { return self._s[2822]! } public func AutoDownloadSettings_UpToFor(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2822]!, self._r[2822]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2823]!, self._r[2823]!, [_1, _2]) } - public var PhotoEditor_HighlightsTool: String { return self._s[2823]! } - public var Contacts_NotRegisteredSection: String { return self._s[2826]! } + public var PhotoEditor_HighlightsTool: String { return self._s[2824]! } + public var Contacts_NotRegisteredSection: String { return self._s[2827]! } public func PUSH_PINNED_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2827]!, self._r[2827]!, [_1]) + return formatWithArgumentRanges(self._s[2828]!, self._r[2828]!, [_1]) } - public var User_DeletedAccount: String { return self._s[2828]! } - public var Conversation_ViewContactDetails: String { return self._s[2829]! } - public var WebSearch_GIFs: String { return self._s[2830]! } - public var ChatList_DeleteSavedMessagesConfirmationAction: String { return self._s[2831]! } - public var Appearance_PreviewOutgoingText: String { return self._s[2832]! } - public var Calls_CallTabTitle: String { return self._s[2833]! } + public var User_DeletedAccount: String { return self._s[2829]! } + public var Conversation_ViewContactDetails: String { return self._s[2830]! } + public var WebSearch_GIFs: String { return self._s[2831]! } + public var ChatList_DeleteSavedMessagesConfirmationAction: String { return self._s[2832]! } + public var Appearance_PreviewOutgoingText: String { return self._s[2833]! } + public var Calls_CallTabTitle: String { return self._s[2834]! } public func LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2834]!, self._r[2834]!, [_0]) + return formatWithArgumentRanges(self._s[2835]!, self._r[2835]!, [_0]) } - public var Channel_Status: String { return self._s[2835]! } - public var Conversation_SendMessageErrorGroupRestricted: String { return self._s[2837]! } - public var VoiceOver_Chat_OptionSelected: String { return self._s[2838]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsAlert: String { return self._s[2839]! } + public var Channel_Status: String { return self._s[2836]! } + public var Conversation_SendMessageErrorGroupRestricted: String { return self._s[2838]! } + public var VoiceOver_Chat_OptionSelected: String { return self._s[2839]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsAlert: String { return self._s[2840]! } public func ClearCache_Success(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2840]!, self._r[2840]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2841]!, self._r[2841]!, [_0, _1]) } - public var Passport_Identity_ExpiryDateNone: String { return self._s[2842]! } - public var Your_cards_expiration_month_is_invalid: String { return self._s[2844]! } - public var Month_ShortDecember: String { return self._s[2845]! } - public var Username_Help: String { return self._s[2846]! } - public var Login_InfoAvatarAdd: String { return self._s[2847]! } - public var Month_ShortMay: String { return self._s[2848]! } - public var DialogList_UnknownPinLimitError: String { return self._s[2849]! } - public var PasscodeSettings_AutoLock_IfAwayFor_5hours: String { return self._s[2850]! } - public var TwoStepAuth_EnabledSuccess: String { return self._s[2851]! } - public var Weekday_ShortSunday: String { return self._s[2852]! } - public var Channel_Username_InvalidTooShort: String { return self._s[2853]! } - public var AuthSessions_TerminateSession: String { return self._s[2854]! } - public var Passport_Identity_FilesTitle: String { return self._s[2855]! } + public var Passport_Identity_ExpiryDateNone: String { return self._s[2843]! } + public var Your_cards_expiration_month_is_invalid: String { return self._s[2845]! } + public var Month_ShortDecember: String { return self._s[2846]! } + public var Username_Help: String { return self._s[2847]! } + public var Login_InfoAvatarAdd: String { return self._s[2848]! } + public var Month_ShortMay: String { return self._s[2849]! } + public var DialogList_UnknownPinLimitError: String { return self._s[2850]! } + public var PasscodeSettings_AutoLock_IfAwayFor_5hours: String { return self._s[2851]! } + public var TwoStepAuth_EnabledSuccess: String { return self._s[2852]! } + public var Weekday_ShortSunday: String { return self._s[2853]! } + public var Channel_Username_InvalidTooShort: String { return self._s[2854]! } + public var AuthSessions_TerminateSession: String { return self._s[2855]! } + public var Passport_Identity_FilesTitle: String { return self._s[2856]! } public func Notification_PinnedRoundMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2856]!, self._r[2856]!, [_0]) + return formatWithArgumentRanges(self._s[2857]!, self._r[2857]!, [_0]) } - public var PeopleNearby_MakeVisible: String { return self._s[2858]! } + public var PeopleNearby_MakeVisible: String { return self._s[2859]! } public func Conversation_RestrictedMediaTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2859]!, self._r[2859]!, [_0]) + return formatWithArgumentRanges(self._s[2860]!, self._r[2860]!, [_0]) } public func Notification_MessageLifetimeChanged(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2860]!, self._r[2860]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2861]!, self._r[2861]!, [_1, _2]) } public func GroupInfo_AddParticipantConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2861]!, self._r[2861]!, [_0]) + return formatWithArgumentRanges(self._s[2862]!, self._r[2862]!, [_0]) } - public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[2862]! } - public var Conversation_ContextMenuForward: String { return self._s[2863]! } + public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[2863]! } + public var Conversation_ContextMenuForward: String { return self._s[2864]! } public func PUSH_CHAT_MESSAGE_QUIZ(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2865]!, self._r[2865]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2866]!, self._r[2866]!, [_1, _2, _3]) } - public var Notification_GroupInviterSelf: String { return self._s[2866]! } - public var Privacy_Forwards_NeverLink: String { return self._s[2867]! } - public var AuthSessions_CurrentSession: String { return self._s[2868]! } - public var Passport_Address_EditPassportRegistration: String { return self._s[2869]! } - public var ChannelInfo_DeleteChannelConfirmation: String { return self._s[2870]! } - public var ChatSearch_ResultsTooltip: String { return self._s[2872]! } - public var CheckoutInfo_Pay: String { return self._s[2873]! } + public var Notification_GroupInviterSelf: String { return self._s[2867]! } + public var Privacy_Forwards_NeverLink: String { return self._s[2868]! } + public var AuthSessions_CurrentSession: String { return self._s[2869]! } + public var Passport_Address_EditPassportRegistration: String { return self._s[2870]! } + public var ChannelInfo_DeleteChannelConfirmation: String { return self._s[2871]! } + public var ChatSearch_ResultsTooltip: String { return self._s[2873]! } + public var CheckoutInfo_Pay: String { return self._s[2874]! } public func Channel_AdminLog_MessageChangedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2875]!, self._r[2875]!, [_0]) + return formatWithArgumentRanges(self._s[2876]!, self._r[2876]!, [_0]) } - public var GroupInfo_AddParticipant: String { return self._s[2876]! } - public var GroupPermission_ApplyAlertAction: String { return self._s[2877]! } - public var ChatList_UndoArchiveText1: String { return self._s[2878]! } - public var Localization_LanguageCustom: String { return self._s[2879]! } - public var SettingsSearch_Synonyms_Passport: String { return self._s[2880]! } - public var Settings_UsernameEmpty: String { return self._s[2881]! } - public var Settings_FAQ_URL: String { return self._s[2882]! } - public var Common_Select: String { return self._s[2884]! } - public var Notification_MessageLifetimeRemovedOutgoing: String { return self._s[2885]! } - public var Notification_PassportValueAddress: String { return self._s[2886]! } - public var Conversation_MessageDialogDelete: String { return self._s[2887]! } - public var Map_OpenInYandexNavigator: String { return self._s[2889]! } - public var DialogList_SearchSectionDialogs: String { return self._s[2890]! } - public var AccessDenied_Contacts: String { return self._s[2891]! } - public var SettingsSearch_Synonyms_Privacy_Data_DeleteDrafts: String { return self._s[2893]! } - public var Passport_ScanPassportHelp: String { return self._s[2894]! } - public var ChatListFolder_NameChannels: String { return self._s[2895]! } - public var Appearance_ThemePreview_Chat_5_Text: String { return self._s[2896]! } + public var GroupInfo_AddParticipant: String { return self._s[2877]! } + public var GroupPermission_ApplyAlertAction: String { return self._s[2878]! } + public var ChatList_UndoArchiveText1: String { return self._s[2879]! } + public var Localization_LanguageCustom: String { return self._s[2880]! } + public var SettingsSearch_Synonyms_Passport: String { return self._s[2881]! } + public var Settings_UsernameEmpty: String { return self._s[2882]! } + public var Settings_FAQ_URL: String { return self._s[2883]! } + public var Common_Select: String { return self._s[2885]! } + public var Notification_MessageLifetimeRemovedOutgoing: String { return self._s[2886]! } + public var Notification_PassportValueAddress: String { return self._s[2887]! } + public var Conversation_MessageDialogDelete: String { return self._s[2888]! } + public var Map_OpenInYandexNavigator: String { return self._s[2890]! } + public var DialogList_SearchSectionDialogs: String { return self._s[2891]! } + public var AccessDenied_Contacts: String { return self._s[2892]! } + public var SettingsSearch_Synonyms_Privacy_Data_DeleteDrafts: String { return self._s[2894]! } + public var Passport_ScanPassportHelp: String { return self._s[2895]! } + public var ChatListFolder_NameChannels: String { return self._s[2896]! } + public var Appearance_ThemePreview_Chat_5_Text: String { return self._s[2897]! } public func Channel_OwnershipTransfer_TransferCompleted(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2897]!, self._r[2897]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2898]!, self._r[2898]!, [_1, _2]) } - public var Checkout_ErrorInvoiceAlreadyPaid: String { return self._s[2898]! } - public var Conversation_GifTooltip: String { return self._s[2899]! } - public var Passport_Identity_TypeDriversLicenseUploadScan: String { return self._s[2901]! } - public var AutoDownloadSettings_OffForAll: String { return self._s[2902]! } - public var Privacy_GroupsAndChannels_InviteToChannelMultipleError: String { return self._s[2903]! } - public var AutoDownloadSettings_PreloadVideo: String { return self._s[2904]! } - public var CreatePoll_Quiz: String { return self._s[2905]! } - public var TwoFactorSetup_Email_Placeholder: String { return self._s[2906]! } - public var Watch_Message_Invoice: String { return self._s[2907]! } - public var Settings_AddAnotherAccount_Help: String { return self._s[2908]! } - public var Watch_Message_Unsupported: String { return self._s[2909]! } + public var Checkout_ErrorInvoiceAlreadyPaid: String { return self._s[2899]! } + public var Conversation_GifTooltip: String { return self._s[2900]! } + public var Passport_Identity_TypeDriversLicenseUploadScan: String { return self._s[2902]! } + public var AutoDownloadSettings_OffForAll: String { return self._s[2903]! } + public var Privacy_GroupsAndChannels_InviteToChannelMultipleError: String { return self._s[2904]! } + public var AutoDownloadSettings_PreloadVideo: String { return self._s[2905]! } + public var CreatePoll_Quiz: String { return self._s[2906]! } + public var TwoFactorSetup_Email_Placeholder: String { return self._s[2907]! } + public var Watch_Message_Invoice: String { return self._s[2908]! } + public var Settings_AddAnotherAccount_Help: String { return self._s[2909]! } + public var Watch_Message_Unsupported: String { return self._s[2910]! } public func Call_CameraOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2911]!, self._r[2911]!, [_0]) + return formatWithArgumentRanges(self._s[2912]!, self._r[2912]!, [_0]) } - public var AuthSessions_TerminateOtherSessions: String { return self._s[2912]! } - public var CreatePoll_AllOptionsAdded: String { return self._s[2914]! } - public var TwoStepAuth_RecoveryEmailTitle: String { return self._s[2915]! } - public var Call_IncomingVoiceCall: String { return self._s[2916]! } + public var AuthSessions_TerminateOtherSessions: String { return self._s[2913]! } + public var CreatePoll_AllOptionsAdded: String { return self._s[2915]! } + public var TwoStepAuth_RecoveryEmailTitle: String { return self._s[2916]! } + public var Call_IncomingVoiceCall: String { return self._s[2917]! } public func Channel_AdminLog_MessageTransferedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2917]!, self._r[2917]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2918]!, self._r[2918]!, [_1, _2]) } - public var PrivacySettings_DeleteAccountHelp: String { return self._s[2918]! } - public var Passport_Address_TypePassportRegistrationUploadScan: String { return self._s[2919]! } - public var Group_EditAdmin_RankOwnerPlaceholder: String { return self._s[2920]! } - public var Group_ErrorAccessDenied: String { return self._s[2921]! } - public var PasscodeSettings_HelpTop: String { return self._s[2922]! } - public var Watch_ChatList_NoConversationsTitle: String { return self._s[2923]! } - public var AddContact_SharedContactException: String { return self._s[2924]! } - public var AccessDenied_MicrophoneRestricted: String { return self._s[2925]! } - public var Privacy_TopPeers: String { return self._s[2926]! } - public var Web_OpenExternal: String { return self._s[2927]! } - public var Group_ErrorSendRestrictedStickers: String { return self._s[2928]! } - public var Channel_Management_LabelAdministrator: String { return self._s[2929]! } + public var PrivacySettings_DeleteAccountHelp: String { return self._s[2919]! } + public var Passport_Address_TypePassportRegistrationUploadScan: String { return self._s[2920]! } + public var Group_EditAdmin_RankOwnerPlaceholder: String { return self._s[2921]! } + public var Group_ErrorAccessDenied: String { return self._s[2922]! } + public var PasscodeSettings_HelpTop: String { return self._s[2923]! } + public var Watch_ChatList_NoConversationsTitle: String { return self._s[2924]! } + public var AddContact_SharedContactException: String { return self._s[2925]! } + public var AccessDenied_MicrophoneRestricted: String { return self._s[2926]! } + public var Privacy_TopPeers: String { return self._s[2927]! } + public var Web_OpenExternal: String { return self._s[2928]! } + public var Group_ErrorSendRestrictedStickers: String { return self._s[2929]! } + public var Channel_Management_LabelAdministrator: String { return self._s[2930]! } public func ChangePhoneNumberCode_CallTimer(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2930]!, self._r[2930]!, [_0]) + return formatWithArgumentRanges(self._s[2931]!, self._r[2931]!, [_0]) } - public var Permissions_Skip: String { return self._s[2931]! } - public var Notifications_GroupNotificationsExceptions: String { return self._s[2932]! } - public var PeopleNearby_Title: String { return self._s[2933]! } - public var GroupInfo_SharedMediaNone: String { return self._s[2934]! } + public var Permissions_Skip: String { return self._s[2932]! } + public var Notifications_GroupNotificationsExceptions: String { return self._s[2933]! } + public var PeopleNearby_Title: String { return self._s[2934]! } + public var GroupInfo_SharedMediaNone: String { return self._s[2935]! } public func PUSH_MESSAGE_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2936]!, self._r[2936]!, [_1]) + return formatWithArgumentRanges(self._s[2937]!, self._r[2937]!, [_1]) } - public var Profile_MessageLifetime1w: String { return self._s[2937]! } + public var Profile_MessageLifetime1w: String { return self._s[2938]! } public func Time_PreciseDate_m6(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2938]!, self._r[2938]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2939]!, self._r[2939]!, [_1, _2, _3]) } - public var WebBrowser_DefaultBrowser: String { return self._s[2939]! } - public var EditTheme_Edit_BottomInfo: String { return self._s[2941]! } - public var Privacy_Forwards_Preview: String { return self._s[2942]! } - public var Settings_EditAccount: String { return self._s[2943]! } + public var WebBrowser_DefaultBrowser: String { return self._s[2940]! } + public var EditTheme_Edit_BottomInfo: String { return self._s[2942]! } + public var Privacy_Forwards_Preview: String { return self._s[2943]! } + public var Settings_EditAccount: String { return self._s[2944]! } public func Conversation_RestrictedInlineTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2944]!, self._r[2944]!, [_0]) + return formatWithArgumentRanges(self._s[2945]!, self._r[2945]!, [_0]) } - public var TwoFactorSetup_Intro_Title: String { return self._s[2945]! } + public var TwoFactorSetup_Intro_Title: String { return self._s[2946]! } public func Channel_AdminLog_MessagePromotedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2947]!, self._r[2947]!, [_1]) + return formatWithArgumentRanges(self._s[2948]!, self._r[2948]!, [_1]) } - public var PeerInfo_ButtonVideoCall: String { return self._s[2948]! } + public var PeerInfo_ButtonVideoCall: String { return self._s[2949]! } public func DialogList_SingleUploadingPhotoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2949]!, self._r[2949]!, [_0]) + return formatWithArgumentRanges(self._s[2950]!, self._r[2950]!, [_0]) } - public var Login_InfoHelp: String { return self._s[2950]! } - public var Notification_SecretChatMessageScreenshotSelf: String { return self._s[2951]! } - public var Profile_MessageLifetime1d: String { return self._s[2952]! } - public var Group_UpgradeConfirmation: String { return self._s[2953]! } + public var Login_InfoHelp: String { return self._s[2951]! } + public var Notification_SecretChatMessageScreenshotSelf: String { return self._s[2952]! } + public var Profile_MessageLifetime1d: String { return self._s[2953]! } + public var Group_UpgradeConfirmation: String { return self._s[2954]! } public func PUSH_PINNED_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2954]!, self._r[2954]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2955]!, self._r[2955]!, [_1, _2]) } - public var Appearance_RemoveThemeColor: String { return self._s[2955]! } - public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[2956]! } - public var Wallet_Configuration_BlockchainIdInfo: String { return self._s[2957]! } + public var Appearance_RemoveThemeColor: String { return self._s[2956]! } + public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[2957]! } + public var Wallet_Configuration_BlockchainIdInfo: String { return self._s[2958]! } public func Call_AnsweringWithAccount(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2958]!, self._r[2958]!, [_0]) + return formatWithArgumentRanges(self._s[2959]!, self._r[2959]!, [_0]) } - public var UserInfo_BotSettings: String { return self._s[2959]! } + public var UserInfo_BotSettings: String { return self._s[2960]! } public func Notification_ChannelInviter(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2961]!, self._r[2961]!, [_0]) + return formatWithArgumentRanges(self._s[2962]!, self._r[2962]!, [_0]) } - public var Permissions_ContactsText_v0: String { return self._s[2962]! } - public var Conversation_DiscussionStarted: String { return self._s[2964]! } - public var SettingsSearch_Synonyms_Privacy_TwoStepAuth: String { return self._s[2965]! } - public var SharedMedia_SearchNoResults: String { return self._s[2967]! } + public var Permissions_ContactsText_v0: String { return self._s[2963]! } + public var Conversation_DiscussionStarted: String { return self._s[2965]! } + public var SettingsSearch_Synonyms_Privacy_TwoStepAuth: String { return self._s[2966]! } + public var SharedMedia_SearchNoResults: String { return self._s[2968]! } public func Login_EmailPhoneSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2969]!, self._r[2969]!, [_0]) + return formatWithArgumentRanges(self._s[2970]!, self._r[2970]!, [_0]) } public func Conversation_ShareMyPhoneNumber_StatusSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2971]!, self._r[2971]!, [_0]) + return formatWithArgumentRanges(self._s[2972]!, self._r[2972]!, [_0]) } - public var ReportPeer_ReasonOther_Placeholder: String { return self._s[2972]! } - public var ContactInfo_PhoneLabelHomeFax: String { return self._s[2973]! } - public var Call_AudioRouteHeadphones: String { return self._s[2974]! } + public var ReportPeer_ReasonOther_Placeholder: String { return self._s[2973]! } + public var ContactInfo_PhoneLabelHomeFax: String { return self._s[2974]! } + public var Call_AudioRouteHeadphones: String { return self._s[2975]! } public func PUSH_AUTH_UNKNOWN(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2975]!, self._r[2975]!, [_1]) + return formatWithArgumentRanges(self._s[2976]!, self._r[2976]!, [_1]) } - public var Passport_Identity_FilesView: String { return self._s[2976]! } - public var TwoStepAuth_SetupEmail: String { return self._s[2977]! } - public var Widget_ApplicationStartRequired: String { return self._s[2978]! } - public var PhotoEditor_Original: String { return self._s[2979]! } - public var Call_YourMicrophoneOff: String { return self._s[2980]! } - public var Permissions_ContactsAllow_v0: String { return self._s[2981]! } - public var Notification_Exceptions_PreviewAlwaysOn: String { return self._s[2982]! } - public var PrivacyPolicy_Decline: String { return self._s[2983]! } - public var SettingsSearch_Synonyms_ChatFolders: String { return self._s[2984]! } - public var TwoStepAuth_PasswordRemoveConfirmation: String { return self._s[2985]! } - public var ChatListFolder_IncludeSectionInfo: String { return self._s[2986]! } + public var Passport_Identity_FilesView: String { return self._s[2977]! } + public var TwoStepAuth_SetupEmail: String { return self._s[2978]! } + public var Widget_ApplicationStartRequired: String { return self._s[2979]! } + public var PhotoEditor_Original: String { return self._s[2980]! } + public var Call_YourMicrophoneOff: String { return self._s[2981]! } + public var Permissions_ContactsAllow_v0: String { return self._s[2982]! } + public var Notification_Exceptions_PreviewAlwaysOn: String { return self._s[2983]! } + public var PrivacyPolicy_Decline: String { return self._s[2984]! } + public var SettingsSearch_Synonyms_ChatFolders: String { return self._s[2985]! } + public var TwoStepAuth_PasswordRemoveConfirmation: String { return self._s[2986]! } + public var ChatListFolder_IncludeSectionInfo: String { return self._s[2987]! } public func Map_DirectionsDriveEta(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2987]!, self._r[2987]!, [_0]) + return formatWithArgumentRanges(self._s[2988]!, self._r[2988]!, [_0]) } - public var Passport_Identity_Name: String { return self._s[2988]! } - public var WallpaperPreview_PatternTitle: String { return self._s[2990]! } - public var VoiceOver_Chat_RecordModeVideoMessage: String { return self._s[2991]! } - public var WallpaperSearch_ColorOrange: String { return self._s[2993]! } - public var Appearance_ThemePreview_ChatList_5_Name: String { return self._s[2994]! } - public var GroupInfo_Permissions_SlowmodeInfo: String { return self._s[2995]! } - public var Your_cards_security_code_is_invalid: String { return self._s[2996]! } - public var IntentsSettings_ResetAll: String { return self._s[2997]! } - public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[2999]! } - public var Group_EditAdmin_TransferOwnership: String { return self._s[3000]! } - public var Notification_Exceptions_Add: String { return self._s[3001]! } - public var Cache_Help: String { return self._s[3002]! } - public var Call_AudioRouteMute: String { return self._s[3003]! } - public var VoiceOver_Chat_YourVoiceMessage: String { return self._s[3004]! } - public var SocksProxySetup_ProxyEnabled: String { return self._s[3005]! } + public var Passport_Identity_Name: String { return self._s[2989]! } + public var WallpaperPreview_PatternTitle: String { return self._s[2991]! } + public var VoiceOver_Chat_RecordModeVideoMessage: String { return self._s[2992]! } + public var WallpaperSearch_ColorOrange: String { return self._s[2994]! } + public var Appearance_ThemePreview_ChatList_5_Name: String { return self._s[2995]! } + public var GroupInfo_Permissions_SlowmodeInfo: String { return self._s[2996]! } + public var Your_cards_security_code_is_invalid: String { return self._s[2997]! } + public var IntentsSettings_ResetAll: String { return self._s[2998]! } + public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[3000]! } + public var Group_EditAdmin_TransferOwnership: String { return self._s[3001]! } + public var Notification_Exceptions_Add: String { return self._s[3002]! } + public var Cache_Help: String { return self._s[3003]! } + public var Call_AudioRouteMute: String { return self._s[3004]! } + public var VoiceOver_Chat_YourVoiceMessage: String { return self._s[3005]! } + public var SocksProxySetup_ProxyEnabled: String { return self._s[3006]! } public func ApplyLanguage_UnsufficientDataText(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3006]!, self._r[3006]!, [_1]) + return formatWithArgumentRanges(self._s[3007]!, self._r[3007]!, [_1]) } public func Call_CallInProgressMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3007]!, self._r[3007]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3008]!, self._r[3008]!, [_1, _2]) } - public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3008]! } - public var Channel_BanUser_PermissionAddMembers: String { return self._s[3009]! } - public var Contacts_MemberSearchSectionTitleGroup: String { return self._s[3010]! } + public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3009]! } + public var Channel_BanUser_PermissionAddMembers: String { return self._s[3010]! } + public var Contacts_MemberSearchSectionTitleGroup: String { return self._s[3011]! } public func Wallet_Time_PreciseDate_m10(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3011]!, self._r[3011]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3012]!, self._r[3012]!, [_1, _2, _3]) } - public var TwoStepAuth_RecoveryCodeHelp: String { return self._s[3012]! } - public var ClearCache_StorageFree: String { return self._s[3013]! } + public var TwoStepAuth_RecoveryCodeHelp: String { return self._s[3013]! } + public var ClearCache_StorageFree: String { return self._s[3014]! } public func DialogList_SingleRecordingVideoMessageSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3014]!, self._r[3014]!, [_0]) + return formatWithArgumentRanges(self._s[3015]!, self._r[3015]!, [_0]) } - public var Privacy_Forwards_CustomHelp: String { return self._s[3015]! } - public var Group_ErrorAddTooMuchAdmins: String { return self._s[3017]! } - public var DialogList_Typing: String { return self._s[3018]! } + public var Privacy_Forwards_CustomHelp: String { return self._s[3016]! } + public var Group_ErrorAddTooMuchAdmins: String { return self._s[3018]! } + public var DialogList_Typing: String { return self._s[3019]! } public func Login_EmailCodeSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3019]!, self._r[3019]!, [_0]) + return formatWithArgumentRanges(self._s[3020]!, self._r[3020]!, [_0]) } - public var Target_SelectGroup: String { return self._s[3020]! } - public var AuthSessions_IncompleteAttempts: String { return self._s[3021]! } - public var TwoStepAuth_EmailChangeSuccess: String { return self._s[3022]! } + public var Target_SelectGroup: String { return self._s[3021]! } + public var AuthSessions_IncompleteAttempts: String { return self._s[3022]! } + public var TwoStepAuth_EmailChangeSuccess: String { return self._s[3023]! } public func Settings_CheckPhoneNumberTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3023]!, self._r[3023]!, [_0]) + return formatWithArgumentRanges(self._s[3024]!, self._r[3024]!, [_0]) } - public var Channel_AdminLog_CanSendMessages: String { return self._s[3024]! } - public var TwoFactorSetup_EmailVerification_Title: String { return self._s[3025]! } - public var ChatSettings_TextSize: String { return self._s[3026]! } - public var Channel_AdminLogFilter_EventsEditedMessages: String { return self._s[3028]! } - public var Map_SendThisPlace: String { return self._s[3029]! } - public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[3030]! } - public var ContactInfo_BirthdayLabel: String { return self._s[3031]! } - public var Call_ShareStats: String { return self._s[3032]! } - public var ChatList_UndoArchiveRevealedText: String { return self._s[3034]! } - public var Notifications_GroupNotificationsPreview: String { return self._s[3035]! } - public var Settings_Support: String { return self._s[3036]! } - public var GroupInfo_ChannelListNamePlaceholder: String { return self._s[3037]! } + public var Channel_AdminLog_CanSendMessages: String { return self._s[3025]! } + public var TwoFactorSetup_EmailVerification_Title: String { return self._s[3026]! } + public var ChatSettings_TextSize: String { return self._s[3027]! } + public var Channel_AdminLogFilter_EventsEditedMessages: String { return self._s[3029]! } + public var Map_SendThisPlace: String { return self._s[3030]! } + public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[3031]! } + public var ContactInfo_BirthdayLabel: String { return self._s[3032]! } + public var Call_ShareStats: String { return self._s[3033]! } + public var ChatList_UndoArchiveRevealedText: String { return self._s[3035]! } + public var Notifications_GroupNotificationsPreview: String { return self._s[3036]! } + public var Settings_Support: String { return self._s[3037]! } + public var GroupInfo_ChannelListNamePlaceholder: String { return self._s[3038]! } public func EmptyGroupInfo_Line1(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3039]!, self._r[3039]!, [_0]) + return formatWithArgumentRanges(self._s[3040]!, self._r[3040]!, [_0]) } - public var Watch_Conversation_GroupInfo: String { return self._s[3040]! } - public var Tour_Text4: String { return self._s[3041]! } - public var PasscodeSettings_AutoLock: String { return self._s[3043]! } - public var Channel_BanList_BlockedTitle: String { return self._s[3044]! } - public var Bot_DescriptionTitle: String { return self._s[3045]! } - public var Map_LocationTitle: String { return self._s[3046]! } - public var ChatListFolder_ExcludeSectionInfo: String { return self._s[3047]! } + public var Watch_Conversation_GroupInfo: String { return self._s[3041]! } + public var Tour_Text4: String { return self._s[3042]! } + public var PasscodeSettings_AutoLock: String { return self._s[3044]! } + public var Channel_BanList_BlockedTitle: String { return self._s[3045]! } + public var Bot_DescriptionTitle: String { return self._s[3046]! } + public var Map_LocationTitle: String { return self._s[3047]! } + public var ChatListFolder_ExcludeSectionInfo: String { return self._s[3048]! } public func Notification_MessageLifetimeChangedOutgoing(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3048]!, self._r[3048]!, [_1]) + return formatWithArgumentRanges(self._s[3049]!, self._r[3049]!, [_1]) } - public var Login_EmailNotConfiguredError: String { return self._s[3049]! } - public var AutoDownloadSettings_LimitBySize: String { return self._s[3050]! } - public var PrivacySettings_LastSeenNobody: String { return self._s[3051]! } - public var Permissions_CellularDataText_v0: String { return self._s[3052]! } - public var Conversation_EncryptionProcessing: String { return self._s[3053]! } - public var GroupPermission_Delete: String { return self._s[3054]! } - public var Contacts_SortByName: String { return self._s[3055]! } - public var TwoStepAuth_RecoveryUnavailable: String { return self._s[3056]! } - public var Compose_ChannelTokenListPlaceholder: String { return self._s[3057]! } - public var Group_Management_AddModeratorHelp: String { return self._s[3059]! } - public var SettingsSearch_Synonyms_EditProfile_Logout: String { return self._s[3060]! } - public var Forward_ErrorPublicPollDisabledInChannels: String { return self._s[3061]! } + public var Login_EmailNotConfiguredError: String { return self._s[3050]! } + public var AutoDownloadSettings_LimitBySize: String { return self._s[3051]! } + public var PrivacySettings_LastSeenNobody: String { return self._s[3052]! } + public var Permissions_CellularDataText_v0: String { return self._s[3053]! } + public var Conversation_EncryptionProcessing: String { return self._s[3054]! } + public var GroupPermission_Delete: String { return self._s[3055]! } + public var Contacts_SortByName: String { return self._s[3056]! } + public var TwoStepAuth_RecoveryUnavailable: String { return self._s[3057]! } + public var Compose_ChannelTokenListPlaceholder: String { return self._s[3058]! } + public var Group_Management_AddModeratorHelp: String { return self._s[3060]! } + public var SettingsSearch_Synonyms_EditProfile_Logout: String { return self._s[3061]! } + public var Forward_ErrorPublicPollDisabledInChannels: String { return self._s[3062]! } public func Wallet_Time_PreciseDate_m7(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3063]!, self._r[3063]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3064]!, self._r[3064]!, [_1, _2, _3]) } - public var CallFeedback_IncludeLogsInfo: String { return self._s[3064]! } + public var CallFeedback_IncludeLogsInfo: String { return self._s[3065]! } public func PUSH_CHANNEL_MESSAGE_QUIZ(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3065]!, self._r[3065]!, [_1]) + return formatWithArgumentRanges(self._s[3066]!, self._r[3066]!, [_1]) } public func SecretVideo_NotViewedYet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3066]!, self._r[3066]!, [_0]) + return formatWithArgumentRanges(self._s[3067]!, self._r[3067]!, [_0]) } - public var ChatList_Context_Delete: String { return self._s[3067]! } - public var PrivacyPhoneNumberSettings_CustomDisabledHelp: String { return self._s[3068]! } - public var Conversation_Processing: String { return self._s[3069]! } - public var TwoStepAuth_EmailCodeExpired: String { return self._s[3070]! } - public var ChatSettings_Stickers: String { return self._s[3071]! } - public var AppleWatch_ReplyPresetsHelp: String { return self._s[3072]! } - public var Passport_Language_cs: String { return self._s[3073]! } - public var GroupInfo_InvitationLinkGroupFull: String { return self._s[3075]! } - public var Conversation_Contact: String { return self._s[3076]! } - public var Passport_Identity_ReverseSideHelp: String { return self._s[3077]! } - public var SocksProxySetup_PasteFromClipboard: String { return self._s[3078]! } - public var Wallet_VoiceOver_Editing_ClearText: String { return self._s[3079]! } - public var Theme_Unsupported: String { return self._s[3080]! } - public var Wallet_SecureStorageNotAvailable_Text: String { return self._s[3081]! } - public var Privacy_TopPeersWarning: String { return self._s[3082]! } + public var ChatList_Context_Delete: String { return self._s[3068]! } + public var PrivacyPhoneNumberSettings_CustomDisabledHelp: String { return self._s[3069]! } + public var Conversation_Processing: String { return self._s[3070]! } + public var TwoStepAuth_EmailCodeExpired: String { return self._s[3071]! } + public var ChatSettings_Stickers: String { return self._s[3072]! } + public var AppleWatch_ReplyPresetsHelp: String { return self._s[3073]! } + public var Passport_Language_cs: String { return self._s[3074]! } + public var GroupInfo_InvitationLinkGroupFull: String { return self._s[3076]! } + public var Conversation_Contact: String { return self._s[3077]! } + public var Passport_Identity_ReverseSideHelp: String { return self._s[3078]! } + public var SocksProxySetup_PasteFromClipboard: String { return self._s[3079]! } + public var Wallet_VoiceOver_Editing_ClearText: String { return self._s[3080]! } + public var Theme_Unsupported: String { return self._s[3081]! } + public var Wallet_SecureStorageNotAvailable_Text: String { return self._s[3082]! } + public var Privacy_TopPeersWarning: String { return self._s[3083]! } public func UserInfo_BlockConfirmationTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3083]!, self._r[3083]!, [_0]) + return formatWithArgumentRanges(self._s[3084]!, self._r[3084]!, [_0]) } - public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3084]! } - public var TwoStepAuth_RemovePassword: String { return self._s[3085]! } - public var Settings_CheckPhoneNumberText: String { return self._s[3086]! } - public var PeopleNearby_Users: String { return self._s[3087]! } - public var Appearance_TextSize_UseSystem: String { return self._s[3088]! } - public var Settings_SetProfilePhoto: String { return self._s[3089]! } - public var Conversation_ContextMenuBan: String { return self._s[3090]! } - public var KeyCommand_ScrollUp: String { return self._s[3091]! } - public var Settings_ChatSettings: String { return self._s[3093]! } + public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3085]! } + public var TwoStepAuth_RemovePassword: String { return self._s[3086]! } + public var Settings_CheckPhoneNumberText: String { return self._s[3087]! } + public var PeopleNearby_Users: String { return self._s[3088]! } + public var Appearance_TextSize_UseSystem: String { return self._s[3089]! } + public var Settings_SetProfilePhoto: String { return self._s[3090]! } + public var Conversation_ContextMenuBan: String { return self._s[3091]! } + public var KeyCommand_ScrollUp: String { return self._s[3092]! } + public var Settings_ChatSettings: String { return self._s[3094]! } public func PUSH_CHAT_MESSAGE_VIDEO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3094]!, self._r[3094]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3095]!, self._r[3095]!, [_1, _2]) } - public var Stats_GroupTopInvitersTitle: String { return self._s[3095]! } - public var Passport_Phone_EnterOtherNumber: String { return self._s[3096]! } - public var Passport_Identity_MiddleNamePlaceholder: String { return self._s[3098]! } - public var Passport_Address_OneOfTypeBankStatement: String { return self._s[3099]! } - public var Stats_GroupTopPoster_Promote: String { return self._s[3100]! } - public var Cache_Title: String { return self._s[3101]! } - public var Clipboard_SendPhoto: String { return self._s[3102]! } - public var Notifications_ExceptionsMessagePlaceholder: String { return self._s[3104]! } - public var TwoStepAuth_EnterPasswordForgot: String { return self._s[3105]! } - public var WatchRemote_AlertTitle: String { return self._s[3106]! } - public var Appearance_ReduceMotion: String { return self._s[3107]! } + public var Stats_GroupTopInvitersTitle: String { return self._s[3096]! } + public var Passport_Phone_EnterOtherNumber: String { return self._s[3097]! } + public var Passport_Identity_MiddleNamePlaceholder: String { return self._s[3099]! } + public var Passport_Address_OneOfTypeBankStatement: String { return self._s[3100]! } + public var Stats_GroupTopPoster_Promote: String { return self._s[3101]! } + public var Cache_Title: String { return self._s[3102]! } + public var Clipboard_SendPhoto: String { return self._s[3103]! } + public var Notifications_ExceptionsMessagePlaceholder: String { return self._s[3105]! } + public var TwoStepAuth_EnterPasswordForgot: String { return self._s[3106]! } + public var WatchRemote_AlertTitle: String { return self._s[3107]! } + public var Appearance_ReduceMotion: String { return self._s[3108]! } public func PUSH_CHAT_MESSAGE_ROUND(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3110]!, self._r[3110]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3111]!, self._r[3111]!, [_1, _2]) } - public var Notifications_PermissionsSuppressWarningText: String { return self._s[3111]! } - public var ChatList_UndoArchiveHiddenTitle: String { return self._s[3112]! } - public var Passport_Identity_TypePersonalDetails: String { return self._s[3113]! } - public var Wallet_TransactionInfo_CopyAddress: String { return self._s[3115]! } + public var Notifications_PermissionsSuppressWarningText: String { return self._s[3112]! } + public var ChatList_UndoArchiveHiddenTitle: String { return self._s[3113]! } + public var Passport_Identity_TypePersonalDetails: String { return self._s[3114]! } + public var Wallet_TransactionInfo_CopyAddress: String { return self._s[3116]! } public func Passport_Identity_UploadOneOfScan(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3116]!, self._r[3116]!, [_0]) + return formatWithArgumentRanges(self._s[3117]!, self._r[3117]!, [_0]) } - public var ChatListFolder_DiscardConfirmation: String { return self._s[3117]! } + public var ChatListFolder_DiscardConfirmation: String { return self._s[3118]! } public func Conversation_RestrictedStickersTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3118]!, self._r[3118]!, [_0]) + return formatWithArgumentRanges(self._s[3119]!, self._r[3119]!, [_0]) } - public var ChatState_WaitingForNetwork: String { return self._s[3119]! } - public var GroupInfo_Sound: String { return self._s[3120]! } - public var NotificationsSound_Telegraph: String { return self._s[3121]! } - public var NotificationsSound_Hello: String { return self._s[3122]! } - public var Passport_FieldIdentityDetailsHelp: String { return self._s[3123]! } - public var Wallet_Settings_BackupWallet: String { return self._s[3124]! } - public var Group_Members_AddMemberBotErrorNotAllowed: String { return self._s[3125]! } - public var Conversation_HoldForVideo: String { return self._s[3126]! } - public var Wallet_Configuration_ApplyErrorTextURLInvalidData: String { return self._s[3127]! } - public var Wallet_RestoreFailed_EnterWords: String { return self._s[3128]! } - public var Appearance_ShareTheme: String { return self._s[3129]! } - public var TwoStepAuth_SetupHint: String { return self._s[3130]! } - public var Wallet_Created_Text: String { return self._s[3133]! } - public var Stats_GrowthTitle: String { return self._s[3134]! } - public var GroupInfo_InviteLink_ShareLink: String { return self._s[3135]! } - public var Conversation_DefaultRestrictedMedia: String { return self._s[3136]! } - public var Channel_EditAdmin_PermissionPostMessages: String { return self._s[3137]! } - public var GroupPermission_NoSendMessages: String { return self._s[3139]! } - public var Conversation_SetReminder_Title: String { return self._s[3140]! } - public var Privacy_Calls_CustomHelp: String { return self._s[3141]! } - public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[3142]! } + public var ChatState_WaitingForNetwork: String { return self._s[3120]! } + public var GroupInfo_Sound: String { return self._s[3121]! } + public var NotificationsSound_Telegraph: String { return self._s[3122]! } + public var NotificationsSound_Hello: String { return self._s[3123]! } + public var Passport_FieldIdentityDetailsHelp: String { return self._s[3124]! } + public var Wallet_Settings_BackupWallet: String { return self._s[3125]! } + public var Group_Members_AddMemberBotErrorNotAllowed: String { return self._s[3126]! } + public var Conversation_HoldForVideo: String { return self._s[3127]! } + public var Wallet_Configuration_ApplyErrorTextURLInvalidData: String { return self._s[3128]! } + public var Wallet_RestoreFailed_EnterWords: String { return self._s[3129]! } + public var Appearance_ShareTheme: String { return self._s[3130]! } + public var TwoStepAuth_SetupHint: String { return self._s[3131]! } + public var Wallet_Created_Text: String { return self._s[3134]! } + public var Stats_GrowthTitle: String { return self._s[3135]! } + public var GroupInfo_InviteLink_ShareLink: String { return self._s[3136]! } + public var Conversation_DefaultRestrictedMedia: String { return self._s[3137]! } + public var Channel_EditAdmin_PermissionPostMessages: String { return self._s[3138]! } + public var GroupPermission_NoSendMessages: String { return self._s[3140]! } + public var Conversation_SetReminder_Title: String { return self._s[3141]! } + public var Privacy_Calls_CustomHelp: String { return self._s[3142]! } + public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[3143]! } public func ClearCache_StorageTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3143]!, self._r[3143]!, [_0]) + return formatWithArgumentRanges(self._s[3144]!, self._r[3144]!, [_0]) } - public var Undo_SecretChatDeleted: String { return self._s[3145]! } - public var PhotoEditor_ContrastTool: String { return self._s[3146]! } - public var Privacy_Forwards: String { return self._s[3147]! } - public var AuthSessions_LoggedInWithTelegram: String { return self._s[3148]! } - public var KeyCommand_SendMessage: String { return self._s[3150]! } + public var Undo_SecretChatDeleted: String { return self._s[3146]! } + public var PhotoEditor_ContrastTool: String { return self._s[3147]! } + public var Privacy_Forwards: String { return self._s[3148]! } + public var AuthSessions_LoggedInWithTelegram: String { return self._s[3149]! } + public var KeyCommand_SendMessage: String { return self._s[3151]! } public func InstantPage_RelatedArticleAuthorAndDateTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3151]!, self._r[3151]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3152]!, self._r[3152]!, [_1, _2]) } - public var GroupPermission_NoSendGifs: String { return self._s[3152]! } - public var Wallet_Month_ShortJune: String { return self._s[3153]! } - public var Notification_MessageLifetime2s: String { return self._s[3154]! } - public var Message_Theme: String { return self._s[3155]! } - public var Conversation_Dice_u1F3AF: String { return self._s[3158]! } + public var GroupPermission_NoSendGifs: String { return self._s[3153]! } + public var Wallet_Month_ShortJune: String { return self._s[3154]! } + public var Notification_MessageLifetime2s: String { return self._s[3155]! } + public var Message_Theme: String { return self._s[3156]! } + public var Conversation_Dice_u1F3AF: String { return self._s[3159]! } public func DialogList_SinglePlayingGameSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3159]!, self._r[3159]!, [_0]) + return formatWithArgumentRanges(self._s[3160]!, self._r[3160]!, [_0]) } - public var Group_UpgradeNoticeHeader: String { return self._s[3161]! } - public var PeerInfo_BioExpand: String { return self._s[3162]! } - public var Passport_DeletePersonalDetails: String { return self._s[3163]! } - public var Widget_NoUsers: String { return self._s[3164]! } - public var TwoStepAuth_AddHintTitle: String { return self._s[3165]! } - public var Login_TermsOfServiceDecline: String { return self._s[3166]! } - public var CreatePoll_QuizTip: String { return self._s[3168]! } - public var Watch_LastSeen_WithinAWeek: String { return self._s[3169]! } - public var MessagePoll_SubmitVote: String { return self._s[3171]! } - public var ChatSettings_AutoDownloadEnabled: String { return self._s[3172]! } - public var Passport_Address_EditRentalAgreement: String { return self._s[3173]! } - public var Conversation_SearchByName_Placeholder: String { return self._s[3174]! } - public var Conversation_UpdateTelegram: String { return self._s[3175]! } + public var Group_UpgradeNoticeHeader: String { return self._s[3162]! } + public var PeerInfo_BioExpand: String { return self._s[3163]! } + public var Passport_DeletePersonalDetails: String { return self._s[3164]! } + public var Widget_NoUsers: String { return self._s[3165]! } + public var TwoStepAuth_AddHintTitle: String { return self._s[3166]! } + public var Login_TermsOfServiceDecline: String { return self._s[3167]! } + public var CreatePoll_QuizTip: String { return self._s[3169]! } + public var Watch_LastSeen_WithinAWeek: String { return self._s[3170]! } + public var MessagePoll_SubmitVote: String { return self._s[3172]! } + public var ChatSettings_AutoDownloadEnabled: String { return self._s[3173]! } + public var Passport_Address_EditRentalAgreement: String { return self._s[3174]! } + public var Conversation_SearchByName_Placeholder: String { return self._s[3175]! } + public var Conversation_UpdateTelegram: String { return self._s[3176]! } public func FileSize_KB(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3176]!, self._r[3176]!, [_0]) + return formatWithArgumentRanges(self._s[3177]!, self._r[3177]!, [_0]) } - public var UserInfo_About_Placeholder: String { return self._s[3177]! } - public var CallSettings_Always: String { return self._s[3178]! } - public var ChannelInfo_ScamChannelWarning: String { return self._s[3179]! } - public var Login_TermsOfServiceHeader: String { return self._s[3180]! } - public var KeyCommand_ChatInfo: String { return self._s[3181]! } - public var MessagePoll_LabelPoll: String { return self._s[3182]! } - public var Paint_Clear: String { return self._s[3183]! } - public var PeerInfo_ButtonMute: String { return self._s[3184]! } - public var LastSeen_WithinAWeek: String { return self._s[3185]! } - public var Passport_Identity_FrontSide: String { return self._s[3186]! } - public var Stickers_GroupStickers: String { return self._s[3187]! } - public var ChangePhoneNumberNumber_NumberPlaceholder: String { return self._s[3188]! } + public var UserInfo_About_Placeholder: String { return self._s[3178]! } + public var CallSettings_Always: String { return self._s[3179]! } + public var ChannelInfo_ScamChannelWarning: String { return self._s[3180]! } + public var Login_TermsOfServiceHeader: String { return self._s[3181]! } + public var KeyCommand_ChatInfo: String { return self._s[3182]! } + public var MessagePoll_LabelPoll: String { return self._s[3183]! } + public var Paint_Clear: String { return self._s[3184]! } + public var PeerInfo_ButtonMute: String { return self._s[3185]! } + public var LastSeen_WithinAWeek: String { return self._s[3186]! } + public var Passport_Identity_FrontSide: String { return self._s[3187]! } + public var Stickers_GroupStickers: String { return self._s[3188]! } + public var ChangePhoneNumberNumber_NumberPlaceholder: String { return self._s[3189]! } public func Map_SearchNoResultsDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3189]!, self._r[3189]!, [_0]) + return formatWithArgumentRanges(self._s[3190]!, self._r[3190]!, [_0]) } public func PUSH_MESSAGE_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3192]!, self._r[3192]!, [_1]) + return formatWithArgumentRanges(self._s[3193]!, self._r[3193]!, [_1]) } - public var SocksProxySetup_ProxyStatusConnected: String { return self._s[3193]! } - public var Chat_MultipleTextMessagesDisabled: String { return self._s[3194]! } + public var SocksProxySetup_ProxyStatusConnected: String { return self._s[3194]! } + public var Chat_MultipleTextMessagesDisabled: String { return self._s[3195]! } public func Notification_LeftChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3195]!, self._r[3195]!, [_0]) + return formatWithArgumentRanges(self._s[3196]!, self._r[3196]!, [_0]) } - public var Wallet_Send_AmountText: String { return self._s[3196]! } - public var WebSearch_SearchNoResults: String { return self._s[3198]! } - public var Channel_DiscussionGroup_Create: String { return self._s[3199]! } - public var Passport_Language_es: String { return self._s[3200]! } - public var EnterPasscode_EnterCurrentPasscode: String { return self._s[3201]! } - public var Wallet_Intro_Title: String { return self._s[3202]! } - public var Map_LiveLocationShowAll: String { return self._s[3203]! } - public var Cache_MaximumCacheSizeHelp: String { return self._s[3205]! } - public var Map_OpenInGoogleMaps: String { return self._s[3206]! } - public var CheckoutInfo_ErrorNameInvalid: String { return self._s[3208]! } - public var EditTheme_Create_BottomInfo: String { return self._s[3209]! } - public var PhotoEditor_BlurToolLinear: String { return self._s[3210]! } + public var Wallet_Send_AmountText: String { return self._s[3197]! } + public var WebSearch_SearchNoResults: String { return self._s[3199]! } + public var Channel_DiscussionGroup_Create: String { return self._s[3200]! } + public var Passport_Language_es: String { return self._s[3201]! } + public var EnterPasscode_EnterCurrentPasscode: String { return self._s[3202]! } + public var Wallet_Intro_Title: String { return self._s[3203]! } + public var Map_LiveLocationShowAll: String { return self._s[3204]! } + public var Cache_MaximumCacheSizeHelp: String { return self._s[3206]! } + public var Map_OpenInGoogleMaps: String { return self._s[3207]! } + public var CheckoutInfo_ErrorNameInvalid: String { return self._s[3209]! } + public var EditTheme_Create_BottomInfo: String { return self._s[3210]! } + public var PhotoEditor_BlurToolLinear: String { return self._s[3211]! } public func Channel_AdminLog_MessageEdited(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3211]!, self._r[3211]!, [_0]) + return formatWithArgumentRanges(self._s[3212]!, self._r[3212]!, [_0]) } - public var Passport_Phone_Delete: String { return self._s[3212]! } - public var Channel_Username_CreatePrivateLinkHelp: String { return self._s[3213]! } - public var PrivacySettings_PrivacyTitle: String { return self._s[3214]! } - public var CheckoutInfo_ReceiverInfoNamePlaceholder: String { return self._s[3215]! } + public var Passport_Phone_Delete: String { return self._s[3213]! } + public var Channel_Username_CreatePrivateLinkHelp: String { return self._s[3214]! } + public var PrivacySettings_PrivacyTitle: String { return self._s[3215]! } + public var CheckoutInfo_ReceiverInfoNamePlaceholder: String { return self._s[3216]! } public func EncryptionKey_Description(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3216]!, self._r[3216]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3217]!, self._r[3217]!, [_1, _2]) } - public var LogoutOptions_LogOutInfo: String { return self._s[3217]! } - public var Wallet_Month_GenAugust: String { return self._s[3218]! } - public var Cache_ByPeerHeader: String { return self._s[3219]! } - public var Username_InvalidCharacters: String { return self._s[3220]! } - public var Wallet_Qr_Title: String { return self._s[3222]! } - public var Checkout_ShippingAddress: String { return self._s[3223]! } + public var LogoutOptions_LogOutInfo: String { return self._s[3218]! } + public var Wallet_Month_GenAugust: String { return self._s[3219]! } + public var Cache_ByPeerHeader: String { return self._s[3220]! } + public var Username_InvalidCharacters: String { return self._s[3221]! } + public var Wallet_Qr_Title: String { return self._s[3223]! } + public var Checkout_ShippingAddress: String { return self._s[3224]! } public func PUSH_CHAT_MESSAGE_GAME_SCORE(_ _1: String, _ _2: String, _ _3: String, _ _4: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3224]!, self._r[3224]!, [_1, _2, _3, _4]) + return formatWithArgumentRanges(self._s[3225]!, self._r[3225]!, [_1, _2, _3, _4]) } - public var Conversation_AddContact: String { return self._s[3226]! } - public var Passport_Address_EditUtilityBill: String { return self._s[3227]! } - public var Message_Video: String { return self._s[3228]! } + public var Conversation_AddContact: String { return self._s[3227]! } + public var Passport_Address_EditUtilityBill: String { return self._s[3228]! } + public var Message_Video: String { return self._s[3229]! } public func Watch_Time_ShortYesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3229]!, self._r[3229]!, [_0]) + return formatWithArgumentRanges(self._s[3230]!, self._r[3230]!, [_0]) } public func Conversation_Megabytes(_ _0: Float) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3230]!, self._r[3230]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[3231]!, self._r[3231]!, ["\(_0)"]) } - public var Passport_Language_km: String { return self._s[3231]! } + public var Passport_Language_km: String { return self._s[3232]! } public func PUSH_MESSAGE_CHANNEL_MESSAGE_GAME_SCORE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3232]!, self._r[3232]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3233]!, self._r[3233]!, [_1, _2, _3]) } - public var EmptyGroupInfo_Line4: String { return self._s[3233]! } - public var Conversation_SendMessageErrorTooMuchScheduled: String { return self._s[3235]! } - public var Notification_CallCanceledShort: String { return self._s[3236]! } - public var PhotoEditor_FadeTool: String { return self._s[3237]! } - public var Group_PublicLink_Info: String { return self._s[3238]! } - public var Contacts_DeselectAll: String { return self._s[3239]! } - public var Conversation_Moderate_Delete: String { return self._s[3240]! } - public var TwoStepAuth_RecoveryCodeInvalid: String { return self._s[3241]! } - public var NotificationsSound_Note: String { return self._s[3244]! } + public var EmptyGroupInfo_Line4: String { return self._s[3234]! } + public var Conversation_SendMessageErrorTooMuchScheduled: String { return self._s[3236]! } + public var Notification_CallCanceledShort: String { return self._s[3237]! } + public var PhotoEditor_FadeTool: String { return self._s[3238]! } + public var Group_PublicLink_Info: String { return self._s[3239]! } + public var Contacts_DeselectAll: String { return self._s[3240]! } + public var Conversation_Moderate_Delete: String { return self._s[3241]! } + public var TwoStepAuth_RecoveryCodeInvalid: String { return self._s[3242]! } + public var NotificationsSound_Note: String { return self._s[3245]! } public func Message_PaymentSent(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3245]!, self._r[3245]!, [_0]) + return formatWithArgumentRanges(self._s[3246]!, self._r[3246]!, [_0]) } - public var Appearance_ThemePreview_ChatList_7_Text: String { return self._s[3246]! } - public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[3247]! } - public var DialogList_SearchSectionGlobal: String { return self._s[3248]! } - public var AccessDenied_Settings: String { return self._s[3249]! } - public var Passport_Identity_TypeIdentityCardUploadScan: String { return self._s[3250]! } - public var AuthSessions_EmptyTitle: String { return self._s[3251]! } - public var TwoStepAuth_PasswordChangeSuccess: String { return self._s[3252]! } - public var GroupInfo_GroupType: String { return self._s[3253]! } - public var Calls_Missed: String { return self._s[3254]! } - public var UserInfo_GenericPhoneLabel: String { return self._s[3255]! } - public var Passport_Language_uz: String { return self._s[3256]! } - public var Conversation_StopQuizConfirmationTitle: String { return self._s[3257]! } - public var PhotoEditor_BlurToolPortrait: String { return self._s[3258]! } - public var Map_ChooseLocationTitle: String { return self._s[3259]! } - public var Checkout_EnterPassword: String { return self._s[3260]! } - public var GroupInfo_ConvertToSupergroup: String { return self._s[3261]! } - public var AutoNightTheme_UpdateLocation: String { return self._s[3262]! } - public var NetworkUsageSettings_Title: String { return self._s[3263]! } - public var SettingsSearch_Synonyms_ChatSettings_IntentsSettings: String { return self._s[3264]! } - public var Message_PinnedLiveLocationMessage: String { return self._s[3265]! } - public var Compose_NewChannel: String { return self._s[3266]! } - public var Privacy_PaymentsClearInfo: String { return self._s[3268]! } + public var Appearance_ThemePreview_ChatList_7_Text: String { return self._s[3247]! } + public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[3248]! } + public var DialogList_SearchSectionGlobal: String { return self._s[3249]! } + public var AccessDenied_Settings: String { return self._s[3250]! } + public var Passport_Identity_TypeIdentityCardUploadScan: String { return self._s[3251]! } + public var AuthSessions_EmptyTitle: String { return self._s[3252]! } + public var TwoStepAuth_PasswordChangeSuccess: String { return self._s[3253]! } + public var GroupInfo_GroupType: String { return self._s[3254]! } + public var Calls_Missed: String { return self._s[3255]! } + public var UserInfo_GenericPhoneLabel: String { return self._s[3256]! } + public var Passport_Language_uz: String { return self._s[3257]! } + public var Conversation_StopQuizConfirmationTitle: String { return self._s[3258]! } + public var PhotoEditor_BlurToolPortrait: String { return self._s[3259]! } + public var Map_ChooseLocationTitle: String { return self._s[3260]! } + public var Checkout_EnterPassword: String { return self._s[3261]! } + public var GroupInfo_ConvertToSupergroup: String { return self._s[3262]! } + public var AutoNightTheme_UpdateLocation: String { return self._s[3263]! } + public var NetworkUsageSettings_Title: String { return self._s[3264]! } + public var SettingsSearch_Synonyms_ChatSettings_IntentsSettings: String { return self._s[3265]! } + public var Message_PinnedLiveLocationMessage: String { return self._s[3266]! } + public var Compose_NewChannel: String { return self._s[3267]! } + public var Privacy_PaymentsClearInfo: String { return self._s[3269]! } public func PUSH_MESSAGE_POLL(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3269]!, self._r[3269]!, [_1]) + return formatWithArgumentRanges(self._s[3270]!, self._r[3270]!, [_1]) } - public var Notification_Exceptions_AlwaysOn: String { return self._s[3270]! } - public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[3271]! } - public var AutoNightTheme_AutomaticSection: String { return self._s[3274]! } - public var WallpaperSearch_ColorBrown: String { return self._s[3275]! } - public var Appearance_AppIconDefault: String { return self._s[3276]! } - public var Wallet_Month_GenJune: String { return self._s[3279]! } - public var StickerSettings_ContextInfo: String { return self._s[3280]! } - public var Channel_AddBotErrorNoRights: String { return self._s[3281]! } - public var Passport_FieldPhone: String { return self._s[3283]! } - public var Contacts_PermissionsTitle: String { return self._s[3284]! } - public var TwoFactorSetup_Email_SkipConfirmationSkip: String { return self._s[3285]! } + public var Notification_Exceptions_AlwaysOn: String { return self._s[3271]! } + public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[3272]! } + public var AutoNightTheme_AutomaticSection: String { return self._s[3275]! } + public var WallpaperSearch_ColorBrown: String { return self._s[3276]! } + public var Appearance_AppIconDefault: String { return self._s[3277]! } + public var Wallet_Month_GenJune: String { return self._s[3280]! } + public var StickerSettings_ContextInfo: String { return self._s[3281]! } + public var Channel_AddBotErrorNoRights: String { return self._s[3282]! } + public var Passport_FieldPhone: String { return self._s[3284]! } + public var Contacts_PermissionsTitle: String { return self._s[3285]! } + public var TwoFactorSetup_Email_SkipConfirmationSkip: String { return self._s[3286]! } public func Notification_JoinedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3286]!, self._r[3286]!, [_0]) + return formatWithArgumentRanges(self._s[3287]!, self._r[3287]!, [_0]) } - public var Bot_Unblock: String { return self._s[3287]! } - public var PasscodeSettings_SimplePasscode: String { return self._s[3288]! } - public var Passport_PasswordHelp: String { return self._s[3289]! } - public var Watch_Conversation_UserInfo: String { return self._s[3290]! } + public var Bot_Unblock: String { return self._s[3288]! } + public var PasscodeSettings_SimplePasscode: String { return self._s[3289]! } + public var Passport_PasswordHelp: String { return self._s[3290]! } + public var Watch_Conversation_UserInfo: String { return self._s[3291]! } public func Channel_AdminLog_MessageChangedGroupGeoLocation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3294]!, self._r[3294]!, [_0]) + return formatWithArgumentRanges(self._s[3295]!, self._r[3295]!, [_0]) } - public var State_Connecting: String { return self._s[3296]! } - public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3297]! } - public var TextFormat_AddLinkPlaceholder: String { return self._s[3298]! } - public var Conversation_Dice_u1F3B2: String { return self._s[3299]! } + public var State_Connecting: String { return self._s[3297]! } + public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3298]! } + public var TextFormat_AddLinkPlaceholder: String { return self._s[3299]! } + public var Conversation_Dice_u1F3B2: String { return self._s[3300]! } public func Call_StatusBar(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3300]!, self._r[3300]!, [_0]) + return formatWithArgumentRanges(self._s[3301]!, self._r[3301]!, [_0]) } - public var Conversation_SendingOptionsTooltip: String { return self._s[3301]! } - public var ChatList_UndoArchiveTitle: String { return self._s[3302]! } - public var ChatList_EmptyChatListNewMessage: String { return self._s[3303]! } - public var WallpaperSearch_ColorGreen: String { return self._s[3305]! } - public var PhotoEditor_BlurToolOff: String { return self._s[3306]! } - public var SocksProxySetup_PortPlaceholder: String { return self._s[3307]! } - public var Weekday_Saturday: String { return self._s[3308]! } - public var DialogList_Unread: String { return self._s[3309]! } - public var Watch_LastSeen_ALongTimeAgo: String { return self._s[3310]! } - public var Stats_GroupPosters: String { return self._s[3311]! } + public var Conversation_SendingOptionsTooltip: String { return self._s[3302]! } + public var ChatList_UndoArchiveTitle: String { return self._s[3303]! } + public var ChatList_EmptyChatListNewMessage: String { return self._s[3304]! } + public var WallpaperSearch_ColorGreen: String { return self._s[3306]! } + public var PhotoEditor_BlurToolOff: String { return self._s[3307]! } + public var SocksProxySetup_PortPlaceholder: String { return self._s[3308]! } + public var Weekday_Saturday: String { return self._s[3309]! } + public var DialogList_Unread: String { return self._s[3310]! } + public var Watch_LastSeen_ALongTimeAgo: String { return self._s[3311]! } + public var Stats_GroupPosters: String { return self._s[3312]! } public func PUSH_ENCRYPTION_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3312]!, self._r[3312]!, [_1]) + return formatWithArgumentRanges(self._s[3313]!, self._r[3313]!, [_1]) } public func Target_ShareGameConfirmationGroup(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3315]!, self._r[3315]!, [_0]) + return formatWithArgumentRanges(self._s[3316]!, self._r[3316]!, [_0]) } - public var ReportPeer_ReasonChildAbuse: String { return self._s[3316]! } + public var ReportPeer_ReasonChildAbuse: String { return self._s[3317]! } public func Channel_AdminLog_MessageUnkickedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3317]!, self._r[3317]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3318]!, self._r[3318]!, [_1, _2]) } - public var InfoPlist_NSContactsUsageDescription: String { return self._s[3318]! } - public var AutoNightTheme_UseSunsetSunrise: String { return self._s[3320]! } - public var Channel_OwnershipTransfer_ChangeOwner: String { return self._s[3321]! } - public var Passport_Language_dv: String { return self._s[3322]! } - public var GroupPermission_AddSuccess: String { return self._s[3325]! } - public var Passport_Email_Help: String { return self._s[3326]! } - public var Call_ReportPlaceholder: String { return self._s[3327]! } - public var CreatePoll_AddOption: String { return self._s[3328]! } - public var MessagePoll_LabelAnonymousQuiz: String { return self._s[3329]! } - public var PeerInfo_ButtonLeave: String { return self._s[3330]! } - public var PhotoEditor_TiltShift: String { return self._s[3333]! } - public var SecretGif_Title: String { return self._s[3335]! } - public var PhotoEditor_QualityVeryLow: String { return self._s[3336]! } - public var SocksProxySetup_Connecting: String { return self._s[3337]! } - public var PrivacySettings_PasscodeAndFaceId: String { return self._s[3338]! } - public var ContactInfo_PhoneLabelWork: String { return self._s[3339]! } - public var Stats_GroupTopHoursTitle: String { return self._s[3340]! } - public var Compose_NewMessage: String { return self._s[3341]! } - public var NotificationsSound_Synth: String { return self._s[3342]! } - public var Conversation_FileOpenIn: String { return self._s[3343]! } - public var AutoDownloadSettings_WifiTitle: String { return self._s[3344]! } - public var UserInfo_SendMessage: String { return self._s[3345]! } - public var Checkout_PayWithFaceId: String { return self._s[3346]! } + public var InfoPlist_NSContactsUsageDescription: String { return self._s[3319]! } + public var AutoNightTheme_UseSunsetSunrise: String { return self._s[3321]! } + public var Channel_OwnershipTransfer_ChangeOwner: String { return self._s[3322]! } + public var Passport_Language_dv: String { return self._s[3323]! } + public var GroupPermission_AddSuccess: String { return self._s[3326]! } + public var Passport_Email_Help: String { return self._s[3327]! } + public var Call_ReportPlaceholder: String { return self._s[3328]! } + public var CreatePoll_AddOption: String { return self._s[3329]! } + public var MessagePoll_LabelAnonymousQuiz: String { return self._s[3330]! } + public var PeerInfo_ButtonLeave: String { return self._s[3331]! } + public var PhotoEditor_TiltShift: String { return self._s[3334]! } + public var SecretGif_Title: String { return self._s[3336]! } + public var PhotoEditor_QualityVeryLow: String { return self._s[3337]! } + public var SocksProxySetup_Connecting: String { return self._s[3338]! } + public var PrivacySettings_PasscodeAndFaceId: String { return self._s[3339]! } + public var ContactInfo_PhoneLabelWork: String { return self._s[3340]! } + public var Stats_GroupTopHoursTitle: String { return self._s[3341]! } + public var Compose_NewMessage: String { return self._s[3342]! } + public var NotificationsSound_Synth: String { return self._s[3343]! } + public var Conversation_FileOpenIn: String { return self._s[3344]! } + public var AutoDownloadSettings_WifiTitle: String { return self._s[3345]! } + public var UserInfo_SendMessage: String { return self._s[3346]! } + public var Checkout_PayWithFaceId: String { return self._s[3347]! } public func Map_LiveLocationShortHour(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3347]!, self._r[3347]!, [_0]) + return formatWithArgumentRanges(self._s[3348]!, self._r[3348]!, [_0]) } - public var TextFormat_Strikethrough: String { return self._s[3348]! } - public var SettingsSearch_Synonyms_Notifications_DisplayNamesOnLockScreen: String { return self._s[3349]! } - public var Conversation_ViewChannel: String { return self._s[3350]! } + public var TextFormat_Strikethrough: String { return self._s[3349]! } + public var SettingsSearch_Synonyms_Notifications_DisplayNamesOnLockScreen: String { return self._s[3350]! } + public var Conversation_ViewChannel: String { return self._s[3351]! } public func Message_ForwardedMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3351]!, self._r[3351]!, [_0]) + return formatWithArgumentRanges(self._s[3352]!, self._r[3352]!, [_0]) } - public var Channel_Stickers_Placeholder: String { return self._s[3352]! } - public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[3353]! } - public var Camera_FlashAuto: String { return self._s[3354]! } - public var Conversation_EncryptedDescription1: String { return self._s[3355]! } - public var LocalGroup_Text: String { return self._s[3356]! } - public var SettingsSearch_Synonyms_Data_Storage_KeepMedia: String { return self._s[3357]! } - public var UserInfo_FirstNamePlaceholder: String { return self._s[3358]! } - public var Conversation_SendMessageErrorFlood: String { return self._s[3359]! } - public var Conversation_EncryptedDescription2: String { return self._s[3360]! } - public var Notification_GroupActivated: String { return self._s[3361]! } - public var LastSeen_Lately: String { return self._s[3362]! } - public var Conversation_EncryptedDescription3: String { return self._s[3363]! } - public var SettingsSearch_Synonyms_Privacy_ProfilePhoto: String { return self._s[3364]! } - public var Conversation_SwipeToReplyHintText: String { return self._s[3365]! } - public var Conversation_EncryptedDescription4: String { return self._s[3366]! } - public var SharedMedia_EmptyTitle: String { return self._s[3367]! } - public var Wallet_Configuration_Apply: String { return self._s[3368]! } - public var Appearance_CreateTheme: String { return self._s[3369]! } - public var Stats_SharesPerPost: String { return self._s[3370]! } - public var Contacts_TabTitle: String { return self._s[3371]! } - public var Weekday_ShortThursday: String { return self._s[3372]! } - public var MessageTimer_Forever: String { return self._s[3373]! } - public var ChatListFolder_CategoryArchived: String { return self._s[3374]! } - public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[3375]! } - public var EditTheme_Create_TopInfo: String { return self._s[3377]! } - public var Month_GenDecember: String { return self._s[3378]! } - public var EnterPasscode_EnterPasscode: String { return self._s[3379]! } - public var SettingsSearch_Synonyms_Appearance_LargeEmoji: String { return self._s[3380]! } - public var PeopleNearby_CreateGroup: String { return self._s[3382]! } - public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[3383]! } - public var Paint_ClearConfirm: String { return self._s[3384]! } - public var ChatList_ReadAll: String { return self._s[3385]! } - public var ChatSettings_IntentsSettings: String { return self._s[3386]! } - public var Passport_PassportInformation: String { return self._s[3388]! } - public var Login_CheckOtherSessionMessages: String { return self._s[3390]! } - public var PhotoEditor_ExposureTool: String { return self._s[3393]! } - public var Group_Username_CreatePrivateLinkHelp: String { return self._s[3394]! } - public var SettingsSearch_Synonyms_Watch: String { return self._s[3395]! } - public var Stats_GroupTopPoster_History: String { return self._s[3396]! } - public var UserInfo_AddPhone: String { return self._s[3397]! } - public var Media_SendWithTimer: String { return self._s[3399]! } - public var SettingsSearch_Synonyms_Notifications_Title: String { return self._s[3400]! } - public var Channel_EditAdmin_PermissionEnabledByDefault: String { return self._s[3401]! } - public var PasscodeSettings_AutoLock_Disabled: String { return self._s[3402]! } - public var ChatList_Context_Unarchive: String { return self._s[3404]! } + public var Channel_Stickers_Placeholder: String { return self._s[3353]! } + public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[3354]! } + public var Camera_FlashAuto: String { return self._s[3355]! } + public var Conversation_EncryptedDescription1: String { return self._s[3356]! } + public var LocalGroup_Text: String { return self._s[3357]! } + public var SettingsSearch_Synonyms_Data_Storage_KeepMedia: String { return self._s[3358]! } + public var UserInfo_FirstNamePlaceholder: String { return self._s[3359]! } + public var Conversation_SendMessageErrorFlood: String { return self._s[3360]! } + public var Conversation_EncryptedDescription2: String { return self._s[3361]! } + public var Notification_GroupActivated: String { return self._s[3362]! } + public var LastSeen_Lately: String { return self._s[3363]! } + public var Conversation_EncryptedDescription3: String { return self._s[3364]! } + public var SettingsSearch_Synonyms_Privacy_ProfilePhoto: String { return self._s[3365]! } + public var Conversation_SwipeToReplyHintText: String { return self._s[3366]! } + public var Conversation_EncryptedDescription4: String { return self._s[3367]! } + public var SharedMedia_EmptyTitle: String { return self._s[3368]! } + public var Wallet_Configuration_Apply: String { return self._s[3369]! } + public var Appearance_CreateTheme: String { return self._s[3370]! } + public var Stats_SharesPerPost: String { return self._s[3371]! } + public var Contacts_TabTitle: String { return self._s[3372]! } + public var Weekday_ShortThursday: String { return self._s[3373]! } + public var MessageTimer_Forever: String { return self._s[3374]! } + public var ChatListFolder_CategoryArchived: String { return self._s[3375]! } + public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[3376]! } + public var EditTheme_Create_TopInfo: String { return self._s[3378]! } + public var Month_GenDecember: String { return self._s[3379]! } + public var EnterPasscode_EnterPasscode: String { return self._s[3380]! } + public var SettingsSearch_Synonyms_Appearance_LargeEmoji: String { return self._s[3381]! } + public var PeopleNearby_CreateGroup: String { return self._s[3383]! } + public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[3384]! } + public var Paint_ClearConfirm: String { return self._s[3385]! } + public var ChatList_ReadAll: String { return self._s[3386]! } + public var ChatSettings_IntentsSettings: String { return self._s[3387]! } + public var Passport_PassportInformation: String { return self._s[3389]! } + public var Login_CheckOtherSessionMessages: String { return self._s[3391]! } + public var PhotoEditor_ExposureTool: String { return self._s[3394]! } + public var Group_Username_CreatePrivateLinkHelp: String { return self._s[3395]! } + public var SettingsSearch_Synonyms_Watch: String { return self._s[3396]! } + public var Stats_GroupTopPoster_History: String { return self._s[3397]! } + public var UserInfo_AddPhone: String { return self._s[3398]! } + public var Media_SendWithTimer: String { return self._s[3400]! } + public var SettingsSearch_Synonyms_Notifications_Title: String { return self._s[3401]! } + public var Channel_EditAdmin_PermissionEnabledByDefault: String { return self._s[3402]! } + public var PasscodeSettings_AutoLock_Disabled: String { return self._s[3403]! } + public var ChatList_Context_Unarchive: String { return self._s[3405]! } public func DialogList_LiveLocationSharingTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3405]!, self._r[3405]!, [_0]) + return formatWithArgumentRanges(self._s[3406]!, self._r[3406]!, [_0]) } - public var BlockedUsers_Title: String { return self._s[3407]! } - public var TwoStepAuth_EmailPlaceholder: String { return self._s[3408]! } - public var Media_ShareThisPhoto: String { return self._s[3409]! } - public var Notifications_DisplayNamesOnLockScreen: String { return self._s[3410]! } - public var Conversation_FilePhotoOrVideo: String { return self._s[3411]! } - public var Appearance_ThemePreview_Chat_2_ReplyName: String { return self._s[3415]! } - public var CallFeedback_ReasonNoise: String { return self._s[3417]! } - public var WebBrowser_Title: String { return self._s[3418]! } + public var BlockedUsers_Title: String { return self._s[3408]! } + public var TwoStepAuth_EmailPlaceholder: String { return self._s[3409]! } + public var Media_ShareThisPhoto: String { return self._s[3410]! } + public var Notifications_DisplayNamesOnLockScreen: String { return self._s[3411]! } + public var Conversation_FilePhotoOrVideo: String { return self._s[3412]! } + public var Appearance_ThemePreview_Chat_2_ReplyName: String { return self._s[3416]! } + public var CallFeedback_ReasonNoise: String { return self._s[3418]! } + public var WebBrowser_Title: String { return self._s[3419]! } public func Checkout_SavePasswordTimeoutAndTouchId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3419]!, self._r[3419]!, [_0]) + return formatWithArgumentRanges(self._s[3420]!, self._r[3420]!, [_0]) } - public var Notification_MessageLifetime5s: String { return self._s[3420]! } - public var Passport_Address_AddResidentialAddress: String { return self._s[3421]! } - public var Profile_MessageLifetime1m: String { return self._s[3422]! } - public var Stats_LoadingTitle: String { return self._s[3424]! } - public var Passport_ScanPassport: String { return self._s[3425]! } - public var Passport_Address_AddTemporaryRegistration: String { return self._s[3427]! } - public var Permissions_NotificationsAllow_v0: String { return self._s[3428]! } - public var Login_InvalidFirstNameError: String { return self._s[3429]! } - public var Undo_ChatCleared: String { return self._s[3431]! } + public var Notification_MessageLifetime5s: String { return self._s[3421]! } + public var Passport_Address_AddResidentialAddress: String { return self._s[3422]! } + public var Profile_MessageLifetime1m: String { return self._s[3423]! } + public var Stats_LoadingTitle: String { return self._s[3425]! } + public var Passport_ScanPassport: String { return self._s[3426]! } + public var Passport_Address_AddTemporaryRegistration: String { return self._s[3428]! } + public var Permissions_NotificationsAllow_v0: String { return self._s[3429]! } + public var Login_InvalidFirstNameError: String { return self._s[3430]! } + public var Undo_ChatCleared: String { return self._s[3432]! } public func ApplyLanguage_ChangeLanguageUnofficialText(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3433]!, self._r[3433]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3434]!, self._r[3434]!, [_1, _2]) } public func Login_PhoneBannedEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3434]!, self._r[3434]!, [_1, _2, _3, _4, _5]) + return formatWithArgumentRanges(self._s[3435]!, self._r[3435]!, [_1, _2, _3, _4, _5]) } public func PUSH_MESSAGE_FWD(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3435]!, self._r[3435]!, [_1]) + return formatWithArgumentRanges(self._s[3436]!, self._r[3436]!, [_1]) } - public var Share_MultipleMessagesDisabled: String { return self._s[3436]! } - public var TwoStepAuth_EmailInvalid: String { return self._s[3437]! } - public var EnterPasscode_ChangeTitle: String { return self._s[3439]! } + public var Share_MultipleMessagesDisabled: String { return self._s[3437]! } + public var TwoStepAuth_EmailInvalid: String { return self._s[3438]! } + public var EnterPasscode_ChangeTitle: String { return self._s[3440]! } public func Wallet_Send_ConfirmationText(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3440]!, self._r[3440]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3441]!, self._r[3441]!, [_1, _2, _3]) } - public var CallSettings_RecentCalls: String { return self._s[3441]! } - public var GroupInfo_DeactivatedStatus: String { return self._s[3442]! } - public var AuthSessions_OtherSessions: String { return self._s[3443]! } - public var PrivacyLastSeenSettings_CustomHelp: String { return self._s[3444]! } - public var Tour_Text5: String { return self._s[3445]! } - public var Login_PadPhoneHelp: String { return self._s[3446]! } - public var Wallpaper_PhotoLibrary: String { return self._s[3448]! } - public var Conversation_ViewGroup: String { return self._s[3449]! } - public var PeopleNearby_MakeVisibleTitle: String { return self._s[3451]! } - public var VoiceOver_Chat_YourContact: String { return self._s[3452]! } - public var Watch_AuthRequired: String { return self._s[3453]! } - public var VoiceOver_Chat_ForwardedFromYou: String { return self._s[3454]! } - public var Conversation_ForwardContacts: String { return self._s[3455]! } - public var Conversation_InputTextPlaceholder: String { return self._s[3456]! } + public var CallSettings_RecentCalls: String { return self._s[3442]! } + public var GroupInfo_DeactivatedStatus: String { return self._s[3443]! } + public var AuthSessions_OtherSessions: String { return self._s[3444]! } + public var PrivacyLastSeenSettings_CustomHelp: String { return self._s[3445]! } + public var Tour_Text5: String { return self._s[3446]! } + public var Login_PadPhoneHelp: String { return self._s[3447]! } + public var Wallpaper_PhotoLibrary: String { return self._s[3449]! } + public var Conversation_ViewGroup: String { return self._s[3450]! } + public var PeopleNearby_MakeVisibleTitle: String { return self._s[3452]! } + public var VoiceOver_Chat_YourContact: String { return self._s[3453]! } + public var Watch_AuthRequired: String { return self._s[3454]! } + public var VoiceOver_Chat_ForwardedFromYou: String { return self._s[3455]! } + public var Conversation_ForwardContacts: String { return self._s[3456]! } + public var Conversation_InputTextPlaceholder: String { return self._s[3457]! } public func PUSH_CHANNEL_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3457]!, self._r[3457]!, [_1]) + return formatWithArgumentRanges(self._s[3458]!, self._r[3458]!, [_1]) } public func Conversation_MessageViaUser(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3458]!, self._r[3458]!, [_0]) + return formatWithArgumentRanges(self._s[3459]!, self._r[3459]!, [_0]) } - public var Channel_Setup_TypePrivate: String { return self._s[3459]! } + public var Channel_Setup_TypePrivate: String { return self._s[3460]! } public func Conversation_NoticeInvitedByInChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3460]!, self._r[3460]!, [_0]) + return formatWithArgumentRanges(self._s[3461]!, self._r[3461]!, [_0]) } - public var InfoPlist_NSSiriUsageDescription: String { return self._s[3461]! } - public var Wallet_ContextMenuCopy: String { return self._s[3462]! } - public var EmptyGroupInfo_Subtitle: String { return self._s[3463]! } - public var AutoDownloadSettings_Delimeter: String { return self._s[3464]! } - public var UserInfo_StartSecretChatStart: String { return self._s[3465]! } + public var InfoPlist_NSSiriUsageDescription: String { return self._s[3462]! } + public var Wallet_ContextMenuCopy: String { return self._s[3463]! } + public var EmptyGroupInfo_Subtitle: String { return self._s[3464]! } + public var AutoDownloadSettings_Delimeter: String { return self._s[3465]! } + public var UserInfo_StartSecretChatStart: String { return self._s[3466]! } public func GroupPermission_AddedInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3466]!, self._r[3466]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3467]!, self._r[3467]!, [_1, _2]) } public func Channel_AdminLog_MessageRestricted(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3467]!, self._r[3467]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[3468]!, self._r[3468]!, [_0, _1, _2]) } - public var PrivacySettings_AutoArchiveTitle: String { return self._s[3468]! } - public var GroupInfo_InviteLink_LinkSection: String { return self._s[3469]! } - public var FastTwoStepSetup_EmailPlaceholder: String { return self._s[3470]! } - public var Wallet_SecureStorageReset_BiometryFaceId: String { return self._s[3471]! } - public var StickerPacksSettings_ArchivedMasks: String { return self._s[3473]! } - public var NewContact_Title: String { return self._s[3476]! } - public var Appearance_ThemeCarouselTintedNight: String { return self._s[3477]! } - public var Notifications_PermissionsKeepDisabled: String { return self._s[3478]! } + public var PrivacySettings_AutoArchiveTitle: String { return self._s[3469]! } + public var GroupInfo_InviteLink_LinkSection: String { return self._s[3470]! } + public var FastTwoStepSetup_EmailPlaceholder: String { return self._s[3471]! } + public var Wallet_SecureStorageReset_BiometryFaceId: String { return self._s[3472]! } + public var StickerPacksSettings_ArchivedMasks: String { return self._s[3474]! } + public var NewContact_Title: String { return self._s[3477]! } + public var Appearance_ThemeCarouselTintedNight: String { return self._s[3478]! } + public var Notifications_PermissionsKeepDisabled: String { return self._s[3479]! } public func Time_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3479]!, self._r[3479]!, [_0]) + return formatWithArgumentRanges(self._s[3480]!, self._r[3480]!, [_0]) } public func AutoNightTheme_LocationHelp(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3480]!, self._r[3480]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3481]!, self._r[3481]!, [_0, _1]) } - public var Chat_SlowmodeTooltipPending: String { return self._s[3481]! } - public var Wallet_WordCheck_TryAgain: String { return self._s[3482]! } - public var CallFeedback_ReasonInterruption: String { return self._s[3484]! } - public var ContactInfo_PhoneLabelHome: String { return self._s[3485]! } - public var Passport_Identity_OneOfTypeDriversLicense: String { return self._s[3486]! } - public var Conversation_MessageEditedLabel: String { return self._s[3488]! } - public var Wallet_Settings_DeleteWalletInfo: String { return self._s[3489]! } - public var SocksProxySetup_PasswordPlaceholder: String { return self._s[3490]! } - public var ChatList_Context_AddToContacts: String { return self._s[3491]! } - public var Passport_Language_is: String { return self._s[3492]! } - public var Notification_PassportValueProofOfIdentity: String { return self._s[3493]! } - public var Wallet_Month_ShortOctober: String { return self._s[3494]! } - public var PhotoEditor_CurvesBlue: String { return self._s[3495]! } + public var Chat_SlowmodeTooltipPending: String { return self._s[3482]! } + public var Wallet_WordCheck_TryAgain: String { return self._s[3483]! } + public var CallFeedback_ReasonInterruption: String { return self._s[3485]! } + public var ContactInfo_PhoneLabelHome: String { return self._s[3486]! } + public var Passport_Identity_OneOfTypeDriversLicense: String { return self._s[3487]! } + public var Conversation_MessageEditedLabel: String { return self._s[3489]! } + public var Wallet_Settings_DeleteWalletInfo: String { return self._s[3490]! } + public var SocksProxySetup_PasswordPlaceholder: String { return self._s[3491]! } + public var ChatList_Context_AddToContacts: String { return self._s[3492]! } + public var Passport_Language_is: String { return self._s[3493]! } + public var Notification_PassportValueProofOfIdentity: String { return self._s[3494]! } + public var Wallet_Month_ShortOctober: String { return self._s[3495]! } + public var PhotoEditor_CurvesBlue: String { return self._s[3496]! } public func FileSize_MB(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3496]!, self._r[3496]!, [_0]) + return formatWithArgumentRanges(self._s[3497]!, self._r[3497]!, [_0]) } - public var SocksProxySetup_Username: String { return self._s[3497]! } - public var Login_SmsRequestState3: String { return self._s[3498]! } - public var Message_PinnedVideoMessage: String { return self._s[3499]! } - public var SharedMedia_TitleLink: String { return self._s[3500]! } - public var Passport_FieldIdentity: String { return self._s[3501]! } - public var Wallet_Configuration_SourceInfo: String { return self._s[3502]! } + public var SocksProxySetup_Username: String { return self._s[3498]! } + public var Login_SmsRequestState3: String { return self._s[3499]! } + public var Message_PinnedVideoMessage: String { return self._s[3500]! } + public var SharedMedia_TitleLink: String { return self._s[3501]! } + public var Passport_FieldIdentity: String { return self._s[3502]! } + public var Wallet_Configuration_SourceInfo: String { return self._s[3503]! } public func Conversation_EncryptedPlaceholderTitleOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3506]!, self._r[3506]!, [_0]) + return formatWithArgumentRanges(self._s[3507]!, self._r[3507]!, [_0]) } - public var DialogList_ProxyConnectionIssuesTooltip: String { return self._s[3509]! } - public var ReportSpam_DeleteThisChat: String { return self._s[3510]! } - public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[3511]! } - public var Passport_Identity_DateOfBirth: String { return self._s[3512]! } - public var Call_StatusIncoming: String { return self._s[3513]! } - public var Wallet_TransactionInfo_NoAddress: String { return self._s[3514]! } - public var ChatAdmins_AdminLabel: String { return self._s[3515]! } - public var Wallet_WordCheck_IncorrectHeader: String { return self._s[3516]! } + public var DialogList_ProxyConnectionIssuesTooltip: String { return self._s[3510]! } + public var ReportSpam_DeleteThisChat: String { return self._s[3511]! } + public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[3512]! } + public var Passport_Identity_DateOfBirth: String { return self._s[3513]! } + public var Call_StatusIncoming: String { return self._s[3514]! } + public var Wallet_TransactionInfo_NoAddress: String { return self._s[3515]! } + public var ChatAdmins_AdminLabel: String { return self._s[3516]! } + public var Wallet_WordCheck_IncorrectHeader: String { return self._s[3517]! } public func Time_MonthOfYear_m10(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3518]!, self._r[3518]!, [_0]) + return formatWithArgumentRanges(self._s[3519]!, self._r[3519]!, [_0]) } - public var Message_PinnedAnimationMessage: String { return self._s[3519]! } - public var Conversation_ReportSpamAndLeave: String { return self._s[3520]! } - public var Preview_CopyAddress: String { return self._s[3521]! } - public var MediaPlayer_UnknownTrack: String { return self._s[3522]! } - public var Login_CancelSignUpConfirmation: String { return self._s[3523]! } - public var Map_OpenInYandexMaps: String { return self._s[3525]! } + public var Message_PinnedAnimationMessage: String { return self._s[3520]! } + public var Conversation_ReportSpamAndLeave: String { return self._s[3521]! } + public var Preview_CopyAddress: String { return self._s[3522]! } + public var MediaPlayer_UnknownTrack: String { return self._s[3523]! } + public var Login_CancelSignUpConfirmation: String { return self._s[3524]! } + public var Map_OpenInYandexMaps: String { return self._s[3526]! } public func Time_PreciseDate_m11(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3528]!, self._r[3528]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3529]!, self._r[3529]!, [_1, _2, _3]) } - public var GroupRemoved_Remove: String { return self._s[3529]! } - public var ChatListFolder_TitleCreate: String { return self._s[3530]! } + public var GroupRemoved_Remove: String { return self._s[3530]! } + public var ChatListFolder_TitleCreate: String { return self._s[3531]! } public func InstantPage_AuthorAndDateTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3532]!, self._r[3532]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3533]!, self._r[3533]!, [_1, _2]) } - public var Watch_UserInfo_MuteTitle: String { return self._s[3533]! } - public var Group_UpgradeNoticeText2: String { return self._s[3535]! } - public var Stats_GroupGrowthTitle: String { return self._s[3536]! } - public var CreatePoll_CancelConfirmation: String { return self._s[3539]! } - public var Month_GenOctober: String { return self._s[3540]! } - public var Conversation_TitleCommentsEmpty: String { return self._s[3541]! } - public var Settings_Appearance: String { return self._s[3542]! } + public var Watch_UserInfo_MuteTitle: String { return self._s[3534]! } + public var Group_UpgradeNoticeText2: String { return self._s[3536]! } + public var Stats_GroupGrowthTitle: String { return self._s[3537]! } + public var CreatePoll_CancelConfirmation: String { return self._s[3540]! } + public var Month_GenOctober: String { return self._s[3541]! } + public var Conversation_TitleCommentsEmpty: String { return self._s[3542]! } + public var Settings_Appearance: String { return self._s[3543]! } public func Time_MonthOfYear_m6(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3543]!, self._r[3543]!, [_0]) + return formatWithArgumentRanges(self._s[3544]!, self._r[3544]!, [_0]) } - public var Wallet_Completed_Title: String { return self._s[3544]! } - public var UserInfo_AddToExisting: String { return self._s[3545]! } - public var Call_PhoneCallInProgressMessage: String { return self._s[3546]! } - public var Map_HomeAndWorkInfo: String { return self._s[3547]! } - public var Paint_Arrow: String { return self._s[3548]! } - public var CancelResetAccount_Title: String { return self._s[3549]! } - public var NotificationsSound_Circles: String { return self._s[3550]! } - public var Notifications_GroupNotificationsExceptionsHelp: String { return self._s[3551]! } - public var ChatState_Connecting: String { return self._s[3553]! } - public var Profile_MessageLifetime5s: String { return self._s[3554]! } + public var Wallet_Completed_Title: String { return self._s[3545]! } + public var UserInfo_AddToExisting: String { return self._s[3546]! } + public var Call_PhoneCallInProgressMessage: String { return self._s[3547]! } + public var Map_HomeAndWorkInfo: String { return self._s[3548]! } + public var Paint_Arrow: String { return self._s[3549]! } + public var CancelResetAccount_Title: String { return self._s[3550]! } + public var NotificationsSound_Circles: String { return self._s[3551]! } + public var Notifications_GroupNotificationsExceptionsHelp: String { return self._s[3552]! } + public var ChatState_Connecting: String { return self._s[3554]! } + public var Profile_MessageLifetime5s: String { return self._s[3555]! } public func DialogList_AwaitingEncryption(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3555]!, self._r[3555]!, [_0]) + return formatWithArgumentRanges(self._s[3556]!, self._r[3556]!, [_0]) } - public var PrivacyPolicy_AgeVerificationTitle: String { return self._s[3556]! } - public var Channel_Username_CreatePublicLinkHelp: String { return self._s[3557]! } - public var AutoNightTheme_ScheduledTo: String { return self._s[3558]! } - public var Conversation_DefaultRestrictedStickers: String { return self._s[3559]! } - public var TwoStepAuth_ConfirmationTitle: String { return self._s[3560]! } + public var PrivacyPolicy_AgeVerificationTitle: String { return self._s[3557]! } + public var Channel_Username_CreatePublicLinkHelp: String { return self._s[3558]! } + public var AutoNightTheme_ScheduledTo: String { return self._s[3559]! } + public var Conversation_DefaultRestrictedStickers: String { return self._s[3560]! } + public var TwoStepAuth_ConfirmationTitle: String { return self._s[3561]! } public func Chat_UnsendMyMessagesAlertTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3561]!, self._r[3561]!, [_0]) + return formatWithArgumentRanges(self._s[3562]!, self._r[3562]!, [_0]) } - public var Passport_Phone_Help: String { return self._s[3562]! } - public var Privacy_ContactsSync: String { return self._s[3563]! } - public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[3564]! } - public var Channel_AdminLogFilter_EventsLeavingSubscribers: String { return self._s[3565]! } - public var Map_SendMyCurrentLocation: String { return self._s[3566]! } - public var Map_AddressOnMap: String { return self._s[3567]! } + public var Passport_Phone_Help: String { return self._s[3563]! } + public var Privacy_ContactsSync: String { return self._s[3564]! } + public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[3565]! } + public var Channel_AdminLogFilter_EventsLeavingSubscribers: String { return self._s[3566]! } + public var Map_SendMyCurrentLocation: String { return self._s[3567]! } + public var Map_AddressOnMap: String { return self._s[3568]! } public func Wallet_Time_PreciseDate_m2(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3568]!, self._r[3568]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3569]!, self._r[3569]!, [_1, _2, _3]) } - public var DialogList_SearchLabel: String { return self._s[3570]! } - public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[3571]! } - public var ConversationProfile_UnknownAddMemberError: String { return self._s[3572]! } - public var ChatList_Search_ShowMore: String { return self._s[3573]! } - public var DialogList_EncryptionRejected: String { return self._s[3574]! } - public var Wallet_WordImport_Text: String { return self._s[3575]! } - public var DialogList_DeleteBotConfirmation: String { return self._s[3576]! } - public var Privacy_TopPeersDelete: String { return self._s[3577]! } - public var AttachmentMenu_SendAsFile: String { return self._s[3578]! } - public var ChatList_GenericPsaAlert: String { return self._s[3580]! } - public var SecretTimer_ImageDescription: String { return self._s[3582]! } + public var DialogList_SearchLabel: String { return self._s[3571]! } + public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[3572]! } + public var ConversationProfile_UnknownAddMemberError: String { return self._s[3573]! } + public var ChatList_Search_ShowMore: String { return self._s[3574]! } + public var DialogList_EncryptionRejected: String { return self._s[3575]! } + public var Wallet_WordImport_Text: String { return self._s[3576]! } + public var DialogList_DeleteBotConfirmation: String { return self._s[3577]! } + public var Privacy_TopPeersDelete: String { return self._s[3578]! } + public var AttachmentMenu_SendAsFile: String { return self._s[3579]! } + public var ChatList_GenericPsaAlert: String { return self._s[3581]! } + public var SecretTimer_ImageDescription: String { return self._s[3583]! } public func Conversation_SetReminder_RemindOn(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3583]!, self._r[3583]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3584]!, self._r[3584]!, [_0, _1]) } - public var ChatSettings_TextSizeUnits: String { return self._s[3584]! } - public var Notification_RenamedGroup: String { return self._s[3585]! } - public var Wallet_Info_RefreshErrorNetworkText: String { return self._s[3586]! } - public var Tour_Title2: String { return self._s[3587]! } - public var Settings_CopyUsername: String { return self._s[3588]! } - public var Compose_NewEncryptedChat: String { return self._s[3589]! } - public var Conversation_CloudStorageInfo_Title: String { return self._s[3590]! } - public var Month_ShortSeptember: String { return self._s[3591]! } - public var AutoDownloadSettings_OnForAll: String { return self._s[3592]! } - public var ChatList_DeleteForEveryoneConfirmationText: String { return self._s[3593]! } - public var Settings_Wallet: String { return self._s[3594]! } - public var Call_StatusConnecting: String { return self._s[3596]! } - public var Privacy_GroupsAndChannels_NeverAllow_Placeholder: String { return self._s[3597]! } - public var Map_ShareLiveLocationHelp: String { return self._s[3598]! } - public var Cache_Files: String { return self._s[3599]! } - public var Notifications_Reset: String { return self._s[3600]! } + public var ChatSettings_TextSizeUnits: String { return self._s[3585]! } + public var Notification_RenamedGroup: String { return self._s[3586]! } + public var Wallet_Info_RefreshErrorNetworkText: String { return self._s[3587]! } + public var Tour_Title2: String { return self._s[3588]! } + public var Settings_CopyUsername: String { return self._s[3589]! } + public var Compose_NewEncryptedChat: String { return self._s[3590]! } + public var Conversation_CloudStorageInfo_Title: String { return self._s[3591]! } + public var Month_ShortSeptember: String { return self._s[3592]! } + public var AutoDownloadSettings_OnForAll: String { return self._s[3593]! } + public var ChatList_DeleteForEveryoneConfirmationText: String { return self._s[3594]! } + public var Settings_Wallet: String { return self._s[3595]! } + public var Call_StatusConnecting: String { return self._s[3597]! } + public var Privacy_GroupsAndChannels_NeverAllow_Placeholder: String { return self._s[3598]! } + public var Map_ShareLiveLocationHelp: String { return self._s[3599]! } + public var Cache_Files: String { return self._s[3600]! } + public var Notifications_Reset: String { return self._s[3601]! } public func Settings_KeepPhoneNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3601]!, self._r[3601]!, [_0]) + return formatWithArgumentRanges(self._s[3602]!, self._r[3602]!, [_0]) } - public var Privacy_GroupsAndChannels_AlwaysAllow_Title: String { return self._s[3602]! } + public var Privacy_GroupsAndChannels_AlwaysAllow_Title: String { return self._s[3603]! } public func Conversation_OpenBotLinkLogin(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3603]!, self._r[3603]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3604]!, self._r[3604]!, [_1, _2]) } - public var Notification_CallIncomingShort: String { return self._s[3604]! } - public var UserInfo_BotPrivacy: String { return self._s[3606]! } - public var Appearance_BubbleCorners_Apply: String { return self._s[3607]! } - public var WebSearch_RecentClearConfirmation: String { return self._s[3608]! } - public var Conversation_ContextMenuLookUp: String { return self._s[3609]! } - public var Calls_RatingTitle: String { return self._s[3610]! } - public var SecretImage_Title: String { return self._s[3611]! } - public var Weekday_Monday: String { return self._s[3612]! } + public var Notification_CallIncomingShort: String { return self._s[3605]! } + public var UserInfo_BotPrivacy: String { return self._s[3607]! } + public var Appearance_BubbleCorners_Apply: String { return self._s[3608]! } + public var WebSearch_RecentClearConfirmation: String { return self._s[3609]! } + public var Conversation_ContextMenuLookUp: String { return self._s[3610]! } + public var Calls_RatingTitle: String { return self._s[3611]! } + public var SecretImage_Title: String { return self._s[3612]! } + public var Weekday_Monday: String { return self._s[3613]! } public func Passport_PrivacyPolicy(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3614]!, self._r[3614]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3615]!, self._r[3615]!, [_1, _2]) } - public var KeyCommand_JumpToPreviousChat: String { return self._s[3615]! } + public var KeyCommand_JumpToPreviousChat: String { return self._s[3616]! } public func Wallet_Updated_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3616]!, self._r[3616]!, [_0]) + return formatWithArgumentRanges(self._s[3617]!, self._r[3617]!, [_0]) } public func DialogList_SearchSubtitleFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3617]!, self._r[3617]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3618]!, self._r[3618]!, [_1, _2]) } - public var Stats_GroupMembers: String { return self._s[3618]! } - public var Camera_Retake: String { return self._s[3619]! } - public var Conversation_SearchPlaceholder: String { return self._s[3621]! } + public var Stats_GroupMembers: String { return self._s[3619]! } + public var Camera_Retake: String { return self._s[3620]! } + public var Conversation_SearchPlaceholder: String { return self._s[3622]! } public func Passport_Identity_NativeNameGenericHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3622]!, self._r[3622]!, [_0]) + return formatWithArgumentRanges(self._s[3623]!, self._r[3623]!, [_0]) } - public var Channel_DiscussionGroup_Info: String { return self._s[3623]! } - public var SocksProxySetup_Hostname: String { return self._s[3624]! } - public var Wallet_Send_OwnAddressAlertProceed: String { return self._s[3625]! } - public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[3626]! } - public var Privacy_DeleteDrafts: String { return self._s[3627]! } + public var Channel_DiscussionGroup_Info: String { return self._s[3624]! } + public var SocksProxySetup_Hostname: String { return self._s[3625]! } + public var Wallet_Send_OwnAddressAlertProceed: String { return self._s[3626]! } + public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[3627]! } + public var Privacy_DeleteDrafts: String { return self._s[3628]! } public func Checkout_LiabilityAlert(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3628]!, self._r[3628]!, [_1, _1, _1, _2]) + return formatWithArgumentRanges(self._s[3629]!, self._r[3629]!, [_1, _1, _1, _2]) } - public var Wallet_RestoreFailed_Text: String { return self._s[3629]! } - public var Wallet_Settings_DeleteWallet: String { return self._s[3630]! } - public var Login_CancelPhoneVerification: String { return self._s[3631]! } - public var TwoStepAuth_ResetAccountHelp: String { return self._s[3633]! } + public var Wallet_RestoreFailed_Text: String { return self._s[3630]! } + public var Wallet_Settings_DeleteWallet: String { return self._s[3631]! } + public var Login_CancelPhoneVerification: String { return self._s[3632]! } + public var TwoStepAuth_ResetAccountHelp: String { return self._s[3634]! } public func SocksProxySetup_ProxyStatusPing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3634]!, self._r[3634]!, [_0]) + return formatWithArgumentRanges(self._s[3635]!, self._r[3635]!, [_0]) } - public var TwoStepAuth_EmailSent: String { return self._s[3635]! } - public var Cache_Indexing: String { return self._s[3636]! } - public var Notifications_ExceptionsNone: String { return self._s[3637]! } - public var MessagePoll_LabelQuiz: String { return self._s[3638]! } - public var Call_EncryptionKey_Title: String { return self._s[3639]! } - public var Common_Yes: String { return self._s[3640]! } - public var Channel_ErrorAddBlocked: String { return self._s[3641]! } - public var Month_GenJanuary: String { return self._s[3642]! } - public var Checkout_NewCard_Title: String { return self._s[3643]! } - public var Wallet_TransactionInfo_OtherFeeHeader: String { return self._s[3644]! } + public var TwoStepAuth_EmailSent: String { return self._s[3636]! } + public var Cache_Indexing: String { return self._s[3637]! } + public var Notifications_ExceptionsNone: String { return self._s[3638]! } + public var MessagePoll_LabelQuiz: String { return self._s[3639]! } + public var Call_EncryptionKey_Title: String { return self._s[3640]! } + public var Common_Yes: String { return self._s[3641]! } + public var Channel_ErrorAddBlocked: String { return self._s[3642]! } + public var Month_GenJanuary: String { return self._s[3643]! } + public var Checkout_NewCard_Title: String { return self._s[3644]! } + public var Wallet_TransactionInfo_OtherFeeHeader: String { return self._s[3645]! } public func TwoStepAuth_EnterPasswordHint(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3645]!, self._r[3645]!, [_0]) + return formatWithArgumentRanges(self._s[3646]!, self._r[3646]!, [_0]) } - public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[3647]! } - public var Conversation_SendDice: String { return self._s[3648]! } - public var Conversation_InputTextPlaceholderReply: String { return self._s[3649]! } + public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[3648]! } + public var Conversation_SendDice: String { return self._s[3649]! } + public var Conversation_InputTextPlaceholderReply: String { return self._s[3650]! } public func ChatSettings_AutoDownloadSettings_TypeVideo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3650]!, self._r[3650]!, [_0]) - } - public func VoiceOver_Chat_VideoFrom(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3651]!, self._r[3651]!, [_0]) } - public var Weekday_Wednesday: String { return self._s[3652]! } - public var ReportPeer_ReasonOther_Send: String { return self._s[3653]! } - public var PasscodeSettings_EncryptDataHelp: String { return self._s[3654]! } - public var PrivacyLastSeenSettings_CustomShareSettingsHelp: String { return self._s[3655]! } - public var OldChannels_NoticeTitle: String { return self._s[3656]! } - public var TwoStepAuth_ChangeEmail: String { return self._s[3657]! } - public var PasscodeSettings_PasscodeOptions: String { return self._s[3658]! } - public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[3659]! } - public var Passport_Address_AddUtilityBill: String { return self._s[3660]! } + public func VoiceOver_Chat_VideoFrom(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3652]!, self._r[3652]!, [_0]) + } + public var Weekday_Wednesday: String { return self._s[3653]! } + public var ReportPeer_ReasonOther_Send: String { return self._s[3654]! } + public var PasscodeSettings_EncryptDataHelp: String { return self._s[3655]! } + public var PrivacyLastSeenSettings_CustomShareSettingsHelp: String { return self._s[3656]! } + public var OldChannels_NoticeTitle: String { return self._s[3657]! } + public var TwoStepAuth_ChangeEmail: String { return self._s[3658]! } + public var PasscodeSettings_PasscodeOptions: String { return self._s[3659]! } + public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[3660]! } + public var Passport_Address_AddUtilityBill: String { return self._s[3661]! } public func Time_PreciseDate_m5(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3662]!, self._r[3662]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3663]!, self._r[3663]!, [_1, _2, _3]) } - public var TwoFactorSetup_EmailVerification_ResendAction: String { return self._s[3664]! } - public var Stats_GroupTopAdminsTitle: String { return self._s[3665]! } - public var Paint_Regular: String { return self._s[3666]! } - public var Message_Contact: String { return self._s[3667]! } - public var NetworkUsageSettings_MediaVideoDataSection: String { return self._s[3668]! } - public var VoiceOver_Chat_YourPhoto: String { return self._s[3669]! } - public var Notification_Mute1hMin: String { return self._s[3670]! } + public var TwoFactorSetup_EmailVerification_ResendAction: String { return self._s[3665]! } + public var Stats_GroupTopAdminsTitle: String { return self._s[3666]! } + public var Paint_Regular: String { return self._s[3667]! } + public var Message_Contact: String { return self._s[3668]! } + public var NetworkUsageSettings_MediaVideoDataSection: String { return self._s[3669]! } + public var VoiceOver_Chat_YourPhoto: String { return self._s[3670]! } + public var Notification_Mute1hMin: String { return self._s[3671]! } public func Login_BannedPhoneSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3671]!, self._r[3671]!, [_0]) + return formatWithArgumentRanges(self._s[3672]!, self._r[3672]!, [_0]) } - public var Profile_MessageLifetime1h: String { return self._s[3672]! } - public var TwoStepAuth_GenericHelp: String { return self._s[3673]! } - public var TextFormat_Monospace: String { return self._s[3674]! } - public var VoiceOver_Media_PlaybackRateChange: String { return self._s[3676]! } - public var Conversation_DeleteMessagesForMe: String { return self._s[3677]! } - public var ChatList_DeleteChat: String { return self._s[3678]! } - public var Channel_OwnershipTransfer_EnterPasswordText: String { return self._s[3681]! } + public var Profile_MessageLifetime1h: String { return self._s[3673]! } + public var TwoStepAuth_GenericHelp: String { return self._s[3674]! } + public var TextFormat_Monospace: String { return self._s[3675]! } + public var VoiceOver_Media_PlaybackRateChange: String { return self._s[3677]! } + public var Conversation_DeleteMessagesForMe: String { return self._s[3678]! } + public var ChatList_DeleteChat: String { return self._s[3679]! } + public var Channel_OwnershipTransfer_EnterPasswordText: String { return self._s[3682]! } public func Settings_ApplyProxyAlertCredentials(_ _1: String, _ _2: String, _ _3: String, _ _4: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3682]!, self._r[3682]!, [_1, _2, _3, _4]) + return formatWithArgumentRanges(self._s[3683]!, self._r[3683]!, [_1, _2, _3, _4]) } - public var Login_CancelPhoneVerificationStop: String { return self._s[3683]! } - public var Appearance_ThemePreview_ChatList_4_Name: String { return self._s[3684]! } - public var MediaPicker_MomentsDateRangeSameMonthYearFormat: String { return self._s[3685]! } - public var Wallet_Settings_Configuration: String { return self._s[3686]! } - public var Notifications_Badge_IncludeChannels: String { return self._s[3687]! } + public var Login_CancelPhoneVerificationStop: String { return self._s[3684]! } + public var Appearance_ThemePreview_ChatList_4_Name: String { return self._s[3685]! } + public var MediaPicker_MomentsDateRangeSameMonthYearFormat: String { return self._s[3686]! } + public var Wallet_Settings_Configuration: String { return self._s[3687]! } + public var Notifications_Badge_IncludeChannels: String { return self._s[3688]! } public func Channel_AdminLog_MessageToggleInvitesOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3688]!, self._r[3688]!, [_0]) + return formatWithArgumentRanges(self._s[3689]!, self._r[3689]!, [_0]) } - public var Wallet_Sent_ViewWallet: String { return self._s[3689]! } - public var StickerPack_ViewPack: String { return self._s[3692]! } - public var FastTwoStepSetup_PasswordConfirmationPlaceholder: String { return self._s[3694]! } - public var EditTheme_Expand_Preview_IncomingText: String { return self._s[3695]! } - public var Notifications_Title: String { return self._s[3696]! } - public var Wallet_WordImport_Continue: String { return self._s[3697]! } - public var GroupInfo_PublicLink: String { return self._s[3698]! } - public var Conversation_InputTextPlaceholderComment: String { return self._s[3699]! } - public var VoiceOver_DiscardPreparedContent: String { return self._s[3700]! } - public var Conversation_Moderate_Ban: String { return self._s[3704]! } + public var Wallet_Sent_ViewWallet: String { return self._s[3690]! } + public var StickerPack_ViewPack: String { return self._s[3693]! } + public var FastTwoStepSetup_PasswordConfirmationPlaceholder: String { return self._s[3695]! } + public var EditTheme_Expand_Preview_IncomingText: String { return self._s[3696]! } + public var Notifications_Title: String { return self._s[3697]! } + public var Wallet_WordImport_Continue: String { return self._s[3698]! } + public var GroupInfo_PublicLink: String { return self._s[3699]! } + public var Conversation_InputTextPlaceholderComment: String { return self._s[3700]! } + public var VoiceOver_DiscardPreparedContent: String { return self._s[3701]! } + public var Conversation_Moderate_Ban: String { return self._s[3705]! } public func Activity_RemindAboutGroup(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3705]!, self._r[3705]!, [_0]) + return formatWithArgumentRanges(self._s[3706]!, self._r[3706]!, [_0]) } - public var TextFormat_Underline: String { return self._s[3706]! } + public var TextFormat_Underline: String { return self._s[3707]! } public func DownloadingStatus(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3707]!, self._r[3707]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3708]!, self._r[3708]!, [_0, _1]) } public func PUSH_PINNED_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3708]!, self._r[3708]!, [_1]) + return formatWithArgumentRanges(self._s[3709]!, self._r[3709]!, [_1]) } - public var PollResults_Collapse: String { return self._s[3710]! } - public var Contacts_GlobalSearch: String { return self._s[3711]! } + public var PollResults_Collapse: String { return self._s[3711]! } + public var Contacts_GlobalSearch: String { return self._s[3712]! } public func Conversation_EncryptionWaiting(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3712]!, self._r[3712]!, [_0]) + return formatWithArgumentRanges(self._s[3713]!, self._r[3713]!, [_0]) } - public var Channel_Management_LabelEditor: String { return self._s[3713]! } - public var SettingsSearch_Synonyms_Stickers_FeaturedPacks: String { return self._s[3715]! } - public var Conversation_Theme: String { return self._s[3716]! } - public var Conversation_LinkDialogSave: String { return self._s[3717]! } - public var EnterPasscode_TouchId: String { return self._s[3718]! } - public var Stats_MessageOverview: String { return self._s[3719]! } - public var Privacy_Calls_P2PAlways: String { return self._s[3721]! } - public var Message_Sticker: String { return self._s[3722]! } - public var Conversation_Mute: String { return self._s[3724]! } - public var ContactInfo_Title: String { return self._s[3725]! } + public var Channel_Management_LabelEditor: String { return self._s[3714]! } + public var SettingsSearch_Synonyms_Stickers_FeaturedPacks: String { return self._s[3716]! } + public var Conversation_Theme: String { return self._s[3717]! } + public var Conversation_LinkDialogSave: String { return self._s[3718]! } + public var EnterPasscode_TouchId: String { return self._s[3719]! } + public var Stats_MessageOverview: String { return self._s[3720]! } + public var Privacy_Calls_P2PAlways: String { return self._s[3722]! } + public var Message_Sticker: String { return self._s[3723]! } + public var Conversation_Mute: String { return self._s[3725]! } + public var ContactInfo_Title: String { return self._s[3726]! } public func PUSH_CHANNEL_MESSAGE_CONTACT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3726]!, self._r[3726]!, [_1]) + return formatWithArgumentRanges(self._s[3727]!, self._r[3727]!, [_1]) } - public var Channel_Setup_TypeHeader: String { return self._s[3727]! } - public var AuthSessions_LogOut: String { return self._s[3728]! } - public var Wallet_WordCheck_ViewWords: String { return self._s[3729]! } - public var ChatSettings_AutoDownloadReset: String { return self._s[3730]! } - public var ChatListFolderSettings_NewFolder: String { return self._s[3732]! } - public var Appearance_ThemePreview_ChatList_3_AuthorName: String { return self._s[3733]! } - public var CreatePoll_Title: String { return self._s[3734]! } - public var EditTheme_EditTitle: String { return self._s[3735]! } - public var ChatListFolderSettings_RecommendedFoldersSection: String { return self._s[3736]! } - public var TwoStepAuth_SetPassword: String { return self._s[3737]! } - public var Wallet_Words_Done: String { return self._s[3738]! } + public var Channel_Setup_TypeHeader: String { return self._s[3728]! } + public var AuthSessions_LogOut: String { return self._s[3729]! } + public var Wallet_WordCheck_ViewWords: String { return self._s[3730]! } + public var ChatSettings_AutoDownloadReset: String { return self._s[3731]! } + public var ChatListFolderSettings_NewFolder: String { return self._s[3733]! } + public var Appearance_ThemePreview_ChatList_3_AuthorName: String { return self._s[3734]! } + public var CreatePoll_Title: String { return self._s[3735]! } + public var EditTheme_EditTitle: String { return self._s[3736]! } + public var ChatListFolderSettings_RecommendedFoldersSection: String { return self._s[3737]! } + public var TwoStepAuth_SetPassword: String { return self._s[3738]! } + public var Wallet_Words_Done: String { return self._s[3739]! } public func Login_InvalidPhoneEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3739]!, self._r[3739]!, [_0]) + return formatWithArgumentRanges(self._s[3740]!, self._r[3740]!, [_0]) } - public var BlockedUsers_Info: String { return self._s[3740]! } - public var AuthSessions_Sessions: String { return self._s[3741]! } - public var Group_EditAdmin_RankTitle: String { return self._s[3742]! } + public var BlockedUsers_Info: String { return self._s[3741]! } + public var AuthSessions_Sessions: String { return self._s[3742]! } + public var Group_EditAdmin_RankTitle: String { return self._s[3743]! } public func Wallet_Time_PreciseDate_m11(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3743]!, self._r[3743]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3744]!, self._r[3744]!, [_1, _2, _3]) } - public var Common_ActionNotAllowedError: String { return self._s[3744]! } - public var WebPreview_GettingLinkInfo: String { return self._s[3745]! } - public var Appearance_AppIconFilledX: String { return self._s[3746]! } - public var Wallet_TransactionInfo_StorageFeeInfo: String { return self._s[3747]! } - public var Passport_Email_EmailPlaceholder: String { return self._s[3748]! } - public var FeaturedStickers_OtherSection: String { return self._s[3749]! } - public var EditTheme_Edit_Preview_OutgoingText: String { return self._s[3750]! } - public var Profile_Username: String { return self._s[3751]! } - public var Appearance_RemoveTheme: String { return self._s[3752]! } - public var TwoStepAuth_SetupPasswordConfirmPassword: String { return self._s[3753]! } - public var Message_PinnedStickerMessage: String { return self._s[3754]! } - public var AccessDenied_VideoMicrophone: String { return self._s[3755]! } - public var WallpaperPreview_CustomColorBottomText: String { return self._s[3756]! } - public var Passport_Address_RegionPlaceholder: String { return self._s[3757]! } - public var SettingsSearch_Synonyms_Data_Storage_Title: String { return self._s[3758]! } - public var TwoStepAuth_Title: String { return self._s[3759]! } - public var Checkout_WebConfirmation_Title: String { return self._s[3760]! } - public var AutoDownloadSettings_VoiceMessagesInfo: String { return self._s[3761]! } - public var ChatListFolder_CategoryGroups: String { return self._s[3763]! } - public var Stats_GroupTopInviter_Promote: String { return self._s[3764]! } - public var Month_GenJuly: String { return self._s[3765]! } - public var Passport_Identity_Gender: String { return self._s[3766]! } - public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[3767]! } - public var Notification_Exceptions_DeleteAll: String { return self._s[3768]! } + public var Common_ActionNotAllowedError: String { return self._s[3745]! } + public var WebPreview_GettingLinkInfo: String { return self._s[3746]! } + public var Appearance_AppIconFilledX: String { return self._s[3747]! } + public var Wallet_TransactionInfo_StorageFeeInfo: String { return self._s[3748]! } + public var Passport_Email_EmailPlaceholder: String { return self._s[3749]! } + public var FeaturedStickers_OtherSection: String { return self._s[3750]! } + public var EditTheme_Edit_Preview_OutgoingText: String { return self._s[3751]! } + public var Profile_Username: String { return self._s[3752]! } + public var Appearance_RemoveTheme: String { return self._s[3753]! } + public var TwoStepAuth_SetupPasswordConfirmPassword: String { return self._s[3754]! } + public var Message_PinnedStickerMessage: String { return self._s[3755]! } + public var AccessDenied_VideoMicrophone: String { return self._s[3756]! } + public var WallpaperPreview_CustomColorBottomText: String { return self._s[3757]! } + public var Passport_Address_RegionPlaceholder: String { return self._s[3758]! } + public var SettingsSearch_Synonyms_Data_Storage_Title: String { return self._s[3759]! } + public var TwoStepAuth_Title: String { return self._s[3760]! } + public var Checkout_WebConfirmation_Title: String { return self._s[3761]! } + public var AutoDownloadSettings_VoiceMessagesInfo: String { return self._s[3762]! } + public var ChatListFolder_CategoryGroups: String { return self._s[3764]! } + public var Stats_GroupTopInviter_Promote: String { return self._s[3765]! } + public var Month_GenJuly: String { return self._s[3766]! } + public var Passport_Identity_Gender: String { return self._s[3767]! } + public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[3768]! } + public var Notification_Exceptions_DeleteAll: String { return self._s[3769]! } public func Conversation_FileHowToText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3769]!, self._r[3769]!, [_0]) + return formatWithArgumentRanges(self._s[3770]!, self._r[3770]!, [_0]) } public func Channel_AdminLog_MessageAdmin(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3770]!, self._r[3770]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[3771]!, self._r[3771]!, [_0, _1, _2]) } - public var Login_CodeSentSms: String { return self._s[3771]! } + public var Login_CodeSentSms: String { return self._s[3772]! } public func VoiceOver_Chat_ReplyFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3773]!, self._r[3773]!, [_0]) + return formatWithArgumentRanges(self._s[3774]!, self._r[3774]!, [_0]) } - public var Login_CallRequestState2: String { return self._s[3774]! } - public var Channel_DiscussionGroup_Header: String { return self._s[3775]! } + public var Login_CallRequestState2: String { return self._s[3775]! } + public var Channel_DiscussionGroup_Header: String { return self._s[3776]! } public func Channel_AdminLog_MessageToggleInvitesOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3776]!, self._r[3776]!, [_0]) + return formatWithArgumentRanges(self._s[3777]!, self._r[3777]!, [_0]) } - public var Passport_Language_ms: String { return self._s[3777]! } - public var PeopleNearby_MakeInvisible: String { return self._s[3779]! } - public var ChatList_Search_FilterVoice: String { return self._s[3781]! } - public var Camera_TapAndHoldForVideo: String { return self._s[3783]! } - public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[3784]! } + public var Passport_Language_ms: String { return self._s[3778]! } + public var PeopleNearby_MakeInvisible: String { return self._s[3780]! } + public var ChatList_Search_FilterVoice: String { return self._s[3782]! } + public var Camera_TapAndHoldForVideo: String { return self._s[3784]! } + public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[3785]! } public func Notification_LeftChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3785]!, self._r[3785]!, [_0]) + return formatWithArgumentRanges(self._s[3786]!, self._r[3786]!, [_0]) } public func Wallet_Time_PreciseDate_m9(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3786]!, self._r[3786]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3787]!, self._r[3787]!, [_1, _2, _3]) } - public var Wallet_Info_TransactionTo: String { return self._s[3787]! } - public var Map_Locating: String { return self._s[3788]! } + public var Wallet_Info_TransactionTo: String { return self._s[3788]! } + public var Map_Locating: String { return self._s[3789]! } public func Checkout_SavePasswordTimeout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3790]!, self._r[3790]!, [_0]) + return formatWithArgumentRanges(self._s[3791]!, self._r[3791]!, [_0]) } - public var Passport_Identity_TypeInternalPassport: String { return self._s[3792]! } - public var Appearance_ThemePreview_Chat_4_Text: String { return self._s[3793]! } - public var SettingsSearch_Synonyms_EditProfile_Username: String { return self._s[3794]! } - public var Stickers_Installed: String { return self._s[3795]! } - public var Notifications_PermissionsAllowInSettings: String { return self._s[3796]! } - public var StickerPackActionInfo_RemovedTitle: String { return self._s[3797]! } - public var CallSettings_Never: String { return self._s[3799]! } - public var Wallet_AccessDenied_Camera: String { return self._s[3800]! } - public var Channel_Setup_TypePublicHelp: String { return self._s[3801]! } + public var Passport_Identity_TypeInternalPassport: String { return self._s[3793]! } + public var Appearance_ThemePreview_Chat_4_Text: String { return self._s[3794]! } + public var SettingsSearch_Synonyms_EditProfile_Username: String { return self._s[3795]! } + public var Stickers_Installed: String { return self._s[3796]! } + public var Notifications_PermissionsAllowInSettings: String { return self._s[3797]! } + public var StickerPackActionInfo_RemovedTitle: String { return self._s[3798]! } + public var CallSettings_Never: String { return self._s[3800]! } + public var Wallet_AccessDenied_Camera: String { return self._s[3801]! } + public var Channel_Setup_TypePublicHelp: String { return self._s[3802]! } public func ChatList_DeleteForEveryone(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3803]!, self._r[3803]!, [_0]) + return formatWithArgumentRanges(self._s[3804]!, self._r[3804]!, [_0]) } - public var Message_Game: String { return self._s[3804]! } - public var Call_Message: String { return self._s[3805]! } + public var Message_Game: String { return self._s[3805]! } + public var Call_Message: String { return self._s[3806]! } public func PUSH_CHANNEL_MESSAGE_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3806]!, self._r[3806]!, [_1]) + return formatWithArgumentRanges(self._s[3807]!, self._r[3807]!, [_1]) } - public var ChannelIntro_Text: String { return self._s[3807]! } - public var StickerPack_Send: String { return self._s[3808]! } - public var Share_AuthDescription: String { return self._s[3809]! } - public var PasscodeSettings_AutoLock_IfAwayFor_5minutes: String { return self._s[3810]! } - public var CallFeedback_WhatWentWrong: String { return self._s[3811]! } - public var Common_Create: String { return self._s[3814]! } - public var Passport_Language_hy: String { return self._s[3815]! } - public var CreatePoll_Explanation: String { return self._s[3816]! } - public var GroupPermission_AddMembersNotAvailable: String { return self._s[3817]! } - public var Undo_ChatClearedForBothSides: String { return self._s[3818]! } - public var DialogList_NoMessagesTitle: String { return self._s[3819]! } - public var GroupInfo_Title: String { return self._s[3821]! } - public var Channel_AdminLog_CanBanUsers: String { return self._s[3822]! } - public var PhoneNumberHelp_Help: String { return self._s[3823]! } - public var TwoStepAuth_AdditionalPassword: String { return self._s[3824]! } - public var Settings_Logout: String { return self._s[3825]! } - public var Privacy_PaymentsTitle: String { return self._s[3826]! } - public var StickerPacksSettings_StickerPacksSection: String { return self._s[3827]! } - public var Tour_Text6: String { return self._s[3828]! } - public var Channel_Username_Help: String { return self._s[3830]! } - public var Wallet_Info_RefreshErrorTitle: String { return self._s[3831]! } - public var VoiceOver_Chat_RecordModeVoiceMessageInfo: String { return self._s[3832]! } - public var AttachmentMenu_Poll: String { return self._s[3833]! } - public var EditTheme_Create_Preview_IncomingReplyName: String { return self._s[3834]! } - public var Conversation_ReportSpamChannelConfirmation: String { return self._s[3835]! } - public var Passport_DeletePassport: String { return self._s[3836]! } - public var Login_Code: String { return self._s[3837]! } - public var Notification_SecretChatScreenshot: String { return self._s[3838]! } - public var Login_CodeFloodError: String { return self._s[3839]! } + public var ChannelIntro_Text: String { return self._s[3808]! } + public var StickerPack_Send: String { return self._s[3809]! } + public var Share_AuthDescription: String { return self._s[3810]! } + public var PasscodeSettings_AutoLock_IfAwayFor_5minutes: String { return self._s[3811]! } + public var CallFeedback_WhatWentWrong: String { return self._s[3812]! } + public var Common_Create: String { return self._s[3815]! } + public var Passport_Language_hy: String { return self._s[3816]! } + public var CreatePoll_Explanation: String { return self._s[3817]! } + public var GroupPermission_AddMembersNotAvailable: String { return self._s[3818]! } + public var Undo_ChatClearedForBothSides: String { return self._s[3819]! } + public var DialogList_NoMessagesTitle: String { return self._s[3820]! } + public var GroupInfo_Title: String { return self._s[3822]! } + public var Channel_AdminLog_CanBanUsers: String { return self._s[3823]! } + public var PhoneNumberHelp_Help: String { return self._s[3824]! } + public var TwoStepAuth_AdditionalPassword: String { return self._s[3825]! } + public var Settings_Logout: String { return self._s[3826]! } + public var Privacy_PaymentsTitle: String { return self._s[3827]! } + public var StickerPacksSettings_StickerPacksSection: String { return self._s[3828]! } + public var Tour_Text6: String { return self._s[3829]! } + public var Channel_Username_Help: String { return self._s[3831]! } + public var Wallet_Info_RefreshErrorTitle: String { return self._s[3832]! } + public var VoiceOver_Chat_RecordModeVoiceMessageInfo: String { return self._s[3833]! } + public var AttachmentMenu_Poll: String { return self._s[3834]! } + public var EditTheme_Create_Preview_IncomingReplyName: String { return self._s[3835]! } + public var Conversation_ReportSpamChannelConfirmation: String { return self._s[3836]! } + public var Passport_DeletePassport: String { return self._s[3837]! } + public var Login_Code: String { return self._s[3838]! } + public var Notification_SecretChatScreenshot: String { return self._s[3839]! } + public var Login_CodeFloodError: String { return self._s[3840]! } public func Notification_PinnedAnimationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3840]!, self._r[3840]!, [_0]) - } - public func Channel_Username_UsernameIsAvailable(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3841]!, self._r[3841]!, [_0]) } - public var Watch_Stickers_Recents: String { return self._s[3842]! } - public var Generic_ErrorMoreInfo: String { return self._s[3843]! } + public func Channel_Username_UsernameIsAvailable(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3842]!, self._r[3842]!, [_0]) + } + public var Watch_Stickers_Recents: String { return self._s[3843]! } + public var Generic_ErrorMoreInfo: String { return self._s[3844]! } public func Call_AccountIsLoggedOnCurrentDevice(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3844]!, self._r[3844]!, [_0]) + return formatWithArgumentRanges(self._s[3845]!, self._r[3845]!, [_0]) } - public var AutoDownloadSettings_DataUsage: String { return self._s[3845]! } - public var Conversation_ViewTheme: String { return self._s[3846]! } - public var Contacts_InviteSearchLabel: String { return self._s[3847]! } - public var Settings_CancelUpload: String { return self._s[3849]! } - public var Settings_AppLanguage_Unofficial: String { return self._s[3850]! } + public var AutoDownloadSettings_DataUsage: String { return self._s[3846]! } + public var Conversation_ViewTheme: String { return self._s[3847]! } + public var Contacts_InviteSearchLabel: String { return self._s[3848]! } + public var Settings_CancelUpload: String { return self._s[3850]! } + public var Settings_AppLanguage_Unofficial: String { return self._s[3851]! } public func ChatList_ClearChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3851]!, self._r[3851]!, [_0]) + return formatWithArgumentRanges(self._s[3852]!, self._r[3852]!, [_0]) } - public var ChatList_AddFolder: String { return self._s[3852]! } - public var Conversation_Location: String { return self._s[3854]! } - public var Appearance_BubbleCorners_AdjustAdjacent: String { return self._s[3855]! } - public var DialogList_AdLabel: String { return self._s[3856]! } + public var ChatList_AddFolder: String { return self._s[3853]! } + public var Conversation_Location: String { return self._s[3855]! } + public var Appearance_BubbleCorners_AdjustAdjacent: String { return self._s[3856]! } + public var DialogList_AdLabel: String { return self._s[3857]! } public func Time_TomorrowAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3858]!, self._r[3858]!, [_0]) + return formatWithArgumentRanges(self._s[3859]!, self._r[3859]!, [_0]) } - public var Message_InvoiceLabel: String { return self._s[3859]! } - public var Channel_TooMuchBots: String { return self._s[3860]! } + public var Message_InvoiceLabel: String { return self._s[3860]! } + public var Channel_TooMuchBots: String { return self._s[3861]! } public func Channel_AdminLog_MessageRemovedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3861]!, self._r[3861]!, [_0]) + return formatWithArgumentRanges(self._s[3862]!, self._r[3862]!, [_0]) } - public var Wallet_Month_ShortAugust: String { return self._s[3862]! } - public var Call_IncomingVideoCall: String { return self._s[3863]! } - public var Conversation_LiveLocation: String { return self._s[3864]! } - public var TwoStepAuth_SetupPasswordEnterPasswordChange: String { return self._s[3865]! } - public var Passport_Identity_EditPassport: String { return self._s[3866]! } - public var Permissions_CellularDataTitle_v0: String { return self._s[3868]! } - public var ChatList_Search_NoResultsFitlerVoice: String { return self._s[3869]! } - public var GroupInfo_Permissions_AddException: String { return self._s[3870]! } - public var Channel_AdminLog_CanInviteUsers: String { return self._s[3872]! } - public var Channel_MessageVideoUpdated: String { return self._s[3873]! } - public var GroupInfo_Permissions_EditingDisabled: String { return self._s[3874]! } - public var AccessDenied_Camera: String { return self._s[3877]! } + public var Wallet_Month_ShortAugust: String { return self._s[3863]! } + public var Call_IncomingVideoCall: String { return self._s[3864]! } + public var Conversation_LiveLocation: String { return self._s[3865]! } + public var TwoStepAuth_SetupPasswordEnterPasswordChange: String { return self._s[3866]! } + public var Passport_Identity_EditPassport: String { return self._s[3867]! } + public var Permissions_CellularDataTitle_v0: String { return self._s[3869]! } + public var ChatList_Search_NoResultsFitlerVoice: String { return self._s[3870]! } + public var GroupInfo_Permissions_AddException: String { return self._s[3871]! } + public var Channel_AdminLog_CanInviteUsers: String { return self._s[3873]! } + public var Channel_MessageVideoUpdated: String { return self._s[3874]! } + public var GroupInfo_Permissions_EditingDisabled: String { return self._s[3875]! } + public var AccessDenied_Camera: String { return self._s[3878]! } public func Target_InviteToGroupConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3878]!, self._r[3878]!, [_0]) + return formatWithArgumentRanges(self._s[3879]!, self._r[3879]!, [_0]) } - public var Theme_Context_ChangeColors: String { return self._s[3879]! } - public var PrivacySettings_TwoStepAuth: String { return self._s[3880]! } - public var Privacy_Forwards_PreviewMessageText: String { return self._s[3881]! } - public var Login_CodeExpiredError: String { return self._s[3882]! } - public var State_ConnectingToProxy: String { return self._s[3883]! } - public var TextFormat_Link: String { return self._s[3884]! } - public var Passport_Language_lv: String { return self._s[3885]! } - public var AccessDenied_VoiceMicrophone: String { return self._s[3886]! } - public var WallpaperPreview_SwipeBottomText: String { return self._s[3887]! } - public var ProfilePhoto_SetMainVideo: String { return self._s[3888]! } - public var AutoDownloadSettings_Cellular: String { return self._s[3890]! } - public var ChatSettings_AutoDownloadVoiceMessages: String { return self._s[3891]! } + public var Theme_Context_ChangeColors: String { return self._s[3880]! } + public var PrivacySettings_TwoStepAuth: String { return self._s[3881]! } + public var Privacy_Forwards_PreviewMessageText: String { return self._s[3882]! } + public var Login_CodeExpiredError: String { return self._s[3883]! } + public var State_ConnectingToProxy: String { return self._s[3884]! } + public var TextFormat_Link: String { return self._s[3885]! } + public var Passport_Language_lv: String { return self._s[3886]! } + public var AccessDenied_VoiceMicrophone: String { return self._s[3887]! } + public var WallpaperPreview_SwipeBottomText: String { return self._s[3888]! } + public var ProfilePhoto_SetMainVideo: String { return self._s[3889]! } + public var AutoDownloadSettings_Cellular: String { return self._s[3891]! } + public var ChatSettings_AutoDownloadVoiceMessages: String { return self._s[3892]! } public func Channel_AdminLog_MessageKickedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3892]!, self._r[3892]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3893]!, self._r[3893]!, [_1, _2]) } - public var ChatList_EmptyChatListFilterTitle: String { return self._s[3893]! } - public var Checkout_PayNone: String { return self._s[3894]! } - public var NotificationsSound_Complete: String { return self._s[3896]! } - public var TwoStepAuth_ConfirmEmailCodePlaceholder: String { return self._s[3897]! } - public var AuthSessions_DevicesTitle: String { return self._s[3898]! } + public var ChatList_EmptyChatListFilterTitle: String { return self._s[3894]! } + public var Checkout_PayNone: String { return self._s[3895]! } + public var NotificationsSound_Complete: String { return self._s[3897]! } + public var TwoStepAuth_ConfirmEmailCodePlaceholder: String { return self._s[3898]! } + public var AuthSessions_DevicesTitle: String { return self._s[3899]! } public func DialogList_MultipleTyping(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3899]!, self._r[3899]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3900]!, self._r[3900]!, [_0, _1]) } - public var Message_LiveLocation: String { return self._s[3900]! } - public var Watch_Suggestion_BRB: String { return self._s[3901]! } - public var Channel_BanUser_Title: String { return self._s[3902]! } - public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[3903]! } - public var Conversation_Dice_u1F3C0: String { return self._s[3904]! } - public var Conversation_ClearSelfHistory: String { return self._s[3905]! } - public var ProfilePhoto_OpenGallery: String { return self._s[3906]! } - public var PrivacySettings_LastSeenTitle: String { return self._s[3907]! } - public var Weekday_Thursday: String { return self._s[3908]! } - public var BroadcastListInfo_AddRecipient: String { return self._s[3909]! } - public var Privacy_ProfilePhoto: String { return self._s[3911]! } - public var StickerPacksSettings_ArchivedPacks_Info: String { return self._s[3912]! } + public var Message_LiveLocation: String { return self._s[3901]! } + public var Watch_Suggestion_BRB: String { return self._s[3902]! } + public var Channel_BanUser_Title: String { return self._s[3903]! } + public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[3904]! } + public var Conversation_Dice_u1F3C0: String { return self._s[3905]! } + public var Conversation_ClearSelfHistory: String { return self._s[3906]! } + public var ProfilePhoto_OpenGallery: String { return self._s[3907]! } + public var PrivacySettings_LastSeenTitle: String { return self._s[3908]! } + public var Weekday_Thursday: String { return self._s[3909]! } + public var BroadcastListInfo_AddRecipient: String { return self._s[3910]! } + public var Privacy_ProfilePhoto: String { return self._s[3912]! } + public var StickerPacksSettings_ArchivedPacks_Info: String { return self._s[3913]! } public func Channel_AdminLog_MessageChangedUnlinkedGroup(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3913]!, self._r[3913]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3914]!, self._r[3914]!, [_1, _2]) } - public var Message_Audio: String { return self._s[3914]! } - public var Conversation_Info: String { return self._s[3915]! } - public var Cache_Videos: String { return self._s[3916]! } - public var Appearance_ThemePreview_ChatList_6_Text: String { return self._s[3917]! } - public var Channel_ErrorAddTooMuch: String { return self._s[3918]! } + public var Message_Audio: String { return self._s[3915]! } + public var Conversation_Info: String { return self._s[3916]! } + public var Cache_Videos: String { return self._s[3917]! } + public var Appearance_ThemePreview_ChatList_6_Text: String { return self._s[3918]! } + public var Channel_ErrorAddTooMuch: String { return self._s[3919]! } public func ChatList_DeleteSecretChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3919]!, self._r[3919]!, [_0]) + return formatWithArgumentRanges(self._s[3920]!, self._r[3920]!, [_0]) } - public var ChannelMembers_ChannelAdminsTitle: String { return self._s[3921]! } - public var ScheduledMessages_Title: String { return self._s[3923]! } - public var ShareFileTip_Title: String { return self._s[3926]! } - public var Chat_Gifs_TrendingSectionHeader: String { return self._s[3927]! } - public var ChatList_RemoveFolderConfirmation: String { return self._s[3928]! } + public var ChannelMembers_ChannelAdminsTitle: String { return self._s[3922]! } + public var ScheduledMessages_Title: String { return self._s[3924]! } + public var ShareFileTip_Title: String { return self._s[3927]! } + public var Chat_Gifs_TrendingSectionHeader: String { return self._s[3928]! } + public var ChatList_RemoveFolderConfirmation: String { return self._s[3929]! } public func PUSH_CHAT_MESSAGE_GEOLIVE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3929]!, self._r[3929]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3930]!, self._r[3930]!, [_1, _2]) } - public var Conversation_ContextViewStats: String { return self._s[3931]! } - public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[3932]! } - public var PasscodeSettings_Title: String { return self._s[3933]! } - public var Channel_AdminLog_SendPolls: String { return self._s[3934]! } - public var LastSeen_ALongTimeAgo: String { return self._s[3935]! } + public var Conversation_ContextViewStats: String { return self._s[3932]! } + public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[3933]! } + public var PasscodeSettings_Title: String { return self._s[3934]! } + public var Channel_AdminLog_SendPolls: String { return self._s[3935]! } + public var LastSeen_ALongTimeAgo: String { return self._s[3936]! } public func PUSH_CHANNEL_MESSAGE_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3936]!, self._r[3936]!, [_1]) + return formatWithArgumentRanges(self._s[3937]!, self._r[3937]!, [_1]) } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[3937]! } - public var CallFeedback_VideoReasonLowQuality: String { return self._s[3938]! } - public var SocksProxySetup_AddProxyTitle: String { return self._s[3939]! } - public var Passport_Identity_AddInternalPassport: String { return self._s[3940]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[3938]! } + public var CallFeedback_VideoReasonLowQuality: String { return self._s[3939]! } + public var SocksProxySetup_AddProxyTitle: String { return self._s[3940]! } + public var Passport_Identity_AddInternalPassport: String { return self._s[3941]! } public func ChatList_RemovedFromFolderTooltip(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3941]!, self._r[3941]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3942]!, self._r[3942]!, [_1, _2]) } public func Conversation_SetReminder_RemindToday(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3942]!, self._r[3942]!, [_0]) + return formatWithArgumentRanges(self._s[3943]!, self._r[3943]!, [_0]) } - public var Passport_Identity_GenderFemale: String { return self._s[3943]! } - public var ConvertToSupergroup_HelpTitle: String { return self._s[3946]! } - public var SharedMedia_TitleAll: String { return self._s[3947]! } - public var Settings_Context_Logout: String { return self._s[3948]! } - public var GroupInfo_SetGroupPhotoDelete: String { return self._s[3950]! } - public var Settings_About_Title: String { return self._s[3951]! } - public var StickerSettings_ContextHide: String { return self._s[3952]! } + public var Passport_Identity_GenderFemale: String { return self._s[3944]! } + public var ConvertToSupergroup_HelpTitle: String { return self._s[3947]! } + public var SharedMedia_TitleAll: String { return self._s[3948]! } + public var Settings_Context_Logout: String { return self._s[3949]! } + public var GroupInfo_SetGroupPhotoDelete: String { return self._s[3951]! } + public var Settings_About_Title: String { return self._s[3952]! } + public var StickerSettings_ContextHide: String { return self._s[3953]! } public func AutoDownloadSettings_UpTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3953]!, self._r[3953]!, [_0]) - } - public func Conversation_LiveLocationYouAndOther(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3954]!, self._r[3954]!, [_0]) } - public var Common_Cancel: String { return self._s[3956]! } - public var CallFeedback_Title: String { return self._s[3958]! } - public func Notification_PinnedContactMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3959]!, self._r[3959]!, [_0]) + public func Conversation_LiveLocationYouAndOther(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3955]!, self._r[3955]!, [_0]) } - public var Activity_UploadingVideoMessage: String { return self._s[3960]! } - public var Wallet_TransactionInfo_OtherFeeInfo: String { return self._s[3961]! } - public var MediaPicker_Send: String { return self._s[3962]! } - public var PasscodeSettings_AutoLock_IfAwayFor_1minute: String { return self._s[3963]! } - public var Conversation_LiveLocationYou: String { return self._s[3964]! } - public var Notifications_ExceptionsUnmuted: String { return self._s[3965]! } + public var Common_Cancel: String { return self._s[3957]! } + public var CallFeedback_Title: String { return self._s[3959]! } + public func Notification_PinnedContactMessage(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3960]!, self._r[3960]!, [_0]) + } + public var Activity_UploadingVideoMessage: String { return self._s[3961]! } + public var Wallet_TransactionInfo_OtherFeeInfo: String { return self._s[3962]! } + public var MediaPicker_Send: String { return self._s[3963]! } + public var PasscodeSettings_AutoLock_IfAwayFor_1minute: String { return self._s[3964]! } + public var Conversation_LiveLocationYou: String { return self._s[3965]! } + public var Notifications_ExceptionsUnmuted: String { return self._s[3966]! } public func Channel_AdminLog_MessageGroupPreHistoryHidden(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3966]!, self._r[3966]!, [_0]) + return formatWithArgumentRanges(self._s[3967]!, self._r[3967]!, [_0]) } public func PUSH_CHAT_ADD_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3967]!, self._r[3967]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3968]!, self._r[3968]!, [_1, _2]) } - public var Conversation_ViewBackground: String { return self._s[3968]! } - public var ChatSettings_PrivateChats: String { return self._s[3971]! } - public var Conversation_ErrorInaccessibleMessage: String { return self._s[3972]! } - public var Wallet_Receive_AmountInfo: String { return self._s[3973]! } - public var Appearance_ThemeNight: String { return self._s[3974]! } - public var Common_Search: String { return self._s[3975]! } - public var TwoStepAuth_ReEnterPasswordTitle: String { return self._s[3976]! } - public var ChangePhoneNumberNumber_Help: String { return self._s[3978]! } - public var Stickers_SuggestAdded: String { return self._s[3979]! } - public var Conversation_DiscardVoiceMessageDescription: String { return self._s[3982]! } - public var NetworkUsageSettings_Cellular: String { return self._s[3983]! } - public var CheckoutInfo_Title: String { return self._s[3984]! } - public var Conversation_ShareBotLocationConfirmationTitle: String { return self._s[3985]! } - public var Channel_BotDoesntSupportGroups: String { return self._s[3986]! } + public var Conversation_ViewBackground: String { return self._s[3969]! } + public var ChatSettings_PrivateChats: String { return self._s[3972]! } + public var Conversation_ErrorInaccessibleMessage: String { return self._s[3973]! } + public var Wallet_Receive_AmountInfo: String { return self._s[3974]! } + public var Appearance_ThemeNight: String { return self._s[3975]! } + public var Common_Search: String { return self._s[3976]! } + public var TwoStepAuth_ReEnterPasswordTitle: String { return self._s[3977]! } + public var ChangePhoneNumberNumber_Help: String { return self._s[3979]! } + public var Stickers_SuggestAdded: String { return self._s[3980]! } + public var Conversation_DiscardVoiceMessageDescription: String { return self._s[3983]! } + public var NetworkUsageSettings_Cellular: String { return self._s[3984]! } + public var CheckoutInfo_Title: String { return self._s[3985]! } + public var Conversation_ShareBotLocationConfirmationTitle: String { return self._s[3986]! } + public var Channel_BotDoesntSupportGroups: String { return self._s[3987]! } public func DialogList_SingleRecordingAudioSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3987]!, self._r[3987]!, [_0]) + return formatWithArgumentRanges(self._s[3988]!, self._r[3988]!, [_0]) } - public var MaskStickerSettings_Info: String { return self._s[3988]! } - public var GroupRemoved_DeleteUser: String { return self._s[3989]! } - public var Contacts_ShareTelegram: String { return self._s[3990]! } - public var Group_UpgradeNoticeText1: String { return self._s[3991]! } + public var MaskStickerSettings_Info: String { return self._s[3989]! } + public var GroupRemoved_DeleteUser: String { return self._s[3990]! } + public var Contacts_ShareTelegram: String { return self._s[3991]! } + public var Group_UpgradeNoticeText1: String { return self._s[3992]! } public func PUSH_PHONE_CALL_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3992]!, self._r[3992]!, [_1]) + return formatWithArgumentRanges(self._s[3993]!, self._r[3993]!, [_1]) } - public var PrivacyLastSeenSettings_Title: String { return self._s[3993]! } - public var SettingsSearch_Synonyms_Support: String { return self._s[3997]! } - public var PhotoEditor_TintTool: String { return self._s[3998]! } - public var Wallet_Receive_InvoiceUrlHeader: String { return self._s[4000]! } - public var GroupPermission_NoSendPolls: String { return self._s[4001]! } - public var NotificationsSound_None: String { return self._s[4002]! } + public var PrivacyLastSeenSettings_Title: String { return self._s[3994]! } + public var SettingsSearch_Synonyms_Support: String { return self._s[3998]! } + public var PhotoEditor_TintTool: String { return self._s[3999]! } + public var Wallet_Receive_InvoiceUrlHeader: String { return self._s[4001]! } + public var GroupPermission_NoSendPolls: String { return self._s[4002]! } + public var NotificationsSound_None: String { return self._s[4003]! } public func LOCAL_CHANNEL_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4003]!, self._r[4003]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[4004]!, self._r[4004]!, [_1, "\(_2)"]) } - public var CheckoutInfo_ShippingInfoCityPlaceholder: String { return self._s[4005]! } - public var ExplicitContent_AlertChannel: String { return self._s[4007]! } - public var Conversation_ClousStorageInfo_Description1: String { return self._s[4008]! } - public var Contacts_SortedByPresence: String { return self._s[4009]! } - public var WallpaperSearch_ColorGray: String { return self._s[4010]! } - public var Channel_AdminLogFilter_EventsNewSubscribers: String { return self._s[4011]! } - public var Conversation_ReportSpam: String { return self._s[4012]! } - public var ChatList_Search_NoResultsFilter: String { return self._s[4015]! } - public var WallpaperSearch_ColorBlack: String { return self._s[4016]! } - public var ArchivedChats_IntroTitle3: String { return self._s[4017]! } - public var Conversation_DefaultRestrictedText: String { return self._s[4018]! } - public var Settings_Devices: String { return self._s[4019]! } - public var Call_AudioRouteSpeaker: String { return self._s[4020]! } - public var GroupInfo_InviteLink_CopyLink: String { return self._s[4021]! } - public var Passport_Address_Country: String { return self._s[4023]! } - public var Cache_MaximumCacheSize: String { return self._s[4024]! } - public var Notifications_Badge_IncludePublicGroups: String { return self._s[4025]! } - public var Wallet_Receive_CreateInvoice: String { return self._s[4027]! } - public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[4028]! } - public var Login_TermsOfServiceLabel: String { return self._s[4029]! } - public var Calls_NoMissedCallsPlacehoder: String { return self._s[4030]! } - public var SocksProxySetup_RequiredCredentials: String { return self._s[4031]! } - public var VoiceOver_MessageContextOpenMessageMenu: String { return self._s[4032]! } - public var AutoNightTheme_ScheduledFrom: String { return self._s[4033]! } - public var ChatSettings_AutoDownloadDocuments: String { return self._s[4034]! } - public var ConvertToSupergroup_Note: String { return self._s[4036]! } - public var Settings_SetNewProfilePhotoOrVideo: String { return self._s[4037]! } - public var PrivacySettings_PasscodeAndTouchId: String { return self._s[4038]! } - public var Common_More: String { return self._s[4039]! } - public var ShareMenu_SelectChats: String { return self._s[4041]! } + public var CheckoutInfo_ShippingInfoCityPlaceholder: String { return self._s[4006]! } + public var ExplicitContent_AlertChannel: String { return self._s[4008]! } + public var Conversation_ClousStorageInfo_Description1: String { return self._s[4009]! } + public var Contacts_SortedByPresence: String { return self._s[4010]! } + public var WallpaperSearch_ColorGray: String { return self._s[4011]! } + public var Channel_AdminLogFilter_EventsNewSubscribers: String { return self._s[4012]! } + public var Conversation_ReportSpam: String { return self._s[4013]! } + public var ChatList_Search_NoResultsFilter: String { return self._s[4016]! } + public var WallpaperSearch_ColorBlack: String { return self._s[4017]! } + public var ArchivedChats_IntroTitle3: String { return self._s[4018]! } + public var Conversation_DefaultRestrictedText: String { return self._s[4019]! } + public var Settings_Devices: String { return self._s[4020]! } + public var Call_AudioRouteSpeaker: String { return self._s[4021]! } + public var GroupInfo_InviteLink_CopyLink: String { return self._s[4022]! } + public var Passport_Address_Country: String { return self._s[4024]! } + public var Cache_MaximumCacheSize: String { return self._s[4025]! } + public var Notifications_Badge_IncludePublicGroups: String { return self._s[4026]! } + public var Wallet_Receive_CreateInvoice: String { return self._s[4028]! } + public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[4029]! } + public var Login_TermsOfServiceLabel: String { return self._s[4030]! } + public var Calls_NoMissedCallsPlacehoder: String { return self._s[4031]! } + public var SocksProxySetup_RequiredCredentials: String { return self._s[4032]! } + public var VoiceOver_MessageContextOpenMessageMenu: String { return self._s[4033]! } + public var AutoNightTheme_ScheduledFrom: String { return self._s[4034]! } + public var ChatSettings_AutoDownloadDocuments: String { return self._s[4035]! } + public var ConvertToSupergroup_Note: String { return self._s[4037]! } + public var Settings_SetNewProfilePhotoOrVideo: String { return self._s[4038]! } + public var PrivacySettings_PasscodeAndTouchId: String { return self._s[4039]! } + public var Common_More: String { return self._s[4040]! } + public var ShareMenu_SelectChats: String { return self._s[4042]! } public func Conversation_ScheduleMessage_SendToday(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4043]!, self._r[4043]!, [_0]) - } - public func Channel_AdminLog_MessageRemovedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4044]!, self._r[4044]!, [_0]) } - public var Contacts_PermissionsKeepDisabled: String { return self._s[4046]! } + public func Channel_AdminLog_MessageRemovedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4045]!, self._r[4045]!, [_0]) + } + public var Contacts_PermissionsKeepDisabled: String { return self._s[4047]! } public func Call_ParticipantVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4047]!, self._r[4047]!, [_0]) + return formatWithArgumentRanges(self._s[4048]!, self._r[4048]!, [_0]) } - public var WatchRemote_AlertOpen: String { return self._s[4048]! } + public var WatchRemote_AlertOpen: String { return self._s[4049]! } public func PUSH_CHAT_ADD_MEMBER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4049]!, self._r[4049]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4050]!, self._r[4050]!, [_1, _2, _3]) } - public var Channel_Members_AddMembersHelp: String { return self._s[4050]! } - public var Shortcut_SwitchAccount: String { return self._s[4051]! } - public var Map_LiveLocationFor8Hours: String { return self._s[4052]! } + public var Channel_Members_AddMembersHelp: String { return self._s[4051]! } + public var Shortcut_SwitchAccount: String { return self._s[4052]! } + public var Map_LiveLocationFor8Hours: String { return self._s[4053]! } public func AutoNightTheme_AutomaticHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4053]!, self._r[4053]!, [_0]) + return formatWithArgumentRanges(self._s[4054]!, self._r[4054]!, [_0]) } - public var Compose_NewGroupTitle: String { return self._s[4054]! } - public var DialogList_You: String { return self._s[4055]! } - public var ReportPeer_ReasonViolence: String { return self._s[4056]! } + public var Compose_NewGroupTitle: String { return self._s[4055]! } + public var DialogList_You: String { return self._s[4056]! } + public var ReportPeer_ReasonViolence: String { return self._s[4057]! } public func PUSH_CHANNEL_MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4057]!, self._r[4057]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4058]!, self._r[4058]!, [_1, _2]) } - public var KeyCommand_ScrollDown: String { return self._s[4061]! } - public var ChatSettings_DownloadInBackground: String { return self._s[4062]! } - public var Wallpaper_ResetWallpapers: String { return self._s[4063]! } - public var Channel_BanList_RestrictedTitle: String { return self._s[4064]! } - public var ArchivedChats_IntroText3: String { return self._s[4065]! } - public var HashtagSearch_AllChats: String { return self._s[4067]! } - public var Channel_Info_BlackList: String { return self._s[4069]! } - public var Contacts_SearchUsersAndGroupsLabel: String { return self._s[4070]! } - public var PrivacyPhoneNumberSettings_DiscoveryHeader: String { return self._s[4071]! } - public var Paint_Neon: String { return self._s[4073]! } - public var SettingsSearch_Synonyms_AppLanguage: String { return self._s[4074]! } - public var AutoDownloadSettings_AutoDownload: String { return self._s[4075]! } + public var KeyCommand_ScrollDown: String { return self._s[4062]! } + public var ChatSettings_DownloadInBackground: String { return self._s[4063]! } + public var Wallpaper_ResetWallpapers: String { return self._s[4064]! } + public var Channel_BanList_RestrictedTitle: String { return self._s[4065]! } + public var ArchivedChats_IntroText3: String { return self._s[4066]! } + public var HashtagSearch_AllChats: String { return self._s[4068]! } + public var Channel_Info_BlackList: String { return self._s[4070]! } + public var Contacts_SearchUsersAndGroupsLabel: String { return self._s[4071]! } + public var PrivacyPhoneNumberSettings_DiscoveryHeader: String { return self._s[4072]! } + public var Paint_Neon: String { return self._s[4074]! } + public var SettingsSearch_Synonyms_AppLanguage: String { return self._s[4075]! } + public var AutoDownloadSettings_AutoDownload: String { return self._s[4076]! } public func Notification_PinnedVideoMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4077]!, self._r[4077]!, [_0]) + return formatWithArgumentRanges(self._s[4078]!, self._r[4078]!, [_0]) } - public var Map_StopLiveLocation: String { return self._s[4078]! } - public var SettingsSearch_Synonyms_Data_SaveEditedPhotos: String { return self._s[4079]! } - public var Channel_Username_InvalidCharacters: String { return self._s[4080]! } - public var InstantPage_Reference: String { return self._s[4081]! } - public var ChatList_HideAction: String { return self._s[4083]! } - public var Conversation_FileICloudDrive: String { return self._s[4085]! } + public var Map_StopLiveLocation: String { return self._s[4079]! } + public var SettingsSearch_Synonyms_Data_SaveEditedPhotos: String { return self._s[4080]! } + public var Channel_Username_InvalidCharacters: String { return self._s[4081]! } + public var InstantPage_Reference: String { return self._s[4082]! } + public var ChatList_HideAction: String { return self._s[4084]! } + public var Conversation_FileICloudDrive: String { return self._s[4086]! } public func PUSH_PINNED_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4086]!, self._r[4086]!, [_1]) + return formatWithArgumentRanges(self._s[4087]!, self._r[4087]!, [_1]) } - public var Passport_PasswordReset: String { return self._s[4088]! } - public var ChatList_Context_UnhideArchive: String { return self._s[4090]! } - public var ConvertToSupergroup_HelpText: String { return self._s[4091]! } - public var Calls_AddTab: String { return self._s[4092]! } - public var TwoStepAuth_ConfirmEmailResendCode: String { return self._s[4093]! } - public var SettingsSearch_Synonyms_Stickers_SuggestStickers: String { return self._s[4094]! } - public var Privacy_GroupsAndChannels: String { return self._s[4096]! } - public var AutoNightTheme_Disabled: String { return self._s[4097]! } - public var CreatePoll_MultipleChoice: String { return self._s[4098]! } + public var Passport_PasswordReset: String { return self._s[4089]! } + public var ChatList_Context_UnhideArchive: String { return self._s[4091]! } + public var ConvertToSupergroup_HelpText: String { return self._s[4092]! } + public var Calls_AddTab: String { return self._s[4093]! } + public var TwoStepAuth_ConfirmEmailResendCode: String { return self._s[4094]! } + public var SettingsSearch_Synonyms_Stickers_SuggestStickers: String { return self._s[4095]! } + public var Privacy_GroupsAndChannels: String { return self._s[4097]! } + public var AutoNightTheme_Disabled: String { return self._s[4098]! } + public var CreatePoll_MultipleChoice: String { return self._s[4099]! } public func PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4099]!, self._r[4099]!, [_1]) + return formatWithArgumentRanges(self._s[4100]!, self._r[4100]!, [_1]) } - public var Watch_Bot_Restart: String { return self._s[4101]! } + public var Watch_Bot_Restart: String { return self._s[4102]! } public func Conversation_Kilobytes(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4102]!, self._r[4102]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[4103]!, self._r[4103]!, ["\(_0)"]) } - public var GroupInfo_ScamGroupWarning: String { return self._s[4103]! } - public var Conversation_EditingMessagePanelMedia: String { return self._s[4104]! } - public var Appearance_PreviewIncomingText: String { return self._s[4105]! } - public var Notifications_ChannelNotificationsExceptionsHelp: String { return self._s[4106]! } - public var ChatList_UndoArchiveRevealedTitle: String { return self._s[4108]! } - public var Stats_GroupOverview: String { return self._s[4110]! } - public var ScheduledMessages_EditTime: String { return self._s[4112]! } - public var Month_GenFebruary: String { return self._s[4113]! } - public var ChatList_AutoarchiveSuggestion_OpenSettings: String { return self._s[4114]! } - public var Stickers_ClearRecent: String { return self._s[4115]! } - public var TwoStepAuth_EnterPasswordPassword: String { return self._s[4116]! } + public var GroupInfo_ScamGroupWarning: String { return self._s[4104]! } + public var Conversation_EditingMessagePanelMedia: String { return self._s[4105]! } + public var Appearance_PreviewIncomingText: String { return self._s[4106]! } + public var Notifications_ChannelNotificationsExceptionsHelp: String { return self._s[4107]! } + public var ChatList_UndoArchiveRevealedTitle: String { return self._s[4109]! } + public var Stats_GroupOverview: String { return self._s[4111]! } + public var ScheduledMessages_EditTime: String { return self._s[4114]! } + public var Month_GenFebruary: String { return self._s[4115]! } + public var ChatList_AutoarchiveSuggestion_OpenSettings: String { return self._s[4116]! } + public var Stickers_ClearRecent: String { return self._s[4117]! } + public var TwoStepAuth_EnterPasswordPassword: String { return self._s[4118]! } public func Checkout_PayPrice(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4117]!, self._r[4117]!, [_0]) + return formatWithArgumentRanges(self._s[4119]!, self._r[4119]!, [_0]) } - public var Login_TermsOfServiceSignupDecline: String { return self._s[4118]! } - public var CheckoutInfo_ErrorCityInvalid: String { return self._s[4119]! } - public var VoiceOver_Chat_PlayHint: String { return self._s[4120]! } - public var ChatAdmins_AllMembersAreAdminsOffHelp: String { return self._s[4121]! } - public var CheckoutInfo_ShippingInfoTitle: String { return self._s[4123]! } - public var CreatePoll_Create: String { return self._s[4124]! } - public var ChatList_Search_FilterLinks: String { return self._s[4125]! } - public var Your_cards_number_is_invalid: String { return self._s[4126]! } - public var Month_ShortApril: String { return self._s[4127]! } - public var SocksProxySetup_UseForCalls: String { return self._s[4128]! } - public var Conversation_EditingCaptionPanelTitle: String { return self._s[4129]! } - public var SocksProxySetup_Status: String { return self._s[4130]! } - public var ChannelInfo_DeleteGroupConfirmation: String { return self._s[4131]! } - public var ChatListFolder_CategoryBots: String { return self._s[4132]! } - public var Passport_FieldIdentitySelfieHelp: String { return self._s[4134]! } - public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[4135]! } - public var Wallpaper_ResetWallpapersInfo: String { return self._s[4136]! } - public var Conversation_TitleUnmute: String { return self._s[4137]! } - public var Group_Setup_TypeHeader: String { return self._s[4138]! } - public var Stats_ViewsPerPost: String { return self._s[4139]! } - public var CheckoutInfo_ShippingInfoCountry: String { return self._s[4140]! } - public var Passport_Identity_TranslationHelp: String { return self._s[4141]! } + public var Login_TermsOfServiceSignupDecline: String { return self._s[4120]! } + public var CheckoutInfo_ErrorCityInvalid: String { return self._s[4121]! } + public var VoiceOver_Chat_PlayHint: String { return self._s[4122]! } + public var ChatAdmins_AllMembersAreAdminsOffHelp: String { return self._s[4123]! } + public var CheckoutInfo_ShippingInfoTitle: String { return self._s[4125]! } + public var CreatePoll_Create: String { return self._s[4126]! } + public var ChatList_Search_FilterLinks: String { return self._s[4127]! } + public var Your_cards_number_is_invalid: String { return self._s[4128]! } + public var Month_ShortApril: String { return self._s[4129]! } + public var SocksProxySetup_UseForCalls: String { return self._s[4130]! } + public var Conversation_EditingCaptionPanelTitle: String { return self._s[4131]! } + public var SocksProxySetup_Status: String { return self._s[4132]! } + public var ChannelInfo_DeleteGroupConfirmation: String { return self._s[4133]! } + public var ChatListFolder_CategoryBots: String { return self._s[4134]! } + public var Passport_FieldIdentitySelfieHelp: String { return self._s[4136]! } + public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[4137]! } + public var Wallpaper_ResetWallpapersInfo: String { return self._s[4138]! } + public var Conversation_TitleUnmute: String { return self._s[4139]! } + public var Group_Setup_TypeHeader: String { return self._s[4140]! } + public var Stats_ViewsPerPost: String { return self._s[4141]! } + public var CheckoutInfo_ShippingInfoCountry: String { return self._s[4142]! } + public var Passport_Identity_TranslationHelp: String { return self._s[4143]! } public func PUSH_CHANNEL_MESSAGE_FWD(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4142]!, self._r[4142]!, [_1]) + return formatWithArgumentRanges(self._s[4144]!, self._r[4144]!, [_1]) } - public var GroupInfo_Administrators_Title: String { return self._s[4143]! } + public var GroupInfo_Administrators_Title: String { return self._s[4145]! } public func Channel_AdminLog_MessageRankName(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4144]!, self._r[4144]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4146]!, self._r[4146]!, [_1, _2]) } public func PUSH_CHAT_MESSAGE_POLL(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4145]!, self._r[4145]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4147]!, self._r[4147]!, [_1, _2, _3]) } - public var Wallet_Receive_Title: String { return self._s[4146]! } - public var CheckoutInfo_ShippingInfoState: String { return self._s[4147]! } - public var Passport_Language_my: String { return self._s[4149]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[4150]! } - public var Map_PlacesNearby: String { return self._s[4151]! } - public var Channel_About_Help: String { return self._s[4152]! } - public var LogoutOptions_AddAccountTitle: String { return self._s[4153]! } - public var ChatSettings_AutomaticAudioDownload: String { return self._s[4154]! } - public var Channel_Username_Title: String { return self._s[4155]! } - public var Activity_RecordingVideoMessage: String { return self._s[4156]! } + public var Wallet_Receive_Title: String { return self._s[4148]! } + public var CheckoutInfo_ShippingInfoState: String { return self._s[4149]! } + public var Passport_Language_my: String { return self._s[4151]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[4152]! } + public var Map_PlacesNearby: String { return self._s[4153]! } + public var Channel_About_Help: String { return self._s[4154]! } + public var LogoutOptions_AddAccountTitle: String { return self._s[4155]! } + public var ChatSettings_AutomaticAudioDownload: String { return self._s[4156]! } + public var Channel_Username_Title: String { return self._s[4157]! } + public var Activity_RecordingVideoMessage: String { return self._s[4158]! } public func StickerPackActionInfo_RemovedText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4157]!, self._r[4157]!, [_0]) + return formatWithArgumentRanges(self._s[4159]!, self._r[4159]!, [_0]) } - public var CheckoutInfo_ShippingInfoCity: String { return self._s[4158]! } - public var Passport_DiscardMessageDescription: String { return self._s[4159]! } - public var Conversation_LinkDialogOpen: String { return self._s[4160]! } - public var ChatList_Context_HideArchive: String { return self._s[4161]! } + public var CheckoutInfo_ShippingInfoCity: String { return self._s[4160]! } + public var Passport_DiscardMessageDescription: String { return self._s[4161]! } + public var Conversation_LinkDialogOpen: String { return self._s[4162]! } + public var ChatList_Context_HideArchive: String { return self._s[4163]! } public func Message_AuthorPinnedGame(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4162]!, self._r[4162]!, [_0]) + return formatWithArgumentRanges(self._s[4164]!, self._r[4164]!, [_0]) } - public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[4163]! } - public var Conversation_Admin: String { return self._s[4164]! } - public var DialogList_TabTitle: String { return self._s[4165]! } + public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[4165]! } + public var Conversation_Admin: String { return self._s[4166]! } + public var DialogList_TabTitle: String { return self._s[4167]! } public func PUSH_CHAT_ALBUM(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4166]!, self._r[4166]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4168]!, self._r[4168]!, [_1, _2]) } - public var Notifications_PermissionsUnreachableText: String { return self._s[4167]! } - public var Passport_Identity_GenderMale: String { return self._s[4169]! } - public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[4171]! } - public var PhoneNumberHelp_Alert: String { return self._s[4172]! } - public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[4173]! } - public var Notifications_InAppNotifications: String { return self._s[4174]! } + public var Notifications_PermissionsUnreachableText: String { return self._s[4169]! } + public var Passport_Identity_GenderMale: String { return self._s[4171]! } + public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[4173]! } + public var PhoneNumberHelp_Alert: String { return self._s[4174]! } + public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[4175]! } + public var Notifications_InAppNotifications: String { return self._s[4176]! } public func Update_AppVersion(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4175]!, self._r[4175]!, [_0]) + return formatWithArgumentRanges(self._s[4177]!, self._r[4177]!, [_0]) } - public var Notification_VideoCallOutgoing: String { return self._s[4176]! } - public var Login_InvalidCodeError: String { return self._s[4177]! } - public var Conversation_PrivateChannelTimeLimitedAlertJoin: String { return self._s[4178]! } + public var Notification_VideoCallOutgoing: String { return self._s[4178]! } + public var Login_InvalidCodeError: String { return self._s[4179]! } + public var Conversation_PrivateChannelTimeLimitedAlertJoin: String { return self._s[4180]! } public func LastSeen_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4179]!, self._r[4179]!, [_0]) + return formatWithArgumentRanges(self._s[4181]!, self._r[4181]!, [_0]) } - public var Conversation_InputTextCaptionPlaceholder: String { return self._s[4180]! } - public var ReportPeer_Report: String { return self._s[4181]! } - public var Camera_FlashOff: String { return self._s[4183]! } - public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[4186]! } - public var PrivacyPolicy_DeclineTitle: String { return self._s[4188]! } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndTouchId: String { return self._s[4189]! } - public var Passport_FieldEmail: String { return self._s[4190]! } + public var Conversation_InputTextCaptionPlaceholder: String { return self._s[4182]! } + public var ReportPeer_Report: String { return self._s[4183]! } + public var Camera_FlashOff: String { return self._s[4185]! } + public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[4188]! } + public var PrivacyPolicy_DeclineTitle: String { return self._s[4190]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndTouchId: String { return self._s[4191]! } + public var Passport_FieldEmail: String { return self._s[4192]! } public func Channel_AdminLog_MessageKickedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4191]!, self._r[4191]!, [_1]) + return formatWithArgumentRanges(self._s[4193]!, self._r[4193]!, [_1]) } - public var Notifications_ExceptionsResetToDefaults: String { return self._s[4192]! } - public var PeerInfo_PaneVoiceAndVideo: String { return self._s[4193]! } - public var Group_OwnershipTransfer_Title: String { return self._s[4194]! } - public var Conversation_DefaultRestrictedInline: String { return self._s[4195]! } - public var Login_PhoneNumberHelp: String { return self._s[4197]! } - public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[4198]! } - public var Conversation_PinnedQuiz: String { return self._s[4199]! } - public var CreateGroup_SoftUserLimitAlert: String { return self._s[4200]! } - public var Login_PhoneNumberAlreadyAuthorizedSwitch: String { return self._s[4201]! } - public var Group_MessagePhotoUpdated: String { return self._s[4202]! } - public var LoginPassword_PasswordPlaceholder: String { return self._s[4203]! } - public var Passport_Identity_Translations: String { return self._s[4205]! } - public var ChatAdmins_AllMembersAreAdmins: String { return self._s[4206]! } - public var ChannelInfo_DeleteChannel: String { return self._s[4208]! } - public var PasscodeSettings_HelpBottom: String { return self._s[4209]! } - public var Channel_Members_AddMembers: String { return self._s[4210]! } - public var AutoDownloadSettings_LastDelimeter: String { return self._s[4211]! } - public var Notification_Exceptions_DeleteAllConfirmation: String { return self._s[4213]! } - public var Conversation_HoldForAudio: String { return self._s[4214]! } - public var Watch_LastSeen_Lately: String { return self._s[4216]! } - public var ChatList_Context_MarkAsRead: String { return self._s[4217]! } - public var Conversation_PinnedMessage: String { return self._s[4218]! } - public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[4219]! } - public var Passport_UpdateRequiredError: String { return self._s[4221]! } - public var PrivacySettings_Passcode: String { return self._s[4222]! } + public var Notifications_ExceptionsResetToDefaults: String { return self._s[4194]! } + public var PeerInfo_PaneVoiceAndVideo: String { return self._s[4195]! } + public var Group_OwnershipTransfer_Title: String { return self._s[4196]! } + public var Conversation_DefaultRestrictedInline: String { return self._s[4197]! } + public var Login_PhoneNumberHelp: String { return self._s[4199]! } + public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[4200]! } + public var Conversation_PinnedQuiz: String { return self._s[4201]! } + public var CreateGroup_SoftUserLimitAlert: String { return self._s[4202]! } + public var Login_PhoneNumberAlreadyAuthorizedSwitch: String { return self._s[4203]! } + public var Group_MessagePhotoUpdated: String { return self._s[4204]! } + public var LoginPassword_PasswordPlaceholder: String { return self._s[4205]! } + public var Passport_Identity_Translations: String { return self._s[4207]! } + public var ChatAdmins_AllMembersAreAdmins: String { return self._s[4208]! } + public var ChannelInfo_DeleteChannel: String { return self._s[4210]! } + public var PasscodeSettings_HelpBottom: String { return self._s[4211]! } + public var Channel_Members_AddMembers: String { return self._s[4212]! } + public var AutoDownloadSettings_LastDelimeter: String { return self._s[4213]! } + public var Notification_Exceptions_DeleteAllConfirmation: String { return self._s[4215]! } + public var Conversation_HoldForAudio: String { return self._s[4216]! } + public var Watch_LastSeen_Lately: String { return self._s[4218]! } + public var ChatList_Context_MarkAsRead: String { return self._s[4219]! } + public var Conversation_PinnedMessage: String { return self._s[4220]! } + public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[4221]! } + public var Passport_UpdateRequiredError: String { return self._s[4223]! } + public var PrivacySettings_Passcode: String { return self._s[4224]! } public func Call_EmojiDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4223]!, self._r[4223]!, [_0]) + return formatWithArgumentRanges(self._s[4225]!, self._r[4225]!, [_0]) } - public var AutoNightTheme_NotAvailable: String { return self._s[4224]! } - public var Conversation_PressVolumeButtonForSound: String { return self._s[4225]! } - public var LoginPassword_InvalidPasswordError: String { return self._s[4226]! } - public var ChatListFolder_IncludedSectionHeader: String { return self._s[4227]! } - public var Channel_SignMessages_Help: String { return self._s[4228]! } - public var ChatList_DeleteForEveryoneConfirmationTitle: String { return self._s[4229]! } - public var Conversation_TitleNoComments: String { return self._s[4230]! } - public var MediaPicker_LivePhotoDescription: String { return self._s[4231]! } - public var GroupInfo_Permissions: String { return self._s[4232]! } - public var GroupPermission_NoSendLinks: String { return self._s[4235]! } - public var Passport_Identity_ResidenceCountry: String { return self._s[4236]! } - public var Appearance_ThemeCarouselNightBlue: String { return self._s[4238]! } - public var ChatList_ArchiveAction: String { return self._s[4239]! } + public var AutoNightTheme_NotAvailable: String { return self._s[4226]! } + public var Conversation_PressVolumeButtonForSound: String { return self._s[4227]! } + public var LoginPassword_InvalidPasswordError: String { return self._s[4228]! } + public var ChatListFolder_IncludedSectionHeader: String { return self._s[4229]! } + public var Channel_SignMessages_Help: String { return self._s[4230]! } + public var ChatList_DeleteForEveryoneConfirmationTitle: String { return self._s[4231]! } + public var Conversation_TitleNoComments: String { return self._s[4232]! } + public var MediaPicker_LivePhotoDescription: String { return self._s[4233]! } + public var GroupInfo_Permissions: String { return self._s[4234]! } + public var GroupPermission_NoSendLinks: String { return self._s[4237]! } + public var Passport_Identity_ResidenceCountry: String { return self._s[4238]! } + public var Appearance_ThemeCarouselNightBlue: String { return self._s[4240]! } + public var ChatList_ArchiveAction: String { return self._s[4241]! } public func Channel_AdminLog_DisabledSlowmode(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4240]!, self._r[4240]!, [_0]) + return formatWithArgumentRanges(self._s[4242]!, self._r[4242]!, [_0]) } - public var GroupInfo_GroupHistory: String { return self._s[4241]! } + public var GroupInfo_GroupHistory: String { return self._s[4243]! } public func Channel_Management_ErrorNotMember(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4243]!, self._r[4243]!, [_0]) + return formatWithArgumentRanges(self._s[4245]!, self._r[4245]!, [_0]) } - public var Privacy_Forwards_LinkIfAllowed: String { return self._s[4245]! } - public var Channel_Info_Banned: String { return self._s[4246]! } - public var Paint_RecentStickers: String { return self._s[4247]! } - public var VoiceOver_MessageContextSend: String { return self._s[4248]! } - public var Group_ErrorNotMutualContact: String { return self._s[4249]! } - public var ReportPeer_ReasonOther: String { return self._s[4251]! } - public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[4252]! } - public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[4254]! } - public var KeyCommand_Find: String { return self._s[4255]! } + public var Privacy_Forwards_LinkIfAllowed: String { return self._s[4247]! } + public var Channel_Info_Banned: String { return self._s[4248]! } + public var Paint_RecentStickers: String { return self._s[4249]! } + public var VoiceOver_MessageContextSend: String { return self._s[4250]! } + public var Group_ErrorNotMutualContact: String { return self._s[4251]! } + public var ReportPeer_ReasonOther: String { return self._s[4253]! } + public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[4254]! } + public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[4256]! } + public var KeyCommand_Find: String { return self._s[4257]! } public func Channel_MessageTitleUpdated(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4256]!, self._r[4256]!, [_0]) + return formatWithArgumentRanges(self._s[4258]!, self._r[4258]!, [_0]) } - public var ChatList_Context_Unmute: String { return self._s[4257]! } - public var Chat_SlowmodeAttachmentLimitReached: String { return self._s[4258]! } - public var Stickers_GroupStickersHelp: String { return self._s[4259]! } - public var Wallet_Configuration_BlockchainIdPlaceholder: String { return self._s[4260]! } - public var Checkout_Title: String { return self._s[4261]! } - public var Activity_RecordingAudio: String { return self._s[4262]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[4263]! } - public var BlockedUsers_BlockTitle: String { return self._s[4264]! } - public var Wallet_Month_ShortFebruary: String { return self._s[4266]! } - public var Calls_All: String { return self._s[4267]! } - public var DialogList_SavedMessagesHelp: String { return self._s[4269]! } - public var Settings_FAQ_Button: String { return self._s[4270]! } + public var ChatList_Context_Unmute: String { return self._s[4259]! } + public var Chat_SlowmodeAttachmentLimitReached: String { return self._s[4260]! } + public var Stickers_GroupStickersHelp: String { return self._s[4261]! } + public var Wallet_Configuration_BlockchainIdPlaceholder: String { return self._s[4262]! } + public var Checkout_Title: String { return self._s[4263]! } + public var Activity_RecordingAudio: String { return self._s[4264]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[4265]! } + public var BlockedUsers_BlockTitle: String { return self._s[4266]! } + public var Wallet_Month_ShortFebruary: String { return self._s[4268]! } + public var Calls_All: String { return self._s[4269]! } + public var DialogList_SavedMessagesHelp: String { return self._s[4271]! } + public var Settings_FAQ_Button: String { return self._s[4272]! } public func Time_MonthOfYear_m5(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4272]!, self._r[4272]!, [_0]) + return formatWithArgumentRanges(self._s[4274]!, self._r[4274]!, [_0]) } - public var Conversation_ReportGroupLocation: String { return self._s[4273]! } - public var Passport_Scans_Upload: String { return self._s[4274]! } - public var Channel_EditAdmin_PermissionPinMessages: String { return self._s[4276]! } - public var ChatList_UnarchiveAction: String { return self._s[4277]! } - public var Stats_GroupTopInviter_History: String { return self._s[4278]! } - public var GroupInfo_Permissions_Title: String { return self._s[4279]! } - public var Passport_Language_el: String { return self._s[4280]! } + public var Conversation_ReportGroupLocation: String { return self._s[4275]! } + public var Passport_Scans_Upload: String { return self._s[4276]! } + public var Channel_EditAdmin_PermissionPinMessages: String { return self._s[4278]! } + public var ChatList_UnarchiveAction: String { return self._s[4279]! } + public var Stats_GroupTopInviter_History: String { return self._s[4280]! } + public var GroupInfo_Permissions_Title: String { return self._s[4281]! } + public var Passport_Language_el: String { return self._s[4282]! } public func Wallet_Time_PreciseDate_m4(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4281]!, self._r[4281]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4283]!, self._r[4283]!, [_1, _2, _3]) } - public var Channel_DiscussionMessageUnavailable: String { return self._s[4282]! } - public var GroupInfo_ActionPromote: String { return self._s[4283]! } - public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[4284]! } + public var Channel_DiscussionMessageUnavailable: String { return self._s[4284]! } + public var GroupInfo_ActionPromote: String { return self._s[4285]! } + public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[4286]! } public func TwoStepAuth_PendingEmailHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4285]!, self._r[4285]!, [_0]) + return formatWithArgumentRanges(self._s[4287]!, self._r[4287]!, [_0]) } - public var VoiceOver_Chat_Reply: String { return self._s[4286]! } - public var Month_GenMay: String { return self._s[4287]! } - public var DialogList_DeleteBotConversationConfirmation: String { return self._s[4288]! } - public var Chat_PsaTooltip_covid: String { return self._s[4289]! } - public var Watch_Suggestion_CantTalk: String { return self._s[4290]! } - public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[4291]! } - public var AppUpgrade_Running: String { return self._s[4292]! } - public var PasscodeSettings_UnlockWithFaceId: String { return self._s[4295]! } - public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[4296]! } - public var SharedMedia_EmptyText: String { return self._s[4297]! } - public var Passport_Address_EditResidentialAddress: String { return self._s[4298]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[4299]! } - public var Message_PinnedGame: String { return self._s[4300]! } - public var KeyCommand_SearchInChat: String { return self._s[4301]! } - public var Appearance_ThemeCarouselNewNight: String { return self._s[4302]! } - public var ChatList_Search_FilterMedia: String { return self._s[4303]! } - public var Message_PinnedAudioMessage: String { return self._s[4304]! } - public var ChannelInfo_ConfirmLeave: String { return self._s[4305]! } + public var VoiceOver_Chat_Reply: String { return self._s[4288]! } + public var Month_GenMay: String { return self._s[4289]! } + public var DialogList_DeleteBotConversationConfirmation: String { return self._s[4290]! } + public var Chat_PsaTooltip_covid: String { return self._s[4291]! } + public var Watch_Suggestion_CantTalk: String { return self._s[4292]! } + public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[4293]! } + public var AppUpgrade_Running: String { return self._s[4294]! } + public var PasscodeSettings_UnlockWithFaceId: String { return self._s[4297]! } + public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[4298]! } + public var SharedMedia_EmptyText: String { return self._s[4299]! } + public var Passport_Address_EditResidentialAddress: String { return self._s[4300]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[4301]! } + public var Message_PinnedGame: String { return self._s[4302]! } + public var KeyCommand_SearchInChat: String { return self._s[4303]! } + public var Appearance_ThemeCarouselNewNight: String { return self._s[4304]! } + public var ChatList_Search_FilterMedia: String { return self._s[4305]! } + public var Message_PinnedAudioMessage: String { return self._s[4306]! } + public var ChannelInfo_ConfirmLeave: String { return self._s[4307]! } public func Channel_AdminLog_MessagePromotedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4306]!, self._r[4306]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4308]!, self._r[4308]!, [_1, _2]) } - public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[4307]! } + public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[4309]! } public func Passport_Email_CodeHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4308]!, self._r[4308]!, [_0]) - } - public var Wallet_Receive_AddressCopied: String { return self._s[4309]! } - public func Message_PinnedTextMessage(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4310]!, self._r[4310]!, [_0]) } - public var Settings_AddAccount: String { return self._s[4311]! } - public var Channel_AdminLog_CanDeleteMessages: String { return self._s[4312]! } - public var Conversation_DiscardVoiceMessageTitle: String { return self._s[4313]! } - public var Channel_JoinChannel: String { return self._s[4314]! } - public var Watch_UserInfo_Unblock: String { return self._s[4315]! } - public var PhoneLabel_Title: String { return self._s[4316]! } - public var Group_Setup_HistoryHiddenHelp: String { return self._s[4318]! } - public var Privacy_ProfilePhoto_AlwaysShareWith_Title: String { return self._s[4319]! } + public var Wallet_Receive_AddressCopied: String { return self._s[4311]! } + public func Message_PinnedTextMessage(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4312]!, self._r[4312]!, [_0]) + } + public var Settings_AddAccount: String { return self._s[4313]! } + public var Channel_AdminLog_CanDeleteMessages: String { return self._s[4314]! } + public var Conversation_DiscardVoiceMessageTitle: String { return self._s[4315]! } + public var Channel_JoinChannel: String { return self._s[4316]! } + public var Watch_UserInfo_Unblock: String { return self._s[4317]! } + public var PhoneLabel_Title: String { return self._s[4318]! } + public var Group_Setup_HistoryHiddenHelp: String { return self._s[4320]! } + public var Privacy_ProfilePhoto_AlwaysShareWith_Title: String { return self._s[4321]! } public func Login_PhoneGenericEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String, _ _6: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4320]!, self._r[4320]!, [_1, _2, _3, _4, _5, _6]) + return formatWithArgumentRanges(self._s[4322]!, self._r[4322]!, [_1, _2, _3, _4, _5, _6]) } - public var Wallet_Month_GenOctober: String { return self._s[4321]! } - public var Channel_AddBotErrorHaveRights: String { return self._s[4322]! } - public var ChatList_TabIconFoldersTooltipNonEmptyFolders: String { return self._s[4323]! } - public var DialogList_EncryptionProcessing: String { return self._s[4324]! } - public var ChatList_Search_FilterChats: String { return self._s[4325]! } - public var WatchRemote_NotificationText: String { return self._s[4326]! } - public var EditTheme_ChangeColors: String { return self._s[4327]! } - public var GroupRemoved_ViewUserInfo: String { return self._s[4328]! } - public var Wallet_TransactionInfo_RecipientHeader: String { return self._s[4329]! } - public var CallSettings_OnMobile: String { return self._s[4331]! } - public var Month_ShortFebruary: String { return self._s[4333]! } - public var VoiceOver_MessageContextReply: String { return self._s[4334]! } + public var Wallet_Month_GenOctober: String { return self._s[4323]! } + public var Channel_AddBotErrorHaveRights: String { return self._s[4324]! } + public var ChatList_TabIconFoldersTooltipNonEmptyFolders: String { return self._s[4325]! } + public var DialogList_EncryptionProcessing: String { return self._s[4326]! } + public var ChatList_Search_FilterChats: String { return self._s[4327]! } + public var WatchRemote_NotificationText: String { return self._s[4328]! } + public var EditTheme_ChangeColors: String { return self._s[4329]! } + public var GroupRemoved_ViewUserInfo: String { return self._s[4330]! } + public var Wallet_TransactionInfo_RecipientHeader: String { return self._s[4331]! } + public var CallSettings_OnMobile: String { return self._s[4333]! } + public var Month_ShortFebruary: String { return self._s[4335]! } + public var VoiceOver_MessageContextReply: String { return self._s[4336]! } public func PUSH_VIDEO_CALL_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4335]!, self._r[4335]!, [_1]) + return formatWithArgumentRanges(self._s[4337]!, self._r[4337]!, [_1]) } - public var Group_Location_ChangeLocation: String { return self._s[4336]! } - public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[4337]! } - public var Wallet_Send_EncryptComment: String { return self._s[4338]! } - public var VoiceOver_Media_PlaybackStop: String { return self._s[4339]! } - public var SettingsSearch_Synonyms_Data_SaveIncomingPhotos: String { return self._s[4340]! } + public var Group_Location_ChangeLocation: String { return self._s[4338]! } + public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[4339]! } + public var Wallet_Send_EncryptComment: String { return self._s[4340]! } + public var VoiceOver_Media_PlaybackStop: String { return self._s[4341]! } + public var SettingsSearch_Synonyms_Data_SaveIncomingPhotos: String { return self._s[4342]! } public func Channel_AdminLog_MessageRestrictedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4342]!, self._r[4342]!, [_0]) + return formatWithArgumentRanges(self._s[4344]!, self._r[4344]!, [_0]) } - public var PhotoEditor_WarmthTool: String { return self._s[4343]! } - public var Login_InfoAvatarPhoto: String { return self._s[4344]! } - public var Notification_Exceptions_NewException_MessagePreviewHeader: String { return self._s[4345]! } - public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[4346]! } - public var Map_PlacesInThisArea: String { return self._s[4347]! } - public var VoiceOver_Chat_ContactEmail: String { return self._s[4348]! } - public var Notifications_InAppNotificationsSounds: String { return self._s[4349]! } + public var PhotoEditor_WarmthTool: String { return self._s[4345]! } + public var Login_InfoAvatarPhoto: String { return self._s[4346]! } + public var Notification_Exceptions_NewException_MessagePreviewHeader: String { return self._s[4347]! } + public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[4348]! } + public var Map_PlacesInThisArea: String { return self._s[4349]! } + public var VoiceOver_Chat_ContactEmail: String { return self._s[4350]! } + public var Notifications_InAppNotificationsSounds: String { return self._s[4351]! } public func PUSH_PINNED_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4350]!, self._r[4350]!, [_1]) + return formatWithArgumentRanges(self._s[4352]!, self._r[4352]!, [_1]) } - public var ShareMenu_Send: String { return self._s[4351]! } - public var Username_InvalidStartsWithNumber: String { return self._s[4352]! } - public var Appearance_AppIconClassicX: String { return self._s[4353]! } + public var ShareMenu_Send: String { return self._s[4353]! } + public var Username_InvalidStartsWithNumber: String { return self._s[4354]! } + public var Appearance_AppIconClassicX: String { return self._s[4355]! } public func PUSH_CHANNEL_MESSAGE_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4354]!, self._r[4354]!, [_1]) + return formatWithArgumentRanges(self._s[4356]!, self._r[4356]!, [_1]) } - public var Conversation_StopPoll: String { return self._s[4355]! } - public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[4357]! } - public var Passport_Identity_EditIdentityCard: String { return self._s[4358]! } - public var Appearance_ThemePreview_ChatList_3_Name: String { return self._s[4359]! } - public var Wallet_WordCheck_Title: String { return self._s[4360]! } - public var Conversation_Timer_Title: String { return self._s[4361]! } - public var Common_Next: String { return self._s[4362]! } - public var Notification_Exceptions_NewException: String { return self._s[4363]! } + public var Conversation_StopPoll: String { return self._s[4357]! } + public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[4359]! } + public var Passport_Identity_EditIdentityCard: String { return self._s[4360]! } + public var Appearance_ThemePreview_ChatList_3_Name: String { return self._s[4361]! } + public var Wallet_WordCheck_Title: String { return self._s[4362]! } + public var Conversation_Timer_Title: String { return self._s[4363]! } + public var Common_Next: String { return self._s[4364]! } + public var Notification_Exceptions_NewException: String { return self._s[4365]! } public func Generic_OpenHiddenLinkAlert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4364]!, self._r[4364]!, [_0]) + return formatWithArgumentRanges(self._s[4366]!, self._r[4366]!, [_0]) } - public var AccessDenied_CallMicrophone: String { return self._s[4365]! } - public var SettingsSearch_Synonyms_Data_AutoDownloadUsingCellular: String { return self._s[4366]! } - public var ChangePhoneNumberCode_Help: String { return self._s[4367]! } - public var Passport_Identity_OneOfTypeIdentityCard: String { return self._s[4368]! } - public var Channel_AdminLogFilter_EventsLeaving: String { return self._s[4369]! } - public var BlockedUsers_LeavePrefix: String { return self._s[4370]! } + public var AccessDenied_CallMicrophone: String { return self._s[4367]! } + public var SettingsSearch_Synonyms_Data_AutoDownloadUsingCellular: String { return self._s[4368]! } + public var ChangePhoneNumberCode_Help: String { return self._s[4369]! } + public var Passport_Identity_OneOfTypeIdentityCard: String { return self._s[4370]! } + public var Channel_AdminLogFilter_EventsLeaving: String { return self._s[4371]! } + public var BlockedUsers_LeavePrefix: String { return self._s[4372]! } public func Passport_RequestHeader(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4371]!, self._r[4371]!, [_0]) + return formatWithArgumentRanges(self._s[4373]!, self._r[4373]!, [_0]) } - public var Group_About_Help: String { return self._s[4372]! } - public var TwoStepAuth_ChangePasswordDescription: String { return self._s[4373]! } - public var Tour_Title3: String { return self._s[4374]! } - public var Watch_Conversation_Unblock: String { return self._s[4375]! } - public var Watch_UserInfo_Block: String { return self._s[4376]! } - public var Notifications_ChannelNotificationsAlert: String { return self._s[4377]! } - public var TwoFactorSetup_Hint_Action: String { return self._s[4378]! } - public var IntentsSettings_SuggestedChatsInfo: String { return self._s[4379]! } - public var Wallet_Alert_Cancel: String { return self._s[4380]! } - public var TextFormat_AddLinkTitle: String { return self._s[4381]! } - public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[4382]! } - public var TwoStepAuth_EnterPasswordTitle: String { return self._s[4383]! } - public var FastTwoStepSetup_PasswordSection: String { return self._s[4384]! } - public var Compose_ChannelMembers: String { return self._s[4385]! } - public var Conversation_ForwardTitle: String { return self._s[4386]! } + public var Group_About_Help: String { return self._s[4374]! } + public var TwoStepAuth_ChangePasswordDescription: String { return self._s[4375]! } + public var Tour_Title3: String { return self._s[4376]! } + public var Watch_Conversation_Unblock: String { return self._s[4377]! } + public var Watch_UserInfo_Block: String { return self._s[4378]! } + public var Notifications_ChannelNotificationsAlert: String { return self._s[4379]! } + public var TwoFactorSetup_Hint_Action: String { return self._s[4380]! } + public var IntentsSettings_SuggestedChatsInfo: String { return self._s[4381]! } + public var Wallet_Alert_Cancel: String { return self._s[4382]! } + public var TextFormat_AddLinkTitle: String { return self._s[4383]! } + public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[4384]! } + public var TwoStepAuth_EnterPasswordTitle: String { return self._s[4385]! } + public var FastTwoStepSetup_PasswordSection: String { return self._s[4386]! } + public var Compose_ChannelMembers: String { return self._s[4387]! } + public var Conversation_ForwardTitle: String { return self._s[4388]! } public func Wallet_Updated_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4387]!, self._r[4387]!, [_0]) + return formatWithArgumentRanges(self._s[4389]!, self._r[4389]!, [_0]) } - public var Conversation_PinnedPoll: String { return self._s[4389]! } + public var Conversation_PinnedPoll: String { return self._s[4391]! } public func VoiceOver_Chat_AnonymousPollFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4390]!, self._r[4390]!, [_0]) + return formatWithArgumentRanges(self._s[4392]!, self._r[4392]!, [_0]) } - public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[4391]! } - public var Conversation_ContextMenuStickerPackAdd: String { return self._s[4392]! } - public var Stats_Overview: String { return self._s[4393]! } - public var Map_HomeAndWorkTitle: String { return self._s[4394]! } - public var Wallet_Intro_Terms: String { return self._s[4395]! } + public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[4393]! } + public var Conversation_ContextMenuStickerPackAdd: String { return self._s[4394]! } + public var Stats_Overview: String { return self._s[4395]! } + public var Map_HomeAndWorkTitle: String { return self._s[4396]! } + public var Wallet_Intro_Terms: String { return self._s[4397]! } public func Time_PreciseDate_m4(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4396]!, self._r[4396]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4398]!, self._r[4398]!, [_1, _2, _3]) } - public var Passport_Address_CityPlaceholder: String { return self._s[4397]! } - public var InfoPlist_NSLocationAlwaysAndWhenInUseUsageDescription: String { return self._s[4398]! } - public var Privacy_PhoneNumber: String { return self._s[4399]! } - public var ChatList_Search_FilterFiles: String { return self._s[4400]! } - public var ChatList_DeleteForEveryoneConfirmationAction: String { return self._s[4401]! } - public var ChannelIntro_CreateChannel: String { return self._s[4402]! } - public var Conversation_InputTextAnonymousPlaceholder: String { return self._s[4403]! } + public var Passport_Address_CityPlaceholder: String { return self._s[4399]! } + public var InfoPlist_NSLocationAlwaysAndWhenInUseUsageDescription: String { return self._s[4400]! } + public var Privacy_PhoneNumber: String { return self._s[4401]! } + public var ChatList_Search_FilterFiles: String { return self._s[4402]! } + public var ChatList_DeleteForEveryoneConfirmationAction: String { return self._s[4403]! } + public var ChannelIntro_CreateChannel: String { return self._s[4404]! } + public var Conversation_InputTextAnonymousPlaceholder: String { return self._s[4405]! } public func Login_EmailCodeBody(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4404]!, self._r[4404]!, [_0]) + return formatWithArgumentRanges(self._s[4406]!, self._r[4406]!, [_0]) } - public var Weekday_ShortMonday: String { return self._s[4405]! } - public var Passport_Language_ar: String { return self._s[4407]! } - public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[4408]! } - public var TwoFactorSetup_Done_Title: String { return self._s[4409]! } - public var Calls_RatingFeedback: String { return self._s[4410]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsPreview: String { return self._s[4411]! } - public var AutoDownloadSettings_ResetSettings: String { return self._s[4414]! } - public var Watch_Compose_Send: String { return self._s[4415]! } - public var PasscodeSettings_ChangePasscode: String { return self._s[4416]! } - public var WebSearch_RecentSectionClear: String { return self._s[4417]! } + public var Weekday_ShortMonday: String { return self._s[4407]! } + public var Passport_Language_ar: String { return self._s[4409]! } + public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[4410]! } + public var TwoFactorSetup_Done_Title: String { return self._s[4411]! } + public var Calls_RatingFeedback: String { return self._s[4412]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsPreview: String { return self._s[4413]! } + public var AutoDownloadSettings_ResetSettings: String { return self._s[4416]! } + public var Watch_Compose_Send: String { return self._s[4417]! } + public var PasscodeSettings_ChangePasscode: String { return self._s[4418]! } + public var WebSearch_RecentSectionClear: String { return self._s[4419]! } public func Contacts_AccessDeniedHelpPortrait(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4418]!, self._r[4418]!, [_0]) + return formatWithArgumentRanges(self._s[4420]!, self._r[4420]!, [_0]) } - public var WallpaperSearch_ColorTeal: String { return self._s[4419]! } - public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[4420]! } - public var Permissions_ContactsTitle_v0: String { return self._s[4421]! } - public var Checkout_PasswordEntry_Pay: String { return self._s[4423]! } - public var Settings_SavedMessages: String { return self._s[4424]! } - public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[4425]! } - public var Month_ShortMarch: String { return self._s[4426]! } - public var Message_Location: String { return self._s[4427]! } + public var WallpaperSearch_ColorTeal: String { return self._s[4421]! } + public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[4422]! } + public var Permissions_ContactsTitle_v0: String { return self._s[4423]! } + public var Checkout_PasswordEntry_Pay: String { return self._s[4425]! } + public var Settings_SavedMessages: String { return self._s[4426]! } + public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[4427]! } + public var Month_ShortMarch: String { return self._s[4428]! } + public var Message_Location: String { return self._s[4429]! } public func PUSH_MESSAGE_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4428]!, self._r[4428]!, [_1]) + return formatWithArgumentRanges(self._s[4430]!, self._r[4430]!, [_1]) } public func Notification_CallTimeFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4429]!, self._r[4429]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4431]!, self._r[4431]!, [_1, _2]) } - public var VoiceOver_Chat_VoiceMessage: String { return self._s[4431]! } + public var VoiceOver_Chat_VoiceMessage: String { return self._s[4433]! } public func Channel_AdminLog_MessageChangedUnlinkedChannel(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4432]!, self._r[4432]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4434]!, self._r[4434]!, [_1, _2]) } - public var GroupPermission_NoSendMedia: String { return self._s[4433]! } - public var Conversation_ClousStorageInfo_Description2: String { return self._s[4434]! } - public var SharedMedia_CategoryDocs: String { return self._s[4435]! } - public var Appearance_RemoveThemeConfirmation: String { return self._s[4436]! } - public var Paint_Framed: String { return self._s[4437]! } - public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[4438]! } - public var Passport_Identity_DoesNotExpire: String { return self._s[4439]! } - public var Channel_SignMessages: String { return self._s[4440]! } - public var Contacts_AccessDeniedHelpON: String { return self._s[4441]! } - public var Conversation_ContextMenuStickerPackInfo: String { return self._s[4442]! } + public var GroupPermission_NoSendMedia: String { return self._s[4435]! } + public var Conversation_ClousStorageInfo_Description2: String { return self._s[4436]! } + public var SharedMedia_CategoryDocs: String { return self._s[4437]! } + public var Appearance_RemoveThemeConfirmation: String { return self._s[4438]! } + public var Paint_Framed: String { return self._s[4439]! } + public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[4440]! } + public var Passport_Identity_DoesNotExpire: String { return self._s[4441]! } + public var Channel_SignMessages: String { return self._s[4442]! } + public var Contacts_AccessDeniedHelpON: String { return self._s[4443]! } + public var Conversation_ContextMenuStickerPackInfo: String { return self._s[4444]! } public func PUSH_CHAT_LEFT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4443]!, self._r[4443]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4445]!, self._r[4445]!, [_1, _2]) } - public var GroupInfo_UpgradeButton: String { return self._s[4444]! } - public var Channel_EditAdmin_PermissionInviteMembers: String { return self._s[4445]! } - public var AutoDownloadSettings_Files: String { return self._s[4446]! } + public var GroupInfo_UpgradeButton: String { return self._s[4446]! } + public var Channel_EditAdmin_PermissionInviteMembers: String { return self._s[4447]! } + public var AutoDownloadSettings_Files: String { return self._s[4448]! } public func Notification_ChangedGroupName(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4447]!, self._r[4447]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4449]!, self._r[4449]!, [_0, _1]) } - public var Login_SendCodeViaSms: String { return self._s[4449]! } - public var Update_UpdateApp: String { return self._s[4450]! } - public var Channel_Setup_TypePublic: String { return self._s[4451]! } - public var Watch_Compose_CreateMessage: String { return self._s[4452]! } + public var Login_SendCodeViaSms: String { return self._s[4451]! } + public var Update_UpdateApp: String { return self._s[4452]! } + public var Channel_Setup_TypePublic: String { return self._s[4453]! } + public var Watch_Compose_CreateMessage: String { return self._s[4454]! } public func PUSH_CHAT_MESSAGE_VIDEOS(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4453]!, self._r[4453]!, [_1, _2, _3]) - } - public var StickerPacksSettings_ManagingHelp: String { return self._s[4454]! } - public func Wallet_Time_PreciseDate_m12(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4455]!, self._r[4455]!, [_1, _2, _3]) } - public var VoiceOver_Chat_Video: String { return self._s[4456]! } - public var Forward_ChannelReadOnly: String { return self._s[4457]! } - public var StickerPack_HideStickers: String { return self._s[4458]! } - public var ChatListFolder_NameContacts: String { return self._s[4459]! } - public var Profile_BotInfo: String { return self._s[4460]! } - public var Document_TargetConfirmationFormat: String { return self._s[4461]! } - public var GroupInfo_InviteByLink: String { return self._s[4462]! } - public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[4463]! } - public var Watch_Stickers_RecentPlaceholder: String { return self._s[4464]! } - public var Broadcast_AdminLog_EmptyText: String { return self._s[4465]! } - public var Passport_NotLoggedInMessage: String { return self._s[4466]! } - public var Conversation_StopQuizConfirmation: String { return self._s[4467]! } - public var Checkout_PaymentMethod: String { return self._s[4468]! } - public var ChatList_ArchivedChatsTitle: String { return self._s[4472]! } - public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[4473]! } - public var VoiceOver_Chat_RecordPreviewVoiceMessage: String { return self._s[4474]! } - public var PrivacyLastSeenSettings_GroupsAndChannelsHelp: String { return self._s[4475]! } - public var SettingsSearch_Synonyms_Privacy_Data_ContactsReset: String { return self._s[4476]! } - public var Camera_Title: String { return self._s[4477]! } - public var Map_Directions: String { return self._s[4478]! } - public var Wallet_Intro_ImportExisting: String { return self._s[4479]! } - public var Stats_MessagePublicForwardsTitle: String { return self._s[4480]! } - public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[4482]! } - public var Profile_EncryptionKey: String { return self._s[4483]! } + public var StickerPacksSettings_ManagingHelp: String { return self._s[4456]! } + public func Wallet_Time_PreciseDate_m12(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4457]!, self._r[4457]!, [_1, _2, _3]) + } + public var VoiceOver_Chat_Video: String { return self._s[4458]! } + public var Forward_ChannelReadOnly: String { return self._s[4459]! } + public var StickerPack_HideStickers: String { return self._s[4460]! } + public var ChatListFolder_NameContacts: String { return self._s[4461]! } + public var Profile_BotInfo: String { return self._s[4462]! } + public var Document_TargetConfirmationFormat: String { return self._s[4463]! } + public var GroupInfo_InviteByLink: String { return self._s[4464]! } + public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[4465]! } + public var Watch_Stickers_RecentPlaceholder: String { return self._s[4466]! } + public var Broadcast_AdminLog_EmptyText: String { return self._s[4467]! } + public var Passport_NotLoggedInMessage: String { return self._s[4468]! } + public var Conversation_StopQuizConfirmation: String { return self._s[4469]! } + public var Checkout_PaymentMethod: String { return self._s[4470]! } + public var ChatList_ArchivedChatsTitle: String { return self._s[4474]! } + public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[4475]! } + public var VoiceOver_Chat_RecordPreviewVoiceMessage: String { return self._s[4476]! } + public var PrivacyLastSeenSettings_GroupsAndChannelsHelp: String { return self._s[4477]! } + public var SettingsSearch_Synonyms_Privacy_Data_ContactsReset: String { return self._s[4478]! } + public var Camera_Title: String { return self._s[4479]! } + public var Map_Directions: String { return self._s[4480]! } + public var Wallet_Intro_ImportExisting: String { return self._s[4481]! } + public var Stats_MessagePublicForwardsTitle: String { return self._s[4482]! } + public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[4484]! } + public var Profile_EncryptionKey: String { return self._s[4485]! } public func LOCAL_CHAT_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4484]!, self._r[4484]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[4486]!, self._r[4486]!, [_1, "\(_2)"]) } public func Compatibility_SecretMediaVersionTooLow(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4485]!, self._r[4485]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4487]!, self._r[4487]!, [_0, _1]) } - public var Passport_Identity_TypePassport: String { return self._s[4486]! } - public var CreatePoll_QuizOptionsHeader: String { return self._s[4488]! } - public var Common_No: String { return self._s[4489]! } - public var Conversation_SendMessage_ScheduleMessage: String { return self._s[4490]! } - public var SettingsSearch_Synonyms_Privacy_LastSeen: String { return self._s[4491]! } - public var Settings_AboutEmpty: String { return self._s[4492]! } - public var TwoStepAuth_FloodError: String { return self._s[4494]! } - public var SettingsSearch_Synonyms_Appearance_TextSize: String { return self._s[4495]! } + public var Passport_Identity_TypePassport: String { return self._s[4488]! } + public var CreatePoll_QuizOptionsHeader: String { return self._s[4490]! } + public var Common_No: String { return self._s[4491]! } + public var Conversation_SendMessage_ScheduleMessage: String { return self._s[4492]! } + public var SettingsSearch_Synonyms_Privacy_LastSeen: String { return self._s[4493]! } + public var Settings_AboutEmpty: String { return self._s[4494]! } + public var TwoStepAuth_FloodError: String { return self._s[4496]! } + public var SettingsSearch_Synonyms_Appearance_TextSize: String { return self._s[4497]! } public func Channel_AdminLog_MessageUnkickedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4497]!, self._r[4497]!, [_1]) + return formatWithArgumentRanges(self._s[4499]!, self._r[4499]!, [_1]) } - public var Conversation_Edit: String { return self._s[4500]! } - public var CheckoutInfo_SaveInfo: String { return self._s[4501]! } - public var VoiceOver_Chat_AnonymousPoll: String { return self._s[4502]! } - public var Call_CameraTooltip: String { return self._s[4504]! } - public var InstantPage_FeedbackButtonShort: String { return self._s[4505]! } - public var Contacts_InviteToTelegram: String { return self._s[4506]! } - public var Wallet_WordImport_CanNotRemember: String { return self._s[4507]! } - public var Notifications_ResetAllNotifications: String { return self._s[4508]! } - public var Calls_NewCall: String { return self._s[4509]! } - public var VoiceOver_Chat_Music: String { return self._s[4512]! } - public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[4513]! } - public var Channel_Edit_AboutItem: String { return self._s[4514]! } - public var Message_VideoExpired: String { return self._s[4515]! } - public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[4516]! } + public var Conversation_Edit: String { return self._s[4502]! } + public var CheckoutInfo_SaveInfo: String { return self._s[4503]! } + public var VoiceOver_Chat_AnonymousPoll: String { return self._s[4504]! } + public var Call_CameraTooltip: String { return self._s[4506]! } + public var InstantPage_FeedbackButtonShort: String { return self._s[4507]! } + public var Contacts_InviteToTelegram: String { return self._s[4508]! } + public var Wallet_WordImport_CanNotRemember: String { return self._s[4509]! } + public var Notifications_ResetAllNotifications: String { return self._s[4510]! } + public var Calls_NewCall: String { return self._s[4511]! } + public var VoiceOver_Chat_Music: String { return self._s[4514]! } + public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[4515]! } + public var Channel_Edit_AboutItem: String { return self._s[4516]! } + public var Message_VideoExpired: String { return self._s[4517]! } + public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[4518]! } public func PUSH_CHAT_RETURNED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4517]!, self._r[4517]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4519]!, self._r[4519]!, [_1, _2]) } - public var NotificationsSound_Input: String { return self._s[4519]! } - public var Notifications_ClassicTones: String { return self._s[4520]! } - public var Conversation_StatusTyping: String { return self._s[4521]! } - public var Checkout_ErrorProviderAccountInvalid: String { return self._s[4522]! } - public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[4523]! } - public var Wallet_Month_ShortSeptember: String { return self._s[4524]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[4525]! } - public var Conversation_MessageLeaveComment: String { return self._s[4526]! } - public var UserInfo_TapToCall: String { return self._s[4527]! } - public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[4528]! } - public var Conversation_ClearAll: String { return self._s[4530]! } - public var UserInfo_NotificationsDefault: String { return self._s[4531]! } - public var Wallet_Send_OwnAddressAlertText: String { return self._s[4532]! } - public var Map_ChooseAPlace: String { return self._s[4533]! } + public var NotificationsSound_Input: String { return self._s[4521]! } + public var Notifications_ClassicTones: String { return self._s[4522]! } + public var Conversation_StatusTyping: String { return self._s[4523]! } + public var Checkout_ErrorProviderAccountInvalid: String { return self._s[4524]! } + public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[4525]! } + public var Wallet_Month_ShortSeptember: String { return self._s[4526]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[4527]! } + public var Conversation_MessageLeaveComment: String { return self._s[4528]! } + public var UserInfo_TapToCall: String { return self._s[4529]! } + public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[4530]! } + public var Conversation_ClearAll: String { return self._s[4532]! } + public var UserInfo_NotificationsDefault: String { return self._s[4533]! } + public var Wallet_Send_OwnAddressAlertText: String { return self._s[4534]! } + public var Map_ChooseAPlace: String { return self._s[4535]! } public func Wallet_Receive_ShareInvoiceUrlInfo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4534]!, self._r[4534]!, [_0]) + return formatWithArgumentRanges(self._s[4536]!, self._r[4536]!, [_0]) } - public var GroupInfo_AddParticipantTitle: String { return self._s[4535]! } - public var ChatList_PeerTypeNonContact: String { return self._s[4536]! } - public var Conversation_SlideToCancel: String { return self._s[4537]! } - public var Month_ShortJuly: String { return self._s[4538]! } - public var SocksProxySetup_ProxyType: String { return self._s[4539]! } + public var GroupInfo_AddParticipantTitle: String { return self._s[4537]! } + public var ChatList_PeerTypeNonContact: String { return self._s[4538]! } + public var Conversation_SlideToCancel: String { return self._s[4539]! } + public var Month_ShortJuly: String { return self._s[4540]! } + public var SocksProxySetup_ProxyType: String { return self._s[4541]! } public func ChatList_DeleteChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4540]!, self._r[4540]!, [_0]) + return formatWithArgumentRanges(self._s[4542]!, self._r[4542]!, [_0]) } - public var ChatList_EditFolders: String { return self._s[4541]! } - public var TwoStepAuth_SetPasswordHelp: String { return self._s[4542]! } - public var Wallet_Send_ConfirmationConfirm: String { return self._s[4544]! } - public var Wallet_Created_ExportErrorTitle: String { return self._s[4545]! } + public var ChatList_EditFolders: String { return self._s[4543]! } + public var TwoStepAuth_SetPasswordHelp: String { return self._s[4544]! } + public var Wallet_Send_ConfirmationConfirm: String { return self._s[4546]! } + public var Wallet_Created_ExportErrorTitle: String { return self._s[4547]! } public func GroupPermission_ApplyAlertText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4546]!, self._r[4546]!, [_0]) + return formatWithArgumentRanges(self._s[4548]!, self._r[4548]!, [_0]) } - public var Permissions_PeopleNearbyTitle_v0: String { return self._s[4547]! } - public var ScheduledMessages_RemindersTitle: String { return self._s[4548]! } - public var Your_cards_expiration_year_is_invalid: String { return self._s[4549]! } - public var Wallet_Info_TransactionPendingHeader: String { return self._s[4551]! } - public var UserInfo_ShareMyContactInfo: String { return self._s[4552]! } - public var Passport_DeleteAddress: String { return self._s[4554]! } - public var Passport_DeletePassportConfirmation: String { return self._s[4555]! } - public var Passport_Identity_ReverseSide: String { return self._s[4556]! } - public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[4557]! } - public var Login_InfoLastNamePlaceholder: String { return self._s[4558]! } - public var Passport_FieldAddress: String { return self._s[4559]! } - public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[4560]! } - public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[4562]! } - public var Map_Home: String { return self._s[4564]! } - public var PollResults_Title: String { return self._s[4565]! } - public var ArchivedChats_IntroText2: String { return self._s[4567]! } - public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[4568]! } - public var VoiceOver_Chat_ContactPhoneNumber: String { return self._s[4569]! } - public var CallFeedback_ReasonSilentRemote: String { return self._s[4571]! } - public var Passport_Identity_AddPersonalDetails: String { return self._s[4573]! } - public var Group_Info_AdminLog: String { return self._s[4575]! } - public var ChatSettings_AutoPlayTitle: String { return self._s[4576]! } - public var Appearance_Animations: String { return self._s[4577]! } - public var Appearance_TextSizeSetting: String { return self._s[4578]! } - public func ForwardedStickers(_ value: Int32) -> String { + public var Permissions_PeopleNearbyTitle_v0: String { return self._s[4549]! } + public var ScheduledMessages_RemindersTitle: String { return self._s[4550]! } + public var Your_cards_expiration_year_is_invalid: String { return self._s[4551]! } + public var Wallet_Info_TransactionPendingHeader: String { return self._s[4553]! } + public var UserInfo_ShareMyContactInfo: String { return self._s[4554]! } + public var Passport_DeleteAddress: String { return self._s[4556]! } + public var Passport_DeletePassportConfirmation: String { return self._s[4557]! } + public var Passport_Identity_ReverseSide: String { return self._s[4558]! } + public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[4559]! } + public var Login_InfoLastNamePlaceholder: String { return self._s[4560]! } + public var Passport_FieldAddress: String { return self._s[4561]! } + public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[4562]! } + public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[4564]! } + public var Map_Home: String { return self._s[4566]! } + public var PollResults_Title: String { return self._s[4567]! } + public var ArchivedChats_IntroText2: String { return self._s[4569]! } + public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[4570]! } + public var VoiceOver_Chat_ContactPhoneNumber: String { return self._s[4571]! } + public var CallFeedback_ReasonSilentRemote: String { return self._s[4573]! } + public var Passport_Identity_AddPersonalDetails: String { return self._s[4575]! } + public var Group_Info_AdminLog: String { return self._s[4577]! } + public var ChatSettings_AutoPlayTitle: String { return self._s[4578]! } + public var Appearance_Animations: String { return self._s[4579]! } + public var Appearance_TextSizeSetting: String { return self._s[4580]! } + public func GroupInfo_ShowMoreMembers(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, stringValue) } - public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { + public func PeopleNearby_ShowMorePeople(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, stringValue) } - public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { + public func OldChannels_InactiveWeek(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, stringValue) } - public func Stats_GroupTopPosterChars(_ value: Int32) -> String { + public func ForwardedGifs(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { + public func Invitation_Members(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedContacts(_ value: Int32) -> String { + public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, stringValue) } - public func Contacts_ImportersCount(_ value: Int32) -> String { + public func LastSeen_HoursAgo(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notification_GameScoreExtended(_ value: Int32) -> String { + public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, stringValue) } - public func Call_Minutes(_ value: Int32) -> String { + public func Call_ShortSeconds(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, stringValue) } - public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { + public func ForwardedPhotos(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func InstantPage_Views(_ value: Int32) -> String { + public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Minutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedVideoMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Seconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupTopPosterMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusOnline(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PollResults_ShowMore(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Map_ETAHours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_TitleReplies(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, stringValue) - } - public func UserCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_MessagePhotos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func StickerPack_AddStickerCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Theme_UsersCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Months(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_DeletedChats(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_UserInfo_Mute(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func ForwardedPhotos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendGif(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_AddMaskCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Video(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupShowMoreTopAdmins(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue) } public func Stats_MessageViews(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupShowMoreTopPosters(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_ShareItem(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Stats_GroupTopAdminKicks(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedVideos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_ShortSeconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteFor_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedLocations(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Invitation_Members(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortWeeks(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) - } - public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortDays(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) - } - public func GroupInfo_ShowMoreMembers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_GroupFormat(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func VoiceOver_Chat_PollVotes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) - } - public func GroupInfo_ParticipantCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusMembers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_MessageViewComments(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func SharedMedia_Generic(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func MuteFor_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_Search_Messages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ForwardedGifs(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Passport_Scans(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteExpires_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) } public func Notifications_Exceptions(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteExpires_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func OldChannels_InactiveWeek(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_MessageVideos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_TitleComments(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Link(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_ShortMinutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Years(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LastSeen_HoursAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendItem(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedPolls(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_SharePhoto(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_MessageForwards(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func PeopleNearby_ShowMorePeople(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceOver_Chat_PollOptionCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupTopAdminDeletions(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, _0, _1) - } - public func Wallet_Updated_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_InactiveMonth(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortMinutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_File(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceOver_Chat_ContactPhoneNumberCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedAudios(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) } public func MessageTimer_Weeks(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortHours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[108 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Contacts_InviteContacts(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[109 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_StickerCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[110 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[111 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Media_ShareVideo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[112 * 6 + Int(form.rawValue)]!, stringValue) - } - public func QuickSend_Photos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[113 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[114 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[115 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_DeleteConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[116 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Photo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[117 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[118 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func MessagePoll_QuizCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[119 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_Leave(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[120 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessagePoll_VotedCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[121 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortSeconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[122 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_SelectedMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[123 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendVideo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[124 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupTopAdminBans(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[125 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[126 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusSubscribers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[127 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_SelectedChats(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[128 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[129 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Wallet_Updated_HoursAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[130 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceOver_Chat_ContactEmailCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[131 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Map_ETAMinutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[132 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[133 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupTopInviterInvites(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[134 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[135 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_ContextViewReplies(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[136 * 6 + Int(form.rawValue)]!, stringValue) - } - public func InviteText_ContactsCountText(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[137 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatListFilter_ShowMoreChats(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[138 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[139 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupShowMoreTopInviters(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[140 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedFiles(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[141 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_Seconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[142 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_InactiveYear(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[143 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[144 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) } public func MuteExpires_Minutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[145 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortMinutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupTopPosterMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_SharePhoto(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, stringValue) + } + public func InviteText_ContactsCountText(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_InactiveMonth(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusOnline(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessagePoll_QuizCount(_ value: Int32) -> String { + let form = getPluralizationForm(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 = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Passport_Scans(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedContacts(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Video(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedPolls(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_ContactEmailCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Contacts_InviteContacts(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Months(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Map_ETAMinutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendItem(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_ContactPhoneNumberCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_DeletedChats(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupTopAdminDeletions(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func MessageTimer_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteFor_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortSeconds(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedStickers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_MessageVideos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_MessagePhotos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Years(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteFor_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_AddMaskCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_SelectedChats(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_StickerCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_ShortMinutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupShowMoreTopPosters(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupShowMoreTopAdmins(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_Seconds(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_DeleteConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedFiles(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Wallet_Updated_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, _0, _1) + } + public func Stats_GroupTopAdminBans(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatListFilter_ShowMoreChats(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func ChatList_Search_Messages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Seconds(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PollResults_ShowMore(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Map_ETAHours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue) + } + public func QuickSend_Photos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_PollOptionCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortWeeks(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_File(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) + } + public func InstantPage_Views(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Theme_UsersCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_SelectedMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Conversation_StatusSubscribers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_MessageForwards(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func Stats_GroupTopInviterInvites(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedAudios(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendGif(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusMembers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func SharedMedia_Photo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func SharedMedia_Generic(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_UserInfo_Mute(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortHours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func ForwardedVideoMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[108 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedVideos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[109 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_Leave(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[110 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[111 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[112 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_MessageViewComments(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[113 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessagePoll_VotedCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[114 * 6 + Int(form.rawValue)]!, stringValue) + } + public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[115 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupTopAdminKicks(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[116 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[117 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[118 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Stats_GroupShowMoreTopInviters(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[119 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedLocations(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[120 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_TitleComments(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[121 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[122 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[123 * 6 + Int(form.rawValue)]!, stringValue) } public func LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[124 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_ShareItem(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[125 * 6 + Int(form.rawValue)]!, stringValue) + } + public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[126 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[127 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_ShareVideo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[128 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_InactiveYear(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[129 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortDays(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[130 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_AddStickerCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[131 * 6 + Int(form.rawValue)]!, stringValue) + } + public func GroupInfo_ParticipantCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[132 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[133 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_TitleReplies(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[134 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_GroupFormat(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[135 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupTopPosterChars(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[136 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_PollVotes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[137 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Link(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[138 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Contacts_ImportersCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[139 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[140 * 6 + Int(form.rawValue)]!, stringValue) + } + public func UserCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[141 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[142 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[143 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_MessageMusic(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[144 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Wallet_Updated_HoursAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[145 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_ContextViewReplies(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[146 * 6 + Int(form.rawValue)]!, stringValue) } + public func AttachmentMenu_SendVideo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[147 * 6 + Int(form.rawValue)]!, stringValue) + } public init(primaryComponent: PresentationStringsComponent, secondaryComponent: PresentationStringsComponent?, groupingSeparator: String) { self.primaryComponent = primaryComponent diff --git a/submodules/TelegramUI/Resources/PresentationStrings.mapping b/submodules/TelegramUI/Resources/PresentationStrings.mapping index 5cc26da84410fc2b7c3c2542a421a907aabe2b35..279c431baff5df844bd6b9da640f24f267e7916e 100644 GIT binary patch delta 28332 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 G{r>A9~-s@C7l<+jPUbS+jVIA1$IV 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 diff --git a/submodules/TelegramUI/Sources/ChatController.swift b/submodules/TelegramUI/Sources/ChatController.swift index e4653315b6..0084aa0b35 100644 --- a/submodules/TelegramUI/Sources/ChatController.swift +++ b/submodules/TelegramUI/Sources/ChatController.swift @@ -6967,6 +6967,21 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G if let strongSelf = self { let replyMessageId = strongSelf.presentationInterfaceState.interfaceState.replyMessageId + var groupingKey: Int64? + var allItemsAreAudio = true + for item in results { + if let item = item { + let pathExtension = (item.fileName as NSString).pathExtension.lowercased() + if !["mp3", "m4a"].contains(pathExtension) { + allItemsAreAudio = false + } + } + } + + if allItemsAreAudio { + groupingKey = arc4random64() + } + var messages: [EnqueueMessage] = [] for item in results { if let item = item { @@ -6977,7 +6992,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 320, height: 320), resource: ICloudFileResource(urlData: item.urlData, thumbnail: true), progressiveSizes: [])) } let file = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: fileId), partialReference: nil, resource: ICloudFileResource(urlData: item.urlData, thumbnail: false), previewRepresentations: previewRepresentations, videoThumbnails: [], immediateThumbnailData: nil, mimeType: mimeType, size: item.fileSize, attributes: [.FileName(fileName: item.fileName)]) - let message: EnqueueMessage = .message(text: "", attributes: [], mediaReference: .standalone(media: file), replyToMessageId: replyMessageId, localGroupingKey: nil) + let message: EnqueueMessage = .message(text: "", attributes: [], mediaReference: .standalone(media: file), replyToMessageId: replyMessageId, localGroupingKey: groupingKey) messages.append(message) } } @@ -6985,9 +7000,8 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G if !messages.isEmpty { if editingMessage { strongSelf.editMessageMediaWithMessages(messages) - } else { - strongSelf.chatDisplayNode.setupSendActionOnViewUpdate({ + strongSelf.chatDisplayNode.setupSendActionOnViewUpdate({ if let strongSelf = self { strongSelf.updateChatPresentationInterfaceState(animated: true, interactive: false, { $0.updatedInterfaceState { $0.withUpdatedReplyMessageId(nil) } diff --git a/submodules/TelegramUI/Sources/ChatMessageAttachedContentNode.swift b/submodules/TelegramUI/Sources/ChatMessageAttachedContentNode.swift index ae544e5be4..c7d94e8c8f 100644 --- a/submodules/TelegramUI/Sources/ChatMessageAttachedContentNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageAttachedContentNode.swift @@ -474,7 +474,7 @@ final class ChatMessageAttachedContentNode: ASDisplayNode { } } - let (_, refineLayout) = contentFileLayout(context, presentationData, message, chatLocation, attributes, file, automaticDownload, message.effectivelyIncoming(context.account.peerId), false, associatedData.forcedResourceStatus, statusType, CGSize(width: constrainedSize.width - horizontalInsets.left - horizontalInsets.right, height: constrainedSize.height)) + let (_, refineLayout) = contentFileLayout(context, presentationData, message, chatLocation, attributes, file, automaticDownload, message.effectivelyIncoming(context.account.peerId), false, associatedData.forcedResourceStatus, statusType, nil, CGSize(width: constrainedSize.width - horizontalInsets.left - horizontalInsets.right, height: constrainedSize.height)) refineContentFileLayout = refineLayout } } else if let image = media as? TelegramMediaImage { diff --git a/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift b/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift index d504d675e3..ba872c7a3c 100644 --- a/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift @@ -1148,23 +1148,21 @@ class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePrevewItemNode let contentItem = ChatMessageBubbleContentItem(context: item.context, controllerInteraction: item.controllerInteraction, message: message, read: read, chatLocation: item.chatLocation, presentationData: item.presentationData, associatedData: item.associatedData, attributes: attributes) var itemSelection: Bool? - if case .mosaic = prepareContentPosition { - switch content { - case .message: - break - case let .group(messages): - for (m, _, selection, _) in messages { - if m.id == message.id { - switch selection { - case .none: - break - case let .selectable(selected): - itemSelection = selected - } - break + switch content { + case .message: + break + case let .group(messages): + for (m, _, selection, _) in messages { + if m.id == message.id { + switch selection { + case .none: + break + case let .selectable(selected): + itemSelection = selected } + break } - } + } } let (properties, unboundSize, maxNodeWidth, nodeLayout) = prepareLayout(contentItem, layoutConstants, prepareContentPosition, itemSelection, CGSize(width: maximumContentWidth, height: CGFloat.greatestFiniteMagnitude)) @@ -2777,7 +2775,9 @@ class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePrevewItemNode } private func traceSelectionNodes(parent: ASDisplayNode, point: CGPoint) -> ASDisplayNode? { - if let parent = parent as? GridMessageSelectionNode, parent.bounds.contains(point) { + if let parent = parent as? FileMessageSelectionNode, parent.bounds.contains(point) { + return parent + } else if let parent = parent as? GridMessageSelectionNode, parent.bounds.contains(point) { return parent } else { if let parentSubnodes = parent.subnodes { diff --git a/submodules/TelegramUI/Sources/ChatMessageFileBubbleContentNode.swift b/submodules/TelegramUI/Sources/ChatMessageFileBubbleContentNode.swift index bb6ef83495..897af6ca8e 100644 --- a/submodules/TelegramUI/Sources/ChatMessageFileBubbleContentNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageFileBubbleContentNode.swift @@ -34,19 +34,21 @@ class ChatMessageFileBubbleContentNode: ChatMessageBubbleContentNode { self.addSubnode(self.interactiveFileNode) + self.interactiveFileNode.toggleSelection = { [weak self] value in + if let strongSelf = self, let item = strongSelf.item { + item.controllerInteraction.toggleMessagesSelection([item.message.id], value) + } + } + self.interactiveFileNode.activateLocalContent = { [weak self] in - if let strongSelf = self { - if let item = strongSelf.item { - let _ = item.controllerInteraction.openMessage(item.message, .default) - } + if let strongSelf = self, let item = strongSelf.item { + let _ = item.controllerInteraction.openMessage(item.message, .default) } } self.interactiveFileNode.requestUpdateLayout = { [weak self] _ in - if let strongSelf = self { - if let item = strongSelf.item { - let _ = item.controllerInteraction.requestMessageUpdate(item.message.id) - } + if let strongSelf = self, let item = strongSelf.item { + let _ = item.controllerInteraction.requestMessageUpdate(item.message.id) } } } @@ -58,7 +60,7 @@ class ChatMessageFileBubbleContentNode: ChatMessageBubbleContentNode { override func asyncLayoutContent() -> (_ item: ChatMessageBubbleContentItem, _ layoutConstants: ChatMessageItemLayoutConstants, _ preparePosition: ChatMessageBubblePreparePosition, _ messageSelection: Bool?, _ constrainedSize: CGSize) -> (ChatMessageBubbleContentProperties, CGSize?, CGFloat, (CGSize, ChatMessageBubbleContentPosition) -> (CGFloat, (CGFloat) -> (CGSize, (ListViewItemUpdateAnimation, Bool) -> Void))) { let interactiveFileLayout = self.interactiveFileNode.asyncLayout() - return { item, layoutConstants, preparePosition, _, constrainedSize in + return { item, layoutConstants, preparePosition, selection, constrainedSize in var selectedFile: TelegramMediaFile? for media in item.message.media { if let telegramFile = media as? TelegramMediaFile { @@ -87,7 +89,7 @@ class ChatMessageFileBubbleContentNode: ChatMessageBubbleContentNode { let automaticDownload = shouldDownloadMediaAutomatically(settings: item.controllerInteraction.automaticMediaDownloadSettings, peerType: item.associatedData.automaticDownloadPeerType, networkType: item.associatedData.automaticDownloadNetworkType, authorPeerId: item.message.author?.id, contactsPeerIds: item.associatedData.contactsPeerIds, media: selectedFile!) - let (initialWidth, refineLayout) = interactiveFileLayout(item.context, item.presentationData, item.message, item.chatLocation, item.attributes, selectedFile!, automaticDownload, item.message.effectivelyIncoming(item.context.account.peerId), item.associatedData.isRecentActions, item.associatedData.forcedResourceStatus, statusType, CGSize(width: constrainedSize.width - layoutConstants.file.bubbleInsets.left - layoutConstants.file.bubbleInsets.right, height: constrainedSize.height)) + let (initialWidth, refineLayout) = interactiveFileLayout(item.context, item.presentationData, item.message, item.chatLocation, item.attributes, selectedFile!, automaticDownload, item.message.effectivelyIncoming(item.context.account.peerId), item.associatedData.isRecentActions, item.associatedData.forcedResourceStatus, statusType, item.message.groupingKey != nil ? selection : nil, CGSize(width: constrainedSize.width - layoutConstants.file.bubbleInsets.left - layoutConstants.file.bubbleInsets.right, height: constrainedSize.height)) let contentProperties = ChatMessageBubbleContentProperties(hidesSimpleAuthorHeader: false, headerSpacing: 0.0, hidesBackground: .never, forceFullCorners: false, forceAlignment: .none) @@ -97,7 +99,15 @@ class ChatMessageFileBubbleContentNode: ChatMessageBubbleContentNode { return (refinedWidth + layoutConstants.file.bubbleInsets.left + layoutConstants.file.bubbleInsets.right, { boundingWidth in let (fileSize, fileApply) = finishLayout(boundingWidth - layoutConstants.file.bubbleInsets.left - layoutConstants.file.bubbleInsets.right) - return (CGSize(width: fileSize.width + layoutConstants.file.bubbleInsets.left + layoutConstants.file.bubbleInsets.right, height: fileSize.height + layoutConstants.file.bubbleInsets.top + layoutConstants.file.bubbleInsets.bottom), { [weak self] _, synchronousLoads in + var bottomInset = layoutConstants.file.bubbleInsets.bottom + + if case let .linear(_, bottom) = position { + if case .Neighbour = bottom { + bottomInset -= 20.0 + } + } + + return (CGSize(width: fileSize.width + layoutConstants.file.bubbleInsets.left + layoutConstants.file.bubbleInsets.right, height: fileSize.height + layoutConstants.file.bubbleInsets.top + bottomInset), { [weak self] _, synchronousLoads in if let strongSelf = self { strongSelf.item = item diff --git a/submodules/TelegramUI/Sources/ChatMessageInteractiveFileNode.swift b/submodules/TelegramUI/Sources/ChatMessageInteractiveFileNode.swift index 07fac2f234..fdbc2f26bf 100644 --- a/submodules/TelegramUI/Sources/ChatMessageInteractiveFileNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageInteractiveFileNode.swift @@ -14,6 +14,7 @@ import TelegramStringFormatting import RadialStatusNode import SemanticStatusNode import FileMediaResourceStatus +import CheckNode private struct FetchControls { let fetch: () -> Void @@ -21,6 +22,10 @@ private struct FetchControls { } final class ChatMessageInteractiveFileNode: ASDisplayNode { + private var selectionBackgroundNode: ASDisplayNode? + private var selectionNode: FileMessageSelectionNode? + private var cutoutNode: ASDisplayNode? + private let titleNode: TextNode private let descriptionNode: TextNode private let descriptionMeasuringNode: TextNode @@ -35,7 +40,7 @@ final class ChatMessageInteractiveFileNode: ASDisplayNode { private var iconNode: TransformImageNode? private var statusNode: SemanticStatusNode? private var playbackAudioLevelView: VoiceBlobView? - private var streamingStatusNode: RadialStatusNode? + private var streamingStatusNode: SemanticStatusNode? private var tapRecognizer: UITapGestureRecognizer? private let statusDisposable = MetaDisposable() @@ -76,6 +81,7 @@ final class ChatMessageInteractiveFileNode: ASDisplayNode { private var actualFetchStatus: MediaResourceStatus? private let fetchDisposable = MetaDisposable() + var toggleSelection: (Bool) -> Void = { _ in } var activateLocalContent: () -> Void = { } var requestUpdateLayout: (Bool) -> Void = { _ in } @@ -86,8 +92,6 @@ final class ChatMessageInteractiveFileNode: ASDisplayNode { private var progressFrame: CGRect? private var streamingCacheStatusFrame: CGRect? private var fileIconImage: UIImage? - private var cloudFetchIconImage: UIImage? - private var cloudFetchedIconImage: UIImage? override init() { self.titleNode = TextNode() @@ -204,7 +208,7 @@ final class ChatMessageInteractiveFileNode: ASDisplayNode { } } - func asyncLayout() -> (_ context: AccountContext, _ presentationData: ChatPresentationData, _ message: Message, _ chatLocation: ChatLocation, _ attributes: ChatMessageEntryAttributes, _ file: TelegramMediaFile, _ automaticDownload: Bool, _ incoming: Bool, _ isRecentActions: Bool, _ forcedResourceStatus: FileMediaResourceStatus?, _ dateAndStatusType: ChatMessageDateAndStatusType?, _ constrainedSize: CGSize) -> (CGFloat, (CGSize) -> (CGFloat, (CGFloat) -> (CGSize, (Bool) -> Void))) { + func asyncLayout() -> (_ context: AccountContext, _ presentationData: ChatPresentationData, _ message: Message, _ chatLocation: ChatLocation, _ attributes: ChatMessageEntryAttributes, _ file: TelegramMediaFile, _ automaticDownload: Bool, _ incoming: Bool, _ isRecentActions: Bool, _ forcedResourceStatus: FileMediaResourceStatus?, _ dateAndStatusType: ChatMessageDateAndStatusType?, _ messageSelection: Bool?, _ constrainedSize: CGSize) -> (CGFloat, (CGSize) -> (CGFloat, (CGFloat) -> (CGSize, (Bool) -> Void))) { let currentFile = self.file let titleAsyncLayout = TextNode.asyncLayout(self.titleNode) @@ -214,7 +218,7 @@ final class ChatMessageInteractiveFileNode: ASDisplayNode { let currentMessage = self.message - return { context, presentationData, message, chatLocation, attributes, file, automaticDownload, incoming, isRecentActions, forcedResourceStatus, dateAndStatusType, constrainedSize in + return { context, presentationData, message, chatLocation, attributes, file, automaticDownload, incoming, isRecentActions, forcedResourceStatus, dateAndStatusType, messageSelection, constrainedSize in return (CGFloat.greatestFiniteMagnitude, { constrainedSize in let titleFont = Font.regular(floor(presentationData.fontSize.baseDisplaySize * 16.0 / 17.0)) let descriptionFont = Font.regular(floor(presentationData.fontSize.baseDisplaySize * 13.0 / 17.0)) @@ -415,15 +419,7 @@ final class ChatMessageInteractiveFileNode: ASDisplayNode { textConstrainedSize.width -= 80.0 } - let streamingProgressDiameter: CGFloat = 28.0 - var hasStreamingProgress = false - if isAudio && !isVoice { - hasStreamingProgress = true - - if hasStreamingProgress { - textConstrainedSize.width -= streamingProgressDiameter + 4.0 - } - } + let streamingProgressDiameter: CGFloat = 20.0 let (titleLayout, titleApply) = titleAsyncLayout(TextNodeLayoutArguments(attributedString: titleString, backgroundColor: nil, maximumNumberOfLines: hasThumbnail ? 2 : 1, truncationType: .middle, constrainedSize: textConstrainedSize, alignment: .natural, cutout: nil, insets: UIEdgeInsets())) let (descriptionLayout, descriptionApply) = descriptionAsyncLayout(TextNodeLayoutArguments(attributedString: descriptionString, backgroundColor: nil, maximumNumberOfLines: 1, truncationType: .middle, constrainedSize: textConstrainedSize, alignment: .natural, cutout: nil, insets: UIEdgeInsets())) @@ -461,15 +457,7 @@ final class ChatMessageInteractiveFileNode: ASDisplayNode { if let statusSize = statusSize { minLayoutWidth = max(minLayoutWidth, statusSize.width) } - - var cloudFetchIconImage: UIImage? - var cloudFetchedIconImage: UIImage? - if hasStreamingProgress { - minLayoutWidth += streamingProgressDiameter + 4.0 - cloudFetchIconImage = incoming ? PresentationResourcesChat.chatBubbleFileCloudFetchIncomingIcon(presentationData.theme.theme) : PresentationResourcesChat.chatBubbleFileCloudFetchOutgoingIcon(presentationData.theme.theme) - cloudFetchedIconImage = incoming ? PresentationResourcesChat.chatBubbleFileCloudFetchedIncomingIcon(presentationData.theme.theme) : PresentationResourcesChat.chatBubbleFileCloudFetchedOutgoingIcon(presentationData.theme.theme) - } - + let fileIconImage: UIImage? if hasThumbnail { fileIconImage = nil @@ -551,10 +539,7 @@ final class ChatMessageInteractiveFileNode: ASDisplayNode { } if isAudio && !isVoice { - streamingCacheStatusFrame = CGRect(origin: CGPoint(x: boundingWidth - streamingProgressDiameter + 1.0, y: 8.0), size: CGSize(width: streamingProgressDiameter, height: streamingProgressDiameter)) - if hasStreamingProgress { - fittedLayoutSize.width += streamingProgressDiameter + 6.0 - } + streamingCacheStatusFrame = CGRect(origin: CGPoint(x: progressFrame.maxX - streamingProgressDiameter + 2.0, y: progressFrame.maxY - streamingProgressDiameter + 2.0), size: CGSize(width: streamingProgressDiameter, height: streamingProgressDiameter)) fittedLayoutSize.width = max(fittedLayoutSize.width, boundingWidth + 2.0) } else { streamingCacheStatusFrame = CGRect() @@ -688,7 +673,7 @@ final class ChatMessageInteractiveFileNode: ASDisplayNode { } })) } - + strongSelf.waveformNode.displaysAsynchronously = !presentationData.isPreview strongSelf.statusNode?.displaysAsynchronously = !presentationData.isPreview strongSelf.statusNode?.frame = progressFrame @@ -696,8 +681,6 @@ final class ChatMessageInteractiveFileNode: ASDisplayNode { strongSelf.progressFrame = progressFrame strongSelf.streamingCacheStatusFrame = streamingCacheStatusFrame strongSelf.fileIconImage = fileIconImage - strongSelf.cloudFetchIconImage = cloudFetchIconImage - strongSelf.cloudFetchedIconImage = cloudFetchedIconImage if let updatedFetchControls = updatedFetchControls { let _ = strongSelf.fetchControls.swap(updatedFetchControls) @@ -706,7 +689,64 @@ final class ChatMessageInteractiveFileNode: ASDisplayNode { } } - strongSelf.updateStatus(animated: !synchronousLoads) + let isAnimated = !synchronousLoads + let transition: ContainedViewLayoutTransition = isAnimated ? .animated(duration: 0.2, curve: .spring) : .immediate + if let selection = messageSelection { + if let streamingStatusNode = strongSelf.streamingStatusNode { + transition.updateAlpha(node: streamingStatusNode, alpha: 0.0) + transition.updateTransformScale(node: streamingStatusNode, scale: 0.2) + } + let selectionFrame = CGRect(origin: CGPoint(), size: fittedLayoutSize) + if let selectionNode = strongSelf.selectionNode { + selectionNode.frame = selectionFrame + selectionNode.updateSelected(selection, animated: isAnimated) + } else { + let selectionNode = FileMessageSelectionNode(theme: presentationData.theme.theme, incoming: incoming, toggle: { [weak self] value in + self?.toggleSelection(value) + }) + strongSelf.selectionNode = selectionNode + strongSelf.addSubnode(selectionNode) + selectionNode.frame = selectionFrame + selectionNode.updateSelected(selection, animated: false) + if isAnimated { + selectionNode.animateIn() + } + } + + let selectionBackgroundFrame = CGRect(origin: CGPoint(x: -8.0, y: -9.0), size: CGSize(width: fittedLayoutSize.width + 16.0, height: fittedLayoutSize.height + 6.0)) + if let selectionBackgroundNode = strongSelf.selectionBackgroundNode { + selectionBackgroundNode.frame = selectionBackgroundFrame + selectionBackgroundNode.isHidden = !selection + } else { + let selectionBackgroundNode = ASDisplayNode() + selectionBackgroundNode.backgroundColor = messageTheme.accentControlColor.withAlphaComponent(0.08) + selectionBackgroundNode.frame = selectionBackgroundFrame + selectionBackgroundNode.isHidden = !selection + strongSelf.selectionBackgroundNode = selectionBackgroundNode + strongSelf.insertSubnode(selectionBackgroundNode, at: 0) + } + } else { + if let streamingStatusNode = strongSelf.streamingStatusNode { + transition.updateAlpha(node: streamingStatusNode, alpha: 1.0) + transition.updateTransformScale(node: streamingStatusNode, scale: 1.0) + } + if let selectionNode = strongSelf.selectionNode { + strongSelf.selectionNode = nil + if isAnimated { + selectionNode.animateOut(completion: { [weak selectionNode] in + selectionNode?.removeFromSupernode() + }) + } else { + selectionNode.removeFromSupernode() + } + } + if let selectionBackgroundNode = strongSelf.selectionBackgroundNode { + strongSelf.selectionBackgroundNode = nil + selectionBackgroundNode.removeFromSupernode() + } + } + + strongSelf.updateStatus(animated: isAnimated) } }) }) @@ -751,7 +791,7 @@ final class ChatMessageInteractiveFileNode: ASDisplayNode { } let state: SemanticStatusNodeState - var streamingState: RadialStatusNodeState = .none + var streamingState: SemanticStatusNodeState = .none let isSending = message.flags.isSending @@ -795,35 +835,19 @@ final class ChatMessageInteractiveFileNode: ASDisplayNode { } if isAudio && !isVoice && !isSending { - let streamingStatusForegroundColor: UIColor = messageTheme.accentControlColor - let streamingStatusBackgroundColor: UIColor = messageTheme.mediaInactiveControlColor switch resourceStatus.fetchStatus { case let .Fetching(_, progress): let adjustedProgress = max(progress, 0.027) - streamingState = .cloudProgress(color: streamingStatusForegroundColor, strokeBackgroundColor: streamingStatusBackgroundColor, lineWidth: 2.0, value: CGFloat(adjustedProgress)) + streamingState = .progress(value: CGFloat(adjustedProgress), cancelEnabled: true, appearance: .init(inset: 1.0, lineWidth: 2.0)) case .Local: - if let cloudFetchedIconImage = self.cloudFetchedIconImage { - streamingState = .customIcon(cloudFetchedIconImage) - } else { - streamingState = .none - } + streamingState = .none case .Remote: - if let cloudFetchIconImage = self.cloudFetchIconImage { - streamingState = .customIcon(cloudFetchIconImage) - } else { - streamingState = .none - } + streamingState = .download } } else { streamingState = .none } - - let statusForegroundColor: UIColor - if self.iconNode != nil { - statusForegroundColor = presentationData.theme.theme.chat.message.mediaOverlayControlColors.foregroundColor - } else { - statusForegroundColor = incoming ? presentationData.theme.theme.chat.message.incoming.mediaControlInnerBackgroundColor : presentationData.theme.theme.chat.message.outgoing.mediaControlInnerBackgroundColor - } + switch resourceStatus.mediaStatus { case var .fetchStatus(fetchStatus): if self.message?.forwardInfo != nil { @@ -903,7 +927,7 @@ final class ChatMessageInteractiveFileNode: ASDisplayNode { self.playbackAudioLevelView?.setColor(presentationData.theme.theme.chat.inputPanel.actionControlFillColor) if streamingState != .none && self.streamingStatusNode == nil { - let streamingStatusNode = RadialStatusNode(backgroundNodeColor: .clear) + let streamingStatusNode = SemanticStatusNode(backgroundNodeColor: backgroundNodeColor, foregroundNodeColor: foregroundNodeColor) self.streamingStatusNode = streamingStatusNode streamingStatusNode.frame = streamingCacheStatusFrame self.addSubnode(streamingStatusNode) @@ -944,6 +968,36 @@ final class ChatMessageInteractiveFileNode: ASDisplayNode { } } + if streamingState == .none && self.selectionNode == nil { + if let cutoutNode = self.cutoutNode { + self.cutoutNode = nil + if animated { + cutoutNode.layer.animateScale(from: 1.0, to: 0.001, duration: 0.2, removeOnCompletion: false) { [weak cutoutNode] _ in + cutoutNode?.removeFromSupernode() + } + } else { + cutoutNode.removeFromSupernode() + } + } + } else if let statusNode = self.statusNode { + if let _ = self.cutoutNode { + } else { + let cutoutNode = ASImageNode() + cutoutNode.displaysAsynchronously = false + cutoutNode.displayWithoutProcessing = true + cutoutNode.image = generateFilledCircleImage(diameter: 23.0, color: messageTheme.bubble.withWallpaper.fill) + + self.cutoutNode = cutoutNode + self.insertSubnode(cutoutNode, aboveSubnode: statusNode) + + cutoutNode.frame = streamingCacheStatusFrame.insetBy(dx: -1.5, dy: -1.5) + + if animated { + cutoutNode.layer.animateScale(from: 0.001, to: 1.0, duration: 0.2) + } + } + } + if let (expandedString, compactString, font) = downloadingStrings { self.fetchingTextNode.attributedText = NSAttributedString(string: expandedString, font: font, textColor: messageTheme.fileDurationColor) self.fetchingCompactTextNode.attributedText = NSAttributedString(string: compactString, font: font, textColor: messageTheme.fileDurationColor) @@ -975,12 +1029,12 @@ final class ChatMessageInteractiveFileNode: ASDisplayNode { self.fetchingCompactTextNode.frame = CGRect(origin: self.descriptionNode.frame.origin, size: fetchingCompactSize) } - static func asyncLayout(_ node: ChatMessageInteractiveFileNode?) -> (_ context: AccountContext, _ presentationData: ChatPresentationData, _ message: Message, _ chatLocation: ChatLocation, _ attributes: ChatMessageEntryAttributes, _ file: TelegramMediaFile, _ automaticDownload: Bool, _ incoming: Bool, _ isRecentActions: Bool, _ forcedResourceStatus: FileMediaResourceStatus?, _ dateAndStatusType: ChatMessageDateAndStatusType?, _ constrainedSize: CGSize) -> (CGFloat, (CGSize) -> (CGFloat, (CGFloat) -> (CGSize, (Bool) -> ChatMessageInteractiveFileNode))) { + static func asyncLayout(_ node: ChatMessageInteractiveFileNode?) -> (_ context: AccountContext, _ presentationData: ChatPresentationData, _ message: Message, _ chatLocation: ChatLocation, _ attributes: ChatMessageEntryAttributes, _ file: TelegramMediaFile, _ automaticDownload: Bool, _ incoming: Bool, _ isRecentActions: Bool, _ forcedResourceStatus: FileMediaResourceStatus?, _ dateAndStatusType: ChatMessageDateAndStatusType?, _ messageSelection: Bool?, _ constrainedSize: CGSize) -> (CGFloat, (CGSize) -> (CGFloat, (CGFloat) -> (CGSize, (Bool) -> ChatMessageInteractiveFileNode))) { let currentAsyncLayout = node?.asyncLayout() - return { context, presentationData, message, chatLocation, attributes, file, automaticDownload, incoming, isRecentActions, forcedResourceStatus, dateAndStatusType, constrainedSize in + return { context, presentationData, message, chatLocation, attributes, file, automaticDownload, incoming, isRecentActions, forcedResourceStatus, dateAndStatusType, messageSelection, constrainedSize in var fileNode: ChatMessageInteractiveFileNode - var fileLayout: (_ context: AccountContext, _ presentationData: ChatPresentationData, _ message: Message, _ chatLocation: ChatLocation, _ attributes: ChatMessageEntryAttributes, _ file: TelegramMediaFile, _ automaticDownload: Bool, _ incoming: Bool, _ isRecentActions: Bool, _ forcedResourceStatus: FileMediaResourceStatus?, _ dateAndStatusType: ChatMessageDateAndStatusType?, _ constrainedSize: CGSize) -> (CGFloat, (CGSize) -> (CGFloat, (CGFloat) -> (CGSize, (Bool) -> Void))) + var fileLayout: (_ context: AccountContext, _ presentationData: ChatPresentationData, _ message: Message, _ chatLocation: ChatLocation, _ attributes: ChatMessageEntryAttributes, _ file: TelegramMediaFile, _ automaticDownload: Bool, _ incoming: Bool, _ isRecentActions: Bool, _ forcedResourceStatus: FileMediaResourceStatus?, _ dateAndStatusType: ChatMessageDateAndStatusType?, _ messageSelection: Bool?, _ constrainedSize: CGSize) -> (CGFloat, (CGSize) -> (CGFloat, (CGFloat) -> (CGSize, (Bool) -> Void))) if let node = node, let currentAsyncLayout = currentAsyncLayout { fileNode = node @@ -990,7 +1044,7 @@ final class ChatMessageInteractiveFileNode: ASDisplayNode { fileLayout = fileNode.asyncLayout() } - let (initialWidth, continueLayout) = fileLayout(context, presentationData, message, chatLocation, attributes, file, automaticDownload, incoming, isRecentActions, forcedResourceStatus, dateAndStatusType, constrainedSize) + let (initialWidth, continueLayout) = fileLayout(context, presentationData, message, chatLocation, attributes, file, automaticDownload, incoming, isRecentActions, forcedResourceStatus, dateAndStatusType, messageSelection, constrainedSize) return (initialWidth, { constrainedSize in let (finalWidth, finalLayout) = continueLayout(constrainedSize) @@ -1053,3 +1107,60 @@ final class ChatMessageInteractiveFileNode: ASDisplayNode { return nil } } + + +final class FileMessageSelectionNode: ASDisplayNode { + private let toggle: (Bool) -> Void + + private var selected = false + private let checkNode: CheckNode + + public init(theme: PresentationTheme, incoming: Bool, toggle: @escaping (Bool) -> Void) { + self.toggle = toggle + self.checkNode = CheckNode(strokeColor: incoming ? theme.chat.message.incoming.mediaPlaceholderColor : theme.chat.message.outgoing.mediaPlaceholderColor, fillColor: theme.list.itemCheckColors.fillColor, foregroundColor: theme.list.itemCheckColors.foregroundColor, style: .compact) + self.checkNode.isUserInteractionEnabled = false + + super.init() + + self.addSubnode(self.checkNode) + } + + override public func didLoad() { + super.didLoad() + + self.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.tapGesture(_:)))) + } + + public func animateIn() { + self.checkNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.5, timingFunction: kCAMediaTimingFunctionSpring) + self.checkNode.layer.animateScale(from: 0.2, to: 1.0, duration: 0.5, timingFunction: kCAMediaTimingFunctionSpring) + } + + public func animateOut(completion: @escaping () -> Void) { + self.checkNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.3, timingFunction: kCAMediaTimingFunctionSpring, removeOnCompletion: false) + self.checkNode.layer.animateScale(from: 1.0, to: 0.2, duration: 0.3, timingFunction: kCAMediaTimingFunctionSpring, removeOnCompletion: false, completion: { _ in + completion() + }) + } + + public func updateSelected(_ selected: Bool, animated: Bool) { + if self.selected != selected { + self.selected = selected + self.checkNode.setIsChecked(selected, animated: animated) + } + } + + @objc private func tapGesture(_ recognizer: UITapGestureRecognizer) { + if case .ended = recognizer.state { + self.toggle(!self.selected) + } + } + + override public func layout() { + super.layout() + + let checkSize = CGSize(width: 30.0, height: 30.0) + self.checkNode.frame = CGRect(origin: CGPoint(x: 23.0, y: 17.0), size: checkSize) + } +} + From 4f466f0f6935f47fa30e9be14db11c862c83e788 Mon Sep 17 00:00:00 2001 From: Ali <> Date: Tue, 6 Oct 2020 19:12:45 +0100 Subject: [PATCH 12/15] Restore regular pin behavior --- submodules/TelegramUI/Sources/ChatController.swift | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/submodules/TelegramUI/Sources/ChatController.swift b/submodules/TelegramUI/Sources/ChatController.swift index f912a5fbc9..d0ea5b689a 100644 --- a/submodules/TelegramUI/Sources/ChatController.swift +++ b/submodules/TelegramUI/Sources/ChatController.swift @@ -3492,8 +3492,13 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G } } } else { - pinnedMessageId = topPinnedMessage?.message.id - pinnedMessage = topPinnedMessage + if let pinnedMessageId = pinnedMessageId { + if let message = messages?[pinnedMessageId] { + pinnedMessage = ChatPinnedMessage(message: message, isLatest: true) + } + } + //pinnedMessageId = topPinnedMessage?.message.id + //pinnedMessage = topPinnedMessage } var pinnedMessageUpdated = false From 80513512e497659b11122a6d9b4ce6ad73b46c21 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Tue, 6 Oct 2020 23:45:05 +0400 Subject: [PATCH 13/15] Improve music sharing from iCloud Drive --- .../TelegramUI/Sources/ChatController.swift | 8 ++++++- .../ChatMessageFileBubbleContentNode.swift | 2 +- .../TelegramUI/Sources/ICloudResources.swift | 21 ++++++++++++++++++- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/submodules/TelegramUI/Sources/ChatController.swift b/submodules/TelegramUI/Sources/ChatController.swift index 0084aa0b35..3b5848794f 100644 --- a/submodules/TelegramUI/Sources/ChatController.swift +++ b/submodules/TelegramUI/Sources/ChatController.swift @@ -6991,7 +6991,13 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G if mimeType == "application/pdf" { previewRepresentations.append(TelegramMediaImageRepresentation(dimensions: PixelDimensions(width: 320, height: 320), resource: ICloudFileResource(urlData: item.urlData, thumbnail: true), progressiveSizes: [])) } - let file = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: fileId), partialReference: nil, resource: ICloudFileResource(urlData: item.urlData, thumbnail: false), previewRepresentations: previewRepresentations, videoThumbnails: [], immediateThumbnailData: nil, mimeType: mimeType, size: item.fileSize, attributes: [.FileName(fileName: item.fileName)]) + var attributes: [TelegramMediaFileAttribute] = [] + attributes.append(.FileName(fileName: item.fileName)) + if let audioMetadata = item.audioMetadata { + attributes.append(.Audio(isVoice: false, duration: audioMetadata.duration, title: audioMetadata.title, performer: audioMetadata.performer, waveform: nil)) + } + + let file = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: fileId), partialReference: nil, resource: ICloudFileResource(urlData: item.urlData, thumbnail: false), previewRepresentations: previewRepresentations, videoThumbnails: [], immediateThumbnailData: nil, mimeType: mimeType, size: item.fileSize, attributes: attributes) let message: EnqueueMessage = .message(text: "", attributes: [], mediaReference: .standalone(media: file), replyToMessageId: replyMessageId, localGroupingKey: groupingKey) messages.append(message) } diff --git a/submodules/TelegramUI/Sources/ChatMessageFileBubbleContentNode.swift b/submodules/TelegramUI/Sources/ChatMessageFileBubbleContentNode.swift index 897af6ca8e..bd5469c1ee 100644 --- a/submodules/TelegramUI/Sources/ChatMessageFileBubbleContentNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageFileBubbleContentNode.swift @@ -103,7 +103,7 @@ class ChatMessageFileBubbleContentNode: ChatMessageBubbleContentNode { if case let .linear(_, bottom) = position { if case .Neighbour = bottom { - bottomInset -= 20.0 + bottomInset -= 24.0 } } diff --git a/submodules/TelegramUI/Sources/ICloudResources.swift b/submodules/TelegramUI/Sources/ICloudResources.swift index d009949616..a4e00891fc 100644 --- a/submodules/TelegramUI/Sources/ICloudResources.swift +++ b/submodules/TelegramUI/Sources/ICloudResources.swift @@ -6,6 +6,7 @@ import SyncCore import SwiftSignalKit import Display import Pdf +import AVFoundation public struct ICloudFileResourceId: MediaResourceId { public let urlData: String @@ -68,9 +69,16 @@ public class ICloudFileResource: TelegramMediaResource { } struct ICloudFileDescription { + struct AudioMetadata { + let title: String? + let performer: String? + let duration: Int + } + let urlData: String let fileName: String let fileSize: Int + let audioMetadata: AudioMetadata? } private func descriptionWithUrl(_ url: URL) -> ICloudFileDescription? { @@ -91,7 +99,18 @@ private func descriptionWithUrl(_ url: URL) -> ICloudFileDescription? { return nil } - let result = ICloudFileDescription(urlData: urlData.base64EncodedString(), fileName: fileName, fileSize: fileSize) + var audioMetadata: ICloudFileDescription.AudioMetadata? + if ["mp3", "m4a"].contains(url.pathExtension.lowercased()) { + let asset = AVURLAsset(url: url) + let title = AVMetadataItem.metadataItems(from: asset.commonMetadata, withKey: AVMetadataKey.commonKeyTitle, keySpace: AVMetadataKeySpace.common).first?.stringValue + let performer = AVMetadataItem.metadataItems(from: asset.commonMetadata, withKey: AVMetadataKey.commonKeyArtist, keySpace: AVMetadataKeySpace.common).first?.stringValue + let duration = CMTimeGetSeconds(asset.duration) + if duration > 0 { + audioMetadata = ICloudFileDescription.AudioMetadata(title: title, performer: performer, duration: Int(duration)) + } + } + + let result = ICloudFileDescription(urlData: urlData.base64EncodedString(), fileName: fileName, fileSize: fileSize, audioMetadata: audioMetadata) url.stopAccessingSecurityScopedResource() From 23df050f9b1670567ecad7f784aa3b5570b449fc Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Wed, 7 Oct 2020 17:34:55 +0400 Subject: [PATCH 14/15] Fix file bubble layout --- .../ChatMessageAttachedContentNode.swift | 2 +- .../ChatMessageBubbleContentNode.swift | 7 +- .../Sources/ChatMessageBubbleItemNode.swift | 74 +++++++++++-------- .../ChatMessageCommentFooterContentNode.swift | 2 +- .../ChatMessageContactBubbleContentNode.swift | 2 +- .../ChatMessageFileBubbleContentNode.swift | 4 +- .../ChatMessageMapBubbleContentNode.swift | 4 +- .../ChatMessageMediaBubbleContentNode.swift | 2 +- .../ChatMessagePollBubbleContentNode.swift | 2 +- ...atMessageRestrictedBubbleContentNode.swift | 2 +- .../ChatMessageTextBubbleContentNode.swift | 2 +- 11 files changed, 59 insertions(+), 44 deletions(-) diff --git a/submodules/TelegramUI/Sources/ChatMessageAttachedContentNode.swift b/submodules/TelegramUI/Sources/ChatMessageAttachedContentNode.swift index c7d94e8c8f..65f3007e70 100644 --- a/submodules/TelegramUI/Sources/ChatMessageAttachedContentNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageAttachedContentNode.swift @@ -531,7 +531,7 @@ final class ChatMessageAttachedContentNode: ASDisplayNode { var additionalImageBadgeContent: ChatMessageInteractiveMediaBadgeContent? switch position { - case .linear(_, .None), .linear(_, .Neighbour(true, _)): + case .linear(_, .None), .linear(_, .Neighbour(true, _, _)): let imageMode = !((refineContentImageLayout == nil && refineContentFileLayout == nil && contentInstantVideoSizeAndApply == nil) || preferMediaBeforeText) statusInText = !imageMode diff --git a/submodules/TelegramUI/Sources/ChatMessageBubbleContentNode.swift b/submodules/TelegramUI/Sources/ChatMessageBubbleContentNode.swift index 512bd94509..841dbd8156 100644 --- a/submodules/TelegramUI/Sources/ChatMessageBubbleContentNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageBubbleContentNode.swift @@ -46,9 +46,14 @@ enum ChatMessageBubbleRelativePosition { case freeform } + enum NeighbourSpacing { + case `default` + case condensed + } + case None(ChatMessageBubbleMergeStatus) case BubbleNeighbour - case Neighbour(Bool, NeighbourType) + case Neighbour(Bool, NeighbourType, NeighbourSpacing) } enum ChatMessageBubbleContentMosaicNeighbor { diff --git a/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift b/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift index ba872c7a3c..0a7ef476ec 100644 --- a/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift @@ -32,6 +32,7 @@ enum InternalBubbleTapAction { private struct BubbleItemAttributes { var isAttachment: Bool var neighborType: ChatMessageBubbleRelativePosition.NeighbourType + var neighborSpacing: ChatMessageBubbleRelativePosition.NeighbourSpacing } private func contentNodeMessagesAndClassesForItem(_ item: ChatMessageItem) -> [(Message, AnyClass, ChatMessageEntryAttributes, BubbleItemAttributes)] { @@ -41,52 +42,61 @@ private func contentNodeMessagesAndClassesForItem(_ item: ChatMessageItem) -> [( var isUnsupportedMedia = false var isAction = false + var previousItemIsMusic = false + outer: for (message, itemAttributes) in item.content { for attribute in message.attributes { if let attribute = attribute as? RestrictedContentMessageAttribute, attribute.platformText(platform: "ios", contentSettings: item.context.currentContentSettings.with { $0 }) != nil { - result.append((message, ChatMessageRestrictedBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform))) + result.append((message, ChatMessageRestrictedBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform, neighborSpacing: .default))) break outer } } inner: for media in message.media { + var isMusic = false if let _ = media as? TelegramMediaImage { - result.append((message, ChatMessageMediaBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .media))) + result.append((message, ChatMessageMediaBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .media, neighborSpacing: .default))) } else if let file = media as? TelegramMediaFile { let isVideo = file.isVideo || (file.isAnimated && file.dimensions != nil) if isVideo { - result.append((message, ChatMessageMediaBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .media))) + result.append((message, ChatMessageMediaBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .media, neighborSpacing: .default))) } else { - result.append((message, ChatMessageFileBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform))) + var neighborSpacing: ChatMessageBubbleRelativePosition.NeighbourSpacing = .default + if previousItemIsMusic { + neighborSpacing = .condensed + } + isMusic = file.isMusic + result.append((message, ChatMessageFileBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform, neighborSpacing: neighborSpacing))) } } else if let action = media as? TelegramMediaAction { isAction = true if case .phoneCall = action.action { - result.append((message, ChatMessageCallBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform))) + result.append((message, ChatMessageCallBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform, neighborSpacing: .default))) } else { - result.append((message, ChatMessageActionBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform))) + result.append((message, ChatMessageActionBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform, neighborSpacing: .default))) } } else if let _ = media as? TelegramMediaMap { - result.append((message, ChatMessageMapBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform))) + result.append((message, ChatMessageMapBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform, neighborSpacing: .default))) } else if let _ = media as? TelegramMediaGame { skipText = true - result.append((message, ChatMessageGameBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform))) + result.append((message, ChatMessageGameBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform, neighborSpacing: .default))) break inner } else if let _ = media as? TelegramMediaInvoice { skipText = true - result.append((message, ChatMessageInvoiceBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform))) + result.append((message, ChatMessageInvoiceBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform, neighborSpacing: .default))) break inner } else if let _ = media as? TelegramMediaContact { - result.append((message, ChatMessageContactBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform))) + result.append((message, ChatMessageContactBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform, neighborSpacing: .default))) } else if let _ = media as? TelegramMediaExpiredContent { result.removeAll() - result.append((message, ChatMessageActionBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform))) + result.append((message, ChatMessageActionBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform, neighborSpacing: .default))) return result } else if let _ = media as? TelegramMediaPoll { - result.append((message, ChatMessagePollBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform))) + result.append((message, ChatMessagePollBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform, neighborSpacing: .default))) } else if let _ = media as? TelegramMediaUnsupported { isUnsupportedMedia = true } + previousItemIsMusic = isMusic } var messageText = message.text @@ -100,7 +110,7 @@ private func contentNodeMessagesAndClassesForItem(_ item: ChatMessageItem) -> [( messageWithCaptionToAdd = (message, itemAttributes) skipText = true } else { - result.append((message, ChatMessageTextBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform))) + result.append((message, ChatMessageTextBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform, neighborSpacing: .default))) } } else { if case .group = item.content { @@ -112,29 +122,29 @@ private func contentNodeMessagesAndClassesForItem(_ item: ChatMessageItem) -> [( inner: for media in message.media { if let webpage = media as? TelegramMediaWebpage { if case .Loaded = webpage.content { - result.append((message, ChatMessageWebpageBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform))) + result.append((message, ChatMessageWebpageBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform, neighborSpacing: .default))) } break inner } } if isUnsupportedMedia { - result.append((message, ChatMessageUnsupportedBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform))) + result.append((message, ChatMessageUnsupportedBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform, neighborSpacing: .default))) } } if let (messageWithCaptionToAdd, itemAttributes) = messageWithCaptionToAdd { - result.append((messageWithCaptionToAdd, ChatMessageTextBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform))) + result.append((messageWithCaptionToAdd, ChatMessageTextBubbleContentNode.self, itemAttributes, BubbleItemAttributes(isAttachment: false, neighborType: .freeform, neighborSpacing: .default))) } if let additionalContent = item.additionalContent { switch additionalContent { case let .eventLogPreviousMessage(previousMessage): - result.append((previousMessage, ChatMessageEventLogPreviousMessageContentNode.self, ChatMessageEntryAttributes(), BubbleItemAttributes(isAttachment: false, neighborType: .freeform))) + result.append((previousMessage, ChatMessageEventLogPreviousMessageContentNode.self, ChatMessageEntryAttributes(), BubbleItemAttributes(isAttachment: false, neighborType: .freeform, neighborSpacing: .default))) case let .eventLogPreviousDescription(previousMessage): - result.append((previousMessage, ChatMessageEventLogPreviousDescriptionContentNode.self, ChatMessageEntryAttributes(), BubbleItemAttributes(isAttachment: false, neighborType: .freeform))) + result.append((previousMessage, ChatMessageEventLogPreviousDescriptionContentNode.self, ChatMessageEntryAttributes(), BubbleItemAttributes(isAttachment: false, neighborType: .freeform, neighborSpacing: .default))) case let .eventLogPreviousLink(previousMessage): - result.append((previousMessage, ChatMessageEventLogPreviousLinkContentNode.self, ChatMessageEntryAttributes(), BubbleItemAttributes(isAttachment: false, neighborType: .freeform))) + result.append((previousMessage, ChatMessageEventLogPreviousLinkContentNode.self, ChatMessageEntryAttributes(), BubbleItemAttributes(isAttachment: false, neighborType: .freeform, neighborSpacing: .default))) } } @@ -167,10 +177,10 @@ private func contentNodeMessagesAndClassesForItem(_ item: ChatMessageItem) -> [( } if canComment { - result.append((firstMessage, ChatMessageCommentFooterContentNode.self, ChatMessageEntryAttributes(), BubbleItemAttributes(isAttachment: true, neighborType: .freeform))) + result.append((firstMessage, ChatMessageCommentFooterContentNode.self, ChatMessageEntryAttributes(), BubbleItemAttributes(isAttachment: true, neighborType: .freeform, neighborSpacing: .default))) } } else if firstMessage.id.peerId.isReplies { - result.append((firstMessage, ChatMessageCommentFooterContentNode.self, ChatMessageEntryAttributes(), BubbleItemAttributes(isAttachment: true, neighborType: .freeform))) + result.append((firstMessage, ChatMessageCommentFooterContentNode.self, ChatMessageEntryAttributes(), BubbleItemAttributes(isAttachment: true, neighborType: .freeform, neighborSpacing: .default))) } } @@ -1118,8 +1128,8 @@ class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePrevewItemNode let topPosition: ChatMessageBubbleRelativePosition let bottomPosition: ChatMessageBubbleRelativePosition - var topBubbleAttributes = BubbleItemAttributes(isAttachment: false, neighborType: .freeform) - var bottomBubbleAttributes = BubbleItemAttributes(isAttachment: false, neighborType: .freeform) + var topBubbleAttributes = BubbleItemAttributes(isAttachment: false, neighborType: .freeform, neighborSpacing: .default) + var bottomBubbleAttributes = BubbleItemAttributes(isAttachment: false, neighborType: .freeform, neighborSpacing: .default) if index != 0 { topBubbleAttributes = contentPropertiesAndPrepareLayouts[index - 1].3 } @@ -1127,8 +1137,8 @@ class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePrevewItemNode bottomBubbleAttributes = contentPropertiesAndPrepareLayouts[index + 1].3 } - topPosition = .Neighbour(topBubbleAttributes.isAttachment, topBubbleAttributes.neighborType) - bottomPosition = .Neighbour(bottomBubbleAttributes.isAttachment, bottomBubbleAttributes.neighborType) + topPosition = .Neighbour(topBubbleAttributes.isAttachment, topBubbleAttributes.neighborType, topBubbleAttributes.neighborSpacing) + bottomPosition = .Neighbour(bottomBubbleAttributes.isAttachment, bottomBubbleAttributes.neighborType, bottomBubbleAttributes.neighborSpacing) let prepareContentPosition: ChatMessageBubblePreparePosition if let mosaicRange = mosaicRange, mosaicRange.contains(index) { @@ -1262,7 +1272,7 @@ class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePrevewItemNode let firstNodeTopPosition: ChatMessageBubbleRelativePosition if displayHeader { - firstNodeTopPosition = .Neighbour(false, .freeform) + firstNodeTopPosition = .Neighbour(false, .freeform, .default) } else { firstNodeTopPosition = .None(topNodeMergeStatus) } @@ -1556,7 +1566,7 @@ class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePrevewItemNode if mosaicRange.upperBound - 1 == contentNodeCount - 1 { lastMosaicBottomPosition = lastNodeTopPosition } else { - lastMosaicBottomPosition = .Neighbour(false, .freeform) + lastMosaicBottomPosition = .Neighbour(false, .freeform, .default) } if position.contains(.bottom), case .Neighbour = lastMosaicBottomPosition { @@ -1619,8 +1629,8 @@ class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePrevewItemNode let topPosition: ChatMessageBubbleRelativePosition let bottomPosition: ChatMessageBubbleRelativePosition - var topBubbleAttributes = BubbleItemAttributes(isAttachment: false, neighborType: .freeform) - var bottomBubbleAttributes = BubbleItemAttributes(isAttachment: false, neighborType: .freeform) + var topBubbleAttributes = BubbleItemAttributes(isAttachment: false, neighborType: .freeform, neighborSpacing: .default) + var bottomBubbleAttributes = BubbleItemAttributes(isAttachment: false, neighborType: .freeform, neighborSpacing: .default) if i != 0 { topBubbleAttributes = contentPropertiesAndLayouts[i - 1].3 } @@ -1631,19 +1641,19 @@ class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePrevewItemNode if i == 0 { topPosition = firstNodeTopPosition } else { - topPosition = .Neighbour(topBubbleAttributes.isAttachment, topBubbleAttributes.neighborType) + topPosition = .Neighbour(topBubbleAttributes.isAttachment, topBubbleAttributes.neighborType, topBubbleAttributes.neighborSpacing) } if i == contentNodeCount - 1 { bottomPosition = lastNodeTopPosition } else { - bottomPosition = .Neighbour(bottomBubbleAttributes.isAttachment, bottomBubbleAttributes.neighborType) + bottomPosition = .Neighbour(bottomBubbleAttributes.isAttachment, bottomBubbleAttributes.neighborType, bottomBubbleAttributes.neighborSpacing) } contentPosition = .linear(top: topPosition, bottom: bottomPosition) case .mosaic: assertionFailure() - contentPosition = .linear(top: .Neighbour(false, .freeform), bottom: .Neighbour(false, .freeform)) + contentPosition = .linear(top: .Neighbour(false, .freeform, .default), bottom: .Neighbour(false, .freeform, .default)) } let (contentNodeWidth, contentNodeFinalize) = contentNodeLayout(CGSize(width: maximumNodeWidth, height: CGFloat.greatestFiniteMagnitude), contentPosition) #if DEBUG diff --git a/submodules/TelegramUI/Sources/ChatMessageCommentFooterContentNode.swift b/submodules/TelegramUI/Sources/ChatMessageCommentFooterContentNode.swift index 275dfd3482..ffd067a569 100644 --- a/submodules/TelegramUI/Sources/ChatMessageCommentFooterContentNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageCommentFooterContentNode.swift @@ -106,7 +106,7 @@ final class ChatMessageCommentFooterContentNode: ChatMessageBubbleContentNode { let displaySeparator: Bool let topOffset: CGFloat - if case let .linear(top, _) = preparePosition, case .Neighbour(_, .media) = top { + if case let .linear(top, _) = preparePosition, case .Neighbour(_, .media, _) = top { displaySeparator = false topOffset = 2.0 } else { diff --git a/submodules/TelegramUI/Sources/ChatMessageContactBubbleContentNode.swift b/submodules/TelegramUI/Sources/ChatMessageContactBubbleContentNode.swift index 01eca96f48..b907849260 100644 --- a/submodules/TelegramUI/Sources/ChatMessageContactBubbleContentNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageContactBubbleContentNode.swift @@ -176,7 +176,7 @@ class ChatMessageContactBubbleContentNode: ChatMessageBubbleContentNode { let statusType: ChatMessageDateAndStatusType? switch position { - case .linear(_, .None), .linear(_, .Neighbour(true, _)): + case .linear(_, .None), .linear(_, .Neighbour(true, _, _)): if item.message.effectivelyIncoming(item.context.account.peerId) { statusType = .BubbleIncoming } else { diff --git a/submodules/TelegramUI/Sources/ChatMessageFileBubbleContentNode.swift b/submodules/TelegramUI/Sources/ChatMessageFileBubbleContentNode.swift index bd5469c1ee..0d51212bf2 100644 --- a/submodules/TelegramUI/Sources/ChatMessageFileBubbleContentNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageFileBubbleContentNode.swift @@ -71,7 +71,7 @@ class ChatMessageFileBubbleContentNode: ChatMessageBubbleContentNode { let incoming = item.message.effectivelyIncoming(item.context.account.peerId) let statusType: ChatMessageDateAndStatusType? switch preparePosition { - case .linear(_, .None), .linear(_, .Neighbour(true, _)): + case .linear(_, .None), .linear(_, .Neighbour(true, _, _)): if incoming { statusType = .BubbleIncoming } else { @@ -102,7 +102,7 @@ class ChatMessageFileBubbleContentNode: ChatMessageBubbleContentNode { var bottomInset = layoutConstants.file.bubbleInsets.bottom if case let .linear(_, bottom) = position { - if case .Neighbour = bottom { + if case .Neighbour(_, _, .condensed) = bottom { bottomInset -= 24.0 } } diff --git a/submodules/TelegramUI/Sources/ChatMessageMapBubbleContentNode.swift b/submodules/TelegramUI/Sources/ChatMessageMapBubbleContentNode.swift index 5fb7fdb35d..9996545f0b 100644 --- a/submodules/TelegramUI/Sources/ChatMessageMapBubbleContentNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageMapBubbleContentNode.swift @@ -157,7 +157,7 @@ class ChatMessageMapBubbleContentNode: ChatMessageBubbleContentNode { if activeLiveBroadcastingTimeout != nil || selectedMedia?.venue != nil { var relativePosition = position if case let .linear(top, _) = position { - relativePosition = .linear(top: top, bottom: .Neighbour(false, .freeform)) + relativePosition = .linear(top: top, bottom: .Neighbour(false, .freeform, .default)) } imageCorners = chatMessageBubbleImageContentCorners(relativeContentPosition: relativePosition, normalRadius: layoutConstants.image.defaultCornerRadius, mergedRadius: layoutConstants.image.mergedCornerRadius, mergedWithAnotherContentRadius: layoutConstants.image.contentMergedCornerRadius, layoutConstants: layoutConstants, chatPresentationData: item.presentationData) @@ -212,7 +212,7 @@ class ChatMessageMapBubbleContentNode: ChatMessageBubbleContentNode { let statusType: ChatMessageDateAndStatusType? switch position { - case .linear(_, .None), .linear(_, .Neighbour(true, _)): + case .linear(_, .None), .linear(_, .Neighbour(true, _, _)): if selectedMedia?.venue != nil || activeLiveBroadcastingTimeout != nil { if item.message.effectivelyIncoming(item.context.account.peerId) { statusType = .BubbleIncoming diff --git a/submodules/TelegramUI/Sources/ChatMessageMediaBubbleContentNode.swift b/submodules/TelegramUI/Sources/ChatMessageMediaBubbleContentNode.swift index 7e94647085..9c43bddac1 100644 --- a/submodules/TelegramUI/Sources/ChatMessageMediaBubbleContentNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageMediaBubbleContentNode.swift @@ -207,7 +207,7 @@ class ChatMessageMediaBubbleContentNode: ChatMessageBubbleContentNode { let statusType: ChatMessageDateAndStatusType? switch position { - case .linear(_, .None), .linear(_, .Neighbour(true, _)): + case .linear(_, .None), .linear(_, .Neighbour(true, _, _)): if item.message.effectivelyIncoming(item.context.account.peerId) { statusType = .ImageIncoming } else { diff --git a/submodules/TelegramUI/Sources/ChatMessagePollBubbleContentNode.swift b/submodules/TelegramUI/Sources/ChatMessagePollBubbleContentNode.swift index aafdd77778..ecbf4508b9 100644 --- a/submodules/TelegramUI/Sources/ChatMessagePollBubbleContentNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessagePollBubbleContentNode.swift @@ -1054,7 +1054,7 @@ class ChatMessagePollBubbleContentNode: ChatMessageBubbleContentNode { let statusType: ChatMessageDateAndStatusType? switch position { - case .linear(_, .None), .linear(_, .Neighbour(true, _)): + case .linear(_, .None), .linear(_, .Neighbour(true, _, _)): if incoming { statusType = .BubbleIncoming } else { diff --git a/submodules/TelegramUI/Sources/ChatMessageRestrictedBubbleContentNode.swift b/submodules/TelegramUI/Sources/ChatMessageRestrictedBubbleContentNode.swift index dfdd041beb..424e01650a 100644 --- a/submodules/TelegramUI/Sources/ChatMessageRestrictedBubbleContentNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageRestrictedBubbleContentNode.swift @@ -85,7 +85,7 @@ class ChatMessageRestrictedBubbleContentNode: ChatMessageBubbleContentNode { let statusType: ChatMessageDateAndStatusType? switch position { - case .linear(_, .None), .linear(_, .Neighbour(true, _)): + case .linear(_, .None), .linear(_, .Neighbour(true, _, _)): if incoming { statusType = .BubbleIncoming } else { diff --git a/submodules/TelegramUI/Sources/ChatMessageTextBubbleContentNode.swift b/submodules/TelegramUI/Sources/ChatMessageTextBubbleContentNode.swift index fe3adf5011..eccca0af19 100644 --- a/submodules/TelegramUI/Sources/ChatMessageTextBubbleContentNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageTextBubbleContentNode.swift @@ -143,7 +143,7 @@ class ChatMessageTextBubbleContentNode: ChatMessageBubbleContentNode { case let .linear(_, neighbor): if case .None = neighbor { displayStatus = true - } else if case .Neighbour(true, _) = neighbor { + } else if case .Neighbour(true, _, _) = neighbor { displayStatus = true } default: From e8ff8c875b8514d2f6662be3a5bb3c417a851688 Mon Sep 17 00:00:00 2001 From: Ali <> Date: Wed, 7 Oct 2020 21:11:52 +0100 Subject: [PATCH 15/15] Quick fixes --- submodules/MtProtoKit/Sources/MTContext.m | 1 - submodules/Postbox/Sources/Postbox.swift | 9 +- .../StandaloneAccountTransaction.swift | 3 +- submodules/TelegramCore/Sources/Account.swift | 8 +- .../TelegramCore/Sources/AccountManager.swift | 2 +- .../Sources/AccountViewTracker.swift | 105 ++++++++++++++++++ .../Sources/ManagedLocalInputActivities.swift | 15 +++ .../Sources/ReplyThreadHistory.swift | 37 +++++- .../TelegramUI/Sources/ChatController.swift | 6 + .../Sources/ChatHistoryListNode.swift | 30 +++++ .../Sources/ChatMessageBubbleItemNode.swift | 2 +- .../Sources/ComposeController.swift | 37 ++++++ .../Sources/ComposeControllerNode.swift | 10 +- 13 files changed, 248 insertions(+), 17 deletions(-) diff --git a/submodules/MtProtoKit/Sources/MTContext.m b/submodules/MtProtoKit/Sources/MTContext.m index e84716e92a..4f386ee9bc 100644 --- a/submodules/MtProtoKit/Sources/MTContext.m +++ b/submodules/MtProtoKit/Sources/MTContext.m @@ -229,7 +229,6 @@ static int32_t fixedTimeDifferenceValue = 0; _useTempAuthKeys = useTempAuthKeys; #if DEBUG _tempKeyExpiration = 1 * 60 * 60; - _tempKeyExpiration = 5; #else _tempKeyExpiration = 24 * 60 * 60; #endif diff --git a/submodules/Postbox/Sources/Postbox.swift b/submodules/Postbox/Sources/Postbox.swift index 569a26d0d6..a91d918a88 100644 --- a/submodules/Postbox/Sources/Postbox.swift +++ b/submodules/Postbox/Sources/Postbox.swift @@ -1105,7 +1105,7 @@ func debugRestoreState(basePath:String, name: String) { private let sharedQueue = Queue(name: "org.telegram.postbox.Postbox") -public func openPostbox(basePath: String, seedConfiguration: SeedConfiguration, encryptionParameters: ValueBoxEncryptionParameters) -> Signal { +public func openPostbox(basePath: String, seedConfiguration: SeedConfiguration, encryptionParameters: ValueBoxEncryptionParameters, timestampForAbsoluteTimeBasedOperations: Int32) -> Signal { let queue = sharedQueue return Signal { subscriber in queue.async { @@ -1177,7 +1177,7 @@ public func openPostbox(basePath: String, seedConfiguration: SeedConfiguration, let endTime = CFAbsoluteTimeGetCurrent() print("Postbox load took \((endTime - startTime) * 1000.0) ms") - subscriber.putNext(.postbox(Postbox(queue: queue, basePath: basePath, seedConfiguration: seedConfiguration, valueBox: valueBox))) + subscriber.putNext(.postbox(Postbox(queue: queue, basePath: basePath, seedConfiguration: seedConfiguration, valueBox: valueBox, timestampForAbsoluteTimeBasedOperations: timestampForAbsoluteTimeBasedOperations))) subscriber.putCompletion() break } @@ -1330,7 +1330,7 @@ public final class Postbox { var installedMessageActionsByPeerId: [PeerId: Bag<([StoreMessage], Transaction) -> Void>] = [:] - init(queue: Queue, basePath: String, seedConfiguration: SeedConfiguration, valueBox: SqliteValueBox) { + init(queue: Queue, basePath: String, seedConfiguration: SeedConfiguration, valueBox: SqliteValueBox, timestampForAbsoluteTimeBasedOperations: Int32) { assert(queue.isCurrent()) let startTime = CFAbsoluteTimeGetCurrent() @@ -1534,6 +1534,9 @@ public final class Postbox { for id in self.messageHistoryUnsentTable.get() { transaction.updateMessage(id, update: { message in if !message.flags.contains(.Failed) { + if message.timestamp + 60 * 10 > timestampForAbsoluteTimeBasedOperations { + return .skip + } var flags = StoreMessageFlags(message.flags) flags.remove(.Unsent) flags.remove(.Sending) diff --git a/submodules/SyncCore/Sources/StandaloneAccountTransaction.swift b/submodules/SyncCore/Sources/StandaloneAccountTransaction.swift index 3de0c39007..6faaa9e537 100644 --- a/submodules/SyncCore/Sources/StandaloneAccountTransaction.swift +++ b/submodules/SyncCore/Sources/StandaloneAccountTransaction.swift @@ -1,3 +1,4 @@ +import Foundation import SwiftSignalKit import Postbox @@ -67,7 +68,7 @@ public let telegramPostboxSeedConfiguration: SeedConfiguration = { public func accountTransaction(rootPath: String, id: AccountRecordId, encryptionParameters: ValueBoxEncryptionParameters, transaction: @escaping (Transaction) -> T) -> Signal { let path = "\(rootPath)/\(accountRecordIdPathName(id))" - let postbox = openPostbox(basePath: path + "/postbox", seedConfiguration: telegramPostboxSeedConfiguration, encryptionParameters: encryptionParameters) + let postbox = openPostbox(basePath: path + "/postbox", seedConfiguration: telegramPostboxSeedConfiguration, encryptionParameters: encryptionParameters, timestampForAbsoluteTimeBasedOperations: Int32(CFAbsoluteTimeGetCurrent() + NSTimeIntervalSince1970)) return postbox |> mapToSignal { value -> Signal in switch value { diff --git a/submodules/TelegramCore/Sources/Account.swift b/submodules/TelegramCore/Sources/Account.swift index 94774cb560..f99d7bb4ea 100644 --- a/submodules/TelegramCore/Sources/Account.swift +++ b/submodules/TelegramCore/Sources/Account.swift @@ -160,7 +160,7 @@ public enum AccountPreferenceEntriesResult { public func accountPreferenceEntries(rootPath: String, id: AccountRecordId, keys: Set, encryptionParameters: ValueBoxEncryptionParameters) -> Signal { let path = "\(rootPath)/\(accountRecordIdPathName(id))" - let postbox = openPostbox(basePath: path + "/postbox", seedConfiguration: telegramPostboxSeedConfiguration, encryptionParameters: encryptionParameters) + let postbox = openPostbox(basePath: path + "/postbox", seedConfiguration: telegramPostboxSeedConfiguration, encryptionParameters: encryptionParameters, timestampForAbsoluteTimeBasedOperations: Int32(CFAbsoluteTimeGetCurrent() + NSTimeIntervalSince1970)) return postbox |> mapToSignal { value -> Signal in switch value { @@ -187,7 +187,7 @@ public enum AccountNoticeEntriesResult { public func accountNoticeEntries(rootPath: String, id: AccountRecordId, encryptionParameters: ValueBoxEncryptionParameters) -> Signal { let path = "\(rootPath)/\(accountRecordIdPathName(id))" - let postbox = openPostbox(basePath: path + "/postbox", seedConfiguration: telegramPostboxSeedConfiguration, encryptionParameters: encryptionParameters) + let postbox = openPostbox(basePath: path + "/postbox", seedConfiguration: telegramPostboxSeedConfiguration, encryptionParameters: encryptionParameters, timestampForAbsoluteTimeBasedOperations: Int32(CFAbsoluteTimeGetCurrent() + NSTimeIntervalSince1970)) return postbox |> mapToSignal { value -> Signal in switch value { @@ -208,7 +208,7 @@ public enum LegacyAccessChallengeDataResult { public func accountLegacyAccessChallengeData(rootPath: String, id: AccountRecordId, encryptionParameters: ValueBoxEncryptionParameters) -> Signal { let path = "\(rootPath)/\(accountRecordIdPathName(id))" - let postbox = openPostbox(basePath: path + "/postbox", seedConfiguration: telegramPostboxSeedConfiguration, encryptionParameters: encryptionParameters) + let postbox = openPostbox(basePath: path + "/postbox", seedConfiguration: telegramPostboxSeedConfiguration, encryptionParameters: encryptionParameters, timestampForAbsoluteTimeBasedOperations: Int32(CFAbsoluteTimeGetCurrent() + NSTimeIntervalSince1970)) return postbox |> mapToSignal { value -> Signal in switch value { @@ -225,7 +225,7 @@ public func accountLegacyAccessChallengeData(rootPath: String, id: AccountRecord public func accountWithId(accountManager: AccountManager, networkArguments: NetworkInitializationArguments, id: AccountRecordId, encryptionParameters: ValueBoxEncryptionParameters, supplementary: Bool, rootPath: String, beginWithTestingEnvironment: Bool, backupData: AccountBackupData?, auxiliaryMethods: AccountAuxiliaryMethods, shouldKeepAutoConnection: Bool = true) -> Signal { let path = "\(rootPath)/\(accountRecordIdPathName(id))" - let postbox = openPostbox(basePath: path + "/postbox", seedConfiguration: telegramPostboxSeedConfiguration, encryptionParameters: encryptionParameters) + let postbox = openPostbox(basePath: path + "/postbox", seedConfiguration: telegramPostboxSeedConfiguration, encryptionParameters: encryptionParameters, timestampForAbsoluteTimeBasedOperations: Int32(CFAbsoluteTimeGetCurrent() + NSTimeIntervalSince1970)) return postbox |> mapToSignal { result -> Signal in diff --git a/submodules/TelegramCore/Sources/AccountManager.swift b/submodules/TelegramCore/Sources/AccountManager.swift index 859e8d3cff..038a86654c 100644 --- a/submodules/TelegramCore/Sources/AccountManager.swift +++ b/submodules/TelegramCore/Sources/AccountManager.swift @@ -209,7 +209,7 @@ public func temporaryAccount(manager: AccountManager, rootPath: String, encrypti return manager.allocatedTemporaryAccountId() |> mapToSignal { id -> Signal in let path = "\(rootPath)/\(accountRecordIdPathName(id))" - return openPostbox(basePath: path + "/postbox", seedConfiguration: telegramPostboxSeedConfiguration, encryptionParameters: encryptionParameters) + return openPostbox(basePath: path + "/postbox", seedConfiguration: telegramPostboxSeedConfiguration, encryptionParameters: encryptionParameters, timestampForAbsoluteTimeBasedOperations: Int32(CFAbsoluteTimeGetCurrent() + NSTimeIntervalSince1970)) |> mapToSignal { result -> Signal in switch result { case .upgrading: diff --git a/submodules/TelegramCore/Sources/AccountViewTracker.swift b/submodules/TelegramCore/Sources/AccountViewTracker.swift index 9c4e78111e..cf87f6e9d8 100644 --- a/submodules/TelegramCore/Sources/AccountViewTracker.swift +++ b/submodules/TelegramCore/Sources/AccountViewTracker.swift @@ -291,6 +291,7 @@ public final class AccountViewTracker { private var seenLiveLocationDisposables = DisposableDict() private var updatedUnsupportedMediaMessageIdsAndTimestamps: [MessageId: Int32] = [:] + private var refreshSecretChatMediaMessageIdsAndTimestamps: [MessageId: Int32] = [:] private var nextUpdatedUnsupportedMediaDisposableId: Int32 = 0 private var updatedUnsupportedMediaDisposables = DisposableDict() @@ -631,6 +632,18 @@ public final class AccountViewTracker { |> runOn(self.queue) } + public func updateReplyInfoForMessageId(_ id: MessageId, info: UpdatedMessageReplyInfo) { + self.queue.async { [weak self] in + guard let strongSelf = self else { + return + } + guard let current = strongSelf.updatedViewCountMessageIdsAndTimestamps[id] else { + return + } + strongSelf.updatedViewCountMessageIdsAndTimestamps[id] = ViewCountContextState(timestamp: Int32(CFAbsoluteTimeGetCurrent()), clientId: current.clientId, result: ViewCountContextState.ReplyInfo(commentsPeerId: info.commentsPeerId, maxReadIncomingMessageId: info.maxReadIncomingMessageId, maxMessageId: info.maxMessageId)) + } + } + public func updateViewCountForMessageIds(messageIds: Set, clientId: Int32) { self.queue.async { var addedMessageIds: [MessageId] = [] @@ -1037,6 +1050,98 @@ public final class AccountViewTracker { } } + public func refreshSecretMediaMediaForMessageIds(messageIds: Set) { + self.queue.async { + var addedMessageIds: [MessageId] = [] + let timestamp = Int32(CFAbsoluteTimeGetCurrent()) + for messageId in messageIds { + let messageTimestamp = self.refreshSecretChatMediaMessageIdsAndTimestamps[messageId] + if messageTimestamp == nil { + self.refreshSecretChatMediaMessageIdsAndTimestamps[messageId] = timestamp + addedMessageIds.append(messageId) + } + } + if !addedMessageIds.isEmpty { + for (_, messageIds) in messagesIdsGroupedByPeerId(Set(addedMessageIds)) { + let disposableId = self.nextUpdatedUnsupportedMediaDisposableId + self.nextUpdatedUnsupportedMediaDisposableId += 1 + + if let account = self.account { + let signal = account.postbox.transaction { transaction -> [TelegramMediaFile] in + var result: [TelegramMediaFile] = [] + for id in messageIds { + if let message = transaction.getMessage(id) { + for media in message.media { + if let file = media as? TelegramMediaFile, file.isAnimatedSticker { + result.append(file) + } + } + } + } + return result + } + |> mapToSignal { files -> Signal in + guard !files.isEmpty else { + return .complete() + } + + var stickerPacks = Set() + for file in files { + for attribute in file.attributes { + if case let .Sticker(_, packReferenceValue, _) = attribute, let packReference = packReferenceValue { + if case .id = packReference { + stickerPacks.insert(packReference) + } + } + } + } + + var requests: [Signal] = [] + for reference in stickerPacks { + if case let .id(id, accessHash) = reference { + requests.append(account.network.request(Api.functions.messages.getStickerSet(stickerset: .inputStickerSetID(id: id, accessHash: accessHash))) + |> map(Optional.init) + |> `catch` { _ -> Signal in + return .single(nil) + }) + } + } + if requests.isEmpty { + return .complete() + } + + return combineLatest(requests) + |> mapToSignal { results -> Signal in + return account.postbox.transaction { transaction -> Void in + for result in results { + switch result { + case let .stickerSet(_, _, documents): + for document in documents { + if let file = telegramMediaFileFromApiDocument(document) { + if transaction.getMedia(file.fileId) != nil { + let _ = transaction.updateMedia(file.fileId, update: file) + } + } + } + default: + break + } + } + } + } + } + |> afterDisposed { [weak self] in + self?.queue.async { + self?.updatedUnsupportedMediaDisposables.set(nil, forKey: disposableId) + } + } + self.updatedUnsupportedMediaDisposables.set(signal.start(), forKey: disposableId) + } + } + } + } + } + public func updateMarkAllMentionsSeen(peerId: PeerId) { self.queue.async { guard let account = self.account else { diff --git a/submodules/TelegramCore/Sources/ManagedLocalInputActivities.swift b/submodules/TelegramCore/Sources/ManagedLocalInputActivities.swift index af75a65438..f54632ced1 100644 --- a/submodules/TelegramCore/Sources/ManagedLocalInputActivities.swift +++ b/submodules/TelegramCore/Sources/ManagedLocalInputActivities.swift @@ -130,6 +130,21 @@ private func requestActivity(postbox: Postbox, network: Network, accountPeerId: if let channel = peer as? TelegramChannel, case .broadcast = channel.info { return .complete() } + if let _ = peer as? TelegramUser { + if let presence = transaction.getPeerPresence(peerId: peerId) as? TelegramUserPresence { + switch presence.status { + case .none, .recently, .lastWeek, .lastMonth: + return .complete() + case let .present(statusTimestamp): + let timestamp = Int32(CFAbsoluteTimeGetCurrent() + NSTimeIntervalSince1970) + if statusTimestamp < timestamp { + return .complete() + } + } + } else { + return .complete() + } + } if let inputPeer = apiInputPeer(peer) { var flags: Int32 = 0 diff --git a/submodules/TelegramCore/Sources/ReplyThreadHistory.swift b/submodules/TelegramCore/Sources/ReplyThreadHistory.swift index d35538ba1f..c9626ed73d 100644 --- a/submodules/TelegramCore/Sources/ReplyThreadHistory.swift +++ b/submodules/TelegramCore/Sources/ReplyThreadHistory.swift @@ -145,10 +145,12 @@ private class ReplyThreadHistoryContextImpl { } var channelMessageId: MessageId? + var replyThreadAttribute: ReplyThreadMessageAttribute? for attribute in topMessage.attributes { if let attribute = attribute as? SourceReferenceMessageAttribute { channelMessageId = attribute.messageId - break + } else if let attribute = attribute as? ReplyThreadMessageAttribute { + replyThreadAttribute = attribute } } @@ -195,14 +197,41 @@ private class ReplyThreadHistoryContextImpl { } } + let maxReadIncomingMessageId = readInboxMaxId.flatMap { readMaxId in + MessageId(peerId: parsedIndex.id.peerId, namespace: Namespaces.Message.Cloud, id: readMaxId) + } + + if let channelMessageId = channelMessageId, let replyThreadAttribute = replyThreadAttribute { + account.viewTracker.updateReplyInfoForMessageId(channelMessageId, info: AccountViewTracker.UpdatedMessageReplyInfo( + timestamp: Int32(CFAbsoluteTimeGetCurrent()), + commentsPeerId: parsedIndex.id.peerId, + maxReadIncomingMessageId: maxReadIncomingMessageId, + maxMessageId: resolvedMaxMessage + )) + + transaction.updateMessage(channelMessageId, update: { currentMessage in + var attributes = currentMessage.attributes + loop: for j in 0 ..< attributes.count { + if let attribute = attributes[j] as? ReplyThreadMessageAttribute { + attributes[j] = ReplyThreadMessageAttribute( + count: replyThreadAttribute.count, + latestUsers: attribute.latestUsers, + commentsPeerId: attribute.commentsPeerId, + maxMessageId: replyThreadAttribute.maxMessageId, + maxReadMessageId: replyThreadAttribute.maxReadMessageId + ) + } + } + return .update(StoreMessage(id: currentMessage.id, globallyUniqueId: currentMessage.globallyUniqueId, groupingKey: currentMessage.groupingKey, threadId: currentMessage.threadId, timestamp: currentMessage.timestamp, flags: StoreMessageFlags(currentMessage.flags), tags: currentMessage.tags, globalTags: currentMessage.globalTags, localTags: currentMessage.localTags, forwardInfo: currentMessage.forwardInfo.flatMap(StoreMessageForwardInfo.init), authorId: currentMessage.author?.id, text: currentMessage.text, attributes: attributes, media: currentMessage.media)) + }) + } + return .single(DiscussionMessage( messageId: parsedIndex.id, channelMessageId: channelMessageId, isChannelPost: isChannelPost, maxMessage: resolvedMaxMessage, - maxReadIncomingMessageId: readInboxMaxId.flatMap { readMaxId in - MessageId(peerId: parsedIndex.id.peerId, namespace: Namespaces.Message.Cloud, id: readMaxId) - }, + maxReadIncomingMessageId: maxReadIncomingMessageId, maxReadOutgoingMessageId: readOutboxMaxId.flatMap { readMaxId in MessageId(peerId: parsedIndex.id.peerId, namespace: Namespaces.Message.Cloud, id: readMaxId) } diff --git a/submodules/TelegramUI/Sources/ChatController.swift b/submodules/TelegramUI/Sources/ChatController.swift index d0ea5b689a..b0bfa3ba5e 100644 --- a/submodules/TelegramUI/Sources/ChatController.swift +++ b/submodules/TelegramUI/Sources/ChatController.swift @@ -3068,6 +3068,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G } }) + var wasInForeground = true self.applicationInForegroundDisposable = (context.sharedContext.applicationBindings.applicationInForeground |> distinctUntilChanged |> deliverOn(Queue.mainQueue())).start(next: { [weak self] value in @@ -3077,7 +3078,12 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G strongSelf.raiseToListen?.applicationResignedActive() strongSelf.stopMediaRecorder() + } else { + if !wasInForeground { + strongSelf.chatDisplayNode.recursivelyEnsureDisplaySynchronously(true) + } } + wasInForeground = value } }) diff --git a/submodules/TelegramUI/Sources/ChatHistoryListNode.swift b/submodules/TelegramUI/Sources/ChatHistoryListNode.swift index 37ed46c24a..27d97c4b01 100644 --- a/submodules/TelegramUI/Sources/ChatHistoryListNode.swift +++ b/submodules/TelegramUI/Sources/ChatHistoryListNode.swift @@ -514,6 +514,7 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode { private let messageReactionsProcessingManager = ChatMessageThrottledProcessingManager() private let seenLiveLocationProcessingManager = ChatMessageThrottledProcessingManager() private let unsupportedMessageProcessingManager = ChatMessageThrottledProcessingManager() + private let refreshMediaProcessingManager = ChatMessageThrottledProcessingManager() private let messageMentionProcessingManager = ChatMessageThrottledProcessingManager(delay: 0.2) let prefetchManager: InChatPrefetchManager private var currentEarlierPrefetchMessages: [(Message, Media)] = [] @@ -605,6 +606,9 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode { self.unsupportedMessageProcessingManager.process = { [weak context] messageIds in context?.account.viewTracker.updateUnsupportedMediaForMessageIds(messageIds: messageIds) } + self.refreshMediaProcessingManager.process = { [weak context] messageIds in + context?.account.viewTracker.refreshSecretMediaMediaForMessageIds(messageIds: messageIds) + } self.messageMentionProcessingManager.process = { [weak context] messageIds in context?.account.viewTracker.updateMarkMentionsSeenForMessageIds(messageIds: messageIds) } @@ -1174,6 +1178,7 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode { var messageIdsWithUpdateableReactions: [MessageId] = [] var messageIdsWithLiveLocation: [MessageId] = [] var messageIdsWithUnsupportedMedia: [MessageId] = [] + var messageIdsWithRefreshMedia: [MessageId] = [] var messageIdsWithUnseenPersonalMention: [MessageId] = [] var messagesWithPreloadableMediaToEarlier: [(Message, Media)] = [] var messagesWithPreloadableMediaToLater: [(Message, Media)] = [] @@ -1192,6 +1197,7 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode { } } var contentRequiredValidation = false + var mediaRequiredValidation = false for attribute in message.attributes { if attribute is ViewCountMessageAttribute { if message.id.namespace == Namespaces.Message.Cloud { @@ -1218,6 +1224,24 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode { } } else if let _ = media as? TelegramMediaAction { isAction = true + } else if let telegramFile = media as? TelegramMediaFile { + if telegramFile.isAnimatedSticker, (message.id.peerId.namespace == Namespaces.Peer.SecretChat || !telegramFile.previewRepresentations.isEmpty), let size = telegramFile.size, size > 0 && size <= 128 * 1024 { + if message.id.peerId.namespace == Namespaces.Peer.SecretChat { + if telegramFile.fileId.namespace == Namespaces.Media.CloudFile { + var isValidated = false + attributes: for attribute in telegramFile.attributes { + if case .hintIsValidated = attribute { + isValidated = true + break attributes + } + } + + if !isValidated { + mediaRequiredValidation = true + } + } + } + } } } if !isAction && message.id.peerId.namespace == Namespaces.Peer.CloudChannel { @@ -1226,6 +1250,9 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode { if contentRequiredValidation { messageIdsWithUnsupportedMedia.append(message.id) } + if mediaRequiredValidation { + messageIdsWithRefreshMedia.append(message.id) + } if hasUnconsumedMention && !hasUnconsumedContent { messageIdsWithUnseenPersonalMention.append(message.id) } @@ -1346,6 +1373,9 @@ public final class ChatHistoryListNode: ListView, ChatHistoryNode { if !messageIdsWithUnsupportedMedia.isEmpty { self.unsupportedMessageProcessingManager.add(messageIdsWithUnsupportedMedia) } + if !messageIdsWithRefreshMedia.isEmpty { + self.refreshMediaProcessingManager.add(messageIdsWithRefreshMedia) + } if !messageIdsWithUnseenPersonalMention.isEmpty { self.messageMentionProcessingManager.add(messageIdsWithUnseenPersonalMention) } diff --git a/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift b/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift index d504d675e3..63834eb50a 100644 --- a/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageBubbleItemNode.swift @@ -1056,7 +1056,7 @@ class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePrevewItemNode } else if let attribute = attribute as? ReplyMarkupMessageAttribute, attribute.flags.contains(.inline), !attribute.rows.isEmpty && !isPreview { replyMarkup = attribute } else if let attribute = attribute as? AuthorSignatureMessageAttribute { - if firstMessage.author is TelegramChannel, !attribute.signature.isEmpty { + if let chatPeer = firstMessage.peers[firstMessage.id.peerId] as? TelegramChannel, case .group = chatPeer.info, firstMessage.author is TelegramChannel, !attribute.signature.isEmpty { authorRank = .custom(attribute.signature) } } diff --git a/submodules/TelegramUI/Sources/ComposeController.swift b/submodules/TelegramUI/Sources/ComposeController.swift index c76dbaae28..8522384ec6 100644 --- a/submodules/TelegramUI/Sources/ComposeController.swift +++ b/submodules/TelegramUI/Sources/ComposeController.swift @@ -13,6 +13,7 @@ import PresentationDataUtils import SearchUI import TelegramPermissionsUI import AppBundle +import DeviceAccess public class ComposeController: ViewController { private let context: AccountContext @@ -183,6 +184,42 @@ public class ComposeController: ViewController { } } + self.contactsNode.openCreateContact = { [weak self] in + let _ = (DeviceAccess.authorizationStatus(subject: .contacts) + |> take(1) + |> deliverOnMainQueue).start(next: { status in + guard let strongSelf = self else { + return + } + + switch status { + case .allowed: + let contactData = DeviceContactExtendedData(basicData: DeviceContactBasicData(firstName: "", lastName: "", phoneNumbers: [DeviceContactPhoneNumberData(label: "_$!!$_", value: "+")]), middleName: "", prefix: "", suffix: "", organization: "", jobTitle: "", department: "", emailAddresses: [], urls: [], addresses: [], birthdayDate: nil, socialProfiles: [], instantMessagingProfiles: [], note: "") + (strongSelf.navigationController as? NavigationController)?.pushViewController(strongSelf.context.sharedContext.makeDeviceContactInfoController(context: strongSelf.context, subject: .create(peer: nil, contactData: contactData, isSharing: false, shareViaException: false, completion: { peer, stableId, contactData in + guard let strongSelf = self else { + return + } + if let peer = peer { + DispatchQueue.main.async { + if let navigationController = strongSelf.navigationController as? NavigationController { + strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peer.id))) + } + } + } else { + (strongSelf.navigationController as? NavigationController)?.replaceAllButRootController(strongSelf.context.sharedContext.makeDeviceContactInfoController(context: strongSelf.context, subject: .vcard(nil, stableId, contactData), completed: nil, cancelled: nil), animated: true) + } + }), completed: nil, cancelled: nil)) + case .notDetermined: + DeviceAccess.authorizeAccess(to: .contacts) + default: + let presentationData = strongSelf.presentationData + strongSelf.present(textAlertController(context: strongSelf.context, title: presentationData.strings.AccessDenied_Title, text: presentationData.strings.Contacts_AccessDeniedError, actions: [TextAlertAction(type: .defaultAction, title: presentationData.strings.Common_NotNow, action: {}), TextAlertAction(type: .genericAction, title: presentationData.strings.AccessDenied_Settings, action: { + self?.context.sharedContext.applicationBindings.openSettings() + })]), in: .window(.root)) + } + }) + } + self.contactsNode.openCreateNewChannel = { [weak self] in if let strongSelf = self { let presentationData = strongSelf.context.sharedContext.currentPresentationData.with { $0 } diff --git a/submodules/TelegramUI/Sources/ComposeControllerNode.swift b/submodules/TelegramUI/Sources/ComposeControllerNode.swift index 3ed319633c..473daf26c4 100644 --- a/submodules/TelegramUI/Sources/ComposeControllerNode.swift +++ b/submodules/TelegramUI/Sources/ComposeControllerNode.swift @@ -27,6 +27,7 @@ final class ComposeControllerNode: ASDisplayNode { var openCreateNewGroup: (() -> Void)? var openCreateNewSecretChat: (() -> Void)? + var openCreateContact: (() -> Void)? var openCreateNewChannel: (() -> Void)? private var presentationData: PresentationData @@ -39,14 +40,15 @@ final class ComposeControllerNode: ASDisplayNode { var openCreateNewGroupImpl: (() -> Void)? var openCreateNewSecretChatImpl: (() -> Void)? + var openCreateContactImpl: (() -> Void)? var openCreateNewChannelImpl: (() -> Void)? self.contactListNode = ContactListNode(context: context, presentation: .single(.natural(options: [ ContactListAdditionalOption(title: self.presentationData.strings.Compose_NewGroup, icon: .generic(UIImage(bundleImageName: "Contact List/CreateGroupActionIcon")!), action: { openCreateNewGroupImpl?() }), - ContactListAdditionalOption(title: self.presentationData.strings.Compose_NewEncryptedChat, icon: .generic(UIImage(bundleImageName: "Contact List/CreateSecretChatActionIcon")!), action: { - openCreateNewSecretChatImpl?() + ContactListAdditionalOption(title: self.presentationData.strings.NewContact_Title, icon: .generic(UIImage(bundleImageName: "Contact List/AddMemberIcon")!), action: { + openCreateContactImpl?() }), ContactListAdditionalOption(title: self.presentationData.strings.Compose_NewChannel, icon: .generic(UIImage(bundleImageName: "Contact List/CreateChannelActionIcon")!), action: { openCreateNewChannelImpl?() @@ -69,6 +71,10 @@ final class ComposeControllerNode: ASDisplayNode { openCreateNewSecretChatImpl = { [weak self] in self?.openCreateNewSecretChat?() } + openCreateContactImpl = { [weak self] in + self?.contactListNode.listNode.clearHighlightAnimated(true) + self?.openCreateContact?() + } openCreateNewChannelImpl = { [weak self] in self?.openCreateNewChannel?() }