From e906e0ee6ac4b1b77d018695d6768ff98d9d5f2e Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Thu, 11 Jul 2019 01:11:47 +0200 Subject: [PATCH 01/19] Present update info screen above everything else --- submodules/TelegramUI/TelegramUI/ApplicationContext.swift | 2 +- .../TelegramUI/TelegramUI/PresentationSurfaceLevels.swift | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/submodules/TelegramUI/TelegramUI/ApplicationContext.swift b/submodules/TelegramUI/TelegramUI/ApplicationContext.swift index c43b065bc2..f9a7928f99 100644 --- a/submodules/TelegramUI/TelegramUI/ApplicationContext.swift +++ b/submodules/TelegramUI/TelegramUI/ApplicationContext.swift @@ -522,7 +522,7 @@ final class AuthorizedApplicationContext { strongSelf.currentAppUpdateInfo = appUpdateInfo if let appUpdateInfo = appUpdateInfo { let controller = updateInfoController(context: strongSelf.context, appUpdateInfo: appUpdateInfo) - (strongSelf.rootController.viewControllers.last as? ViewController)?.present(controller, in: .window(.root)) + strongSelf.mainWindow.present(controller, on: .update) } })) diff --git a/submodules/TelegramUI/TelegramUI/PresentationSurfaceLevels.swift b/submodules/TelegramUI/TelegramUI/PresentationSurfaceLevels.swift index db5665f424..186255ed3e 100644 --- a/submodules/TelegramUI/TelegramUI/PresentationSurfaceLevels.swift +++ b/submodules/TelegramUI/TelegramUI/PresentationSurfaceLevels.swift @@ -7,4 +7,5 @@ public extension PresentationSurfaceLevel { static let overlayMedia = PresentationSurfaceLevel(rawValue: 2) static let notifications = PresentationSurfaceLevel(rawValue: 3) static let passcode = PresentationSurfaceLevel(rawValue: 4) + static let update = PresentationSurfaceLevel(rawValue: 5) } From f5e2d58a840d1bc3c18c22ffef4f471cdc89a338 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Thu, 11 Jul 2019 02:38:41 +0200 Subject: [PATCH 02/19] Fixed blocking app update flag --- submodules/TelegramCore/TelegramCore/AppUpdate.swift | 4 ++-- submodules/TelegramUI/TelegramUI/UpdateInfoController.swift | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/submodules/TelegramCore/TelegramCore/AppUpdate.swift b/submodules/TelegramCore/TelegramCore/AppUpdate.swift index 3bc38c3316..41cb4ae90f 100644 --- a/submodules/TelegramCore/TelegramCore/AppUpdate.swift +++ b/submodules/TelegramCore/TelegramCore/AppUpdate.swift @@ -16,7 +16,7 @@ import Foundation #endif public struct AppUpdateInfo: Equatable { - public let popup: Bool + public let blocking: Bool public let version: String public let text: String public let entities: [MessageTextEntity] @@ -26,7 +26,7 @@ extension AppUpdateInfo { init?(apiAppUpdate: Api.help.AppUpdate) { switch apiAppUpdate { case let .appUpdate(flags, _, version, text, entities, _, _): - self.popup = (flags & (1 << 0)) != 0 + self.blocking = (flags & (1 << 0)) != 0 self.version = version self.text = text self.entities = messageTextEntitiesFromApiEntities(entities) diff --git a/submodules/TelegramUI/TelegramUI/UpdateInfoController.swift b/submodules/TelegramUI/TelegramUI/UpdateInfoController.swift index 02bea114a0..04a1dd054c 100644 --- a/submodules/TelegramUI/TelegramUI/UpdateInfoController.swift +++ b/submodules/TelegramUI/TelegramUI/UpdateInfoController.swift @@ -113,9 +113,9 @@ public func updateInfoController(context: AccountContext, appUpdateInfo: AppUpda appIcon = appIcons.filter { $0.isDefault }.first } - let leftNavigationButton = appUpdateInfo.popup ? ItemListNavigationButton(content: .text(presentationData.strings.Update_Skip), style: .regular, enabled: true, action: { + let leftNavigationButton = appUpdateInfo.blocking ? nil : ItemListNavigationButton(content: .text(presentationData.strings.Update_Skip), style: .regular, enabled: true, action: { dismissImpl?() - }) : nil + }) let controllerState = ItemListControllerState(theme: presentationData.theme, title: .text(presentationData.strings.Update_Title), leftNavigationButton: leftNavigationButton, rightNavigationButton: nil, backNavigationButton: ItemListBackButton(title: presentationData.strings.Common_Back)) let listState = ItemListNodeState(entries: updateInfoControllerEntries(theme: presentationData.theme, strings: presentationData.strings, appIcon: appIcon, appUpdateInfo: appUpdateInfo), style: .blocks, animateChanges: false) From d28e6ebe57a1b57698fb02f5d146efd5d9cdb6e0 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Thu, 11 Jul 2019 02:39:52 +0200 Subject: [PATCH 03/19] Added Moovit to available Open In options --- Telegram-iOS/Info.plist | 3 +-- .../TelegramUI/TelegramUI/OpenInOptions.swift | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/Telegram-iOS/Info.plist b/Telegram-iOS/Info.plist index 1c01c0b648..83072fc8ce 100644 --- a/Telegram-iOS/Info.plist +++ b/Telegram-iOS/Info.plist @@ -228,9 +228,7 @@ LSApplicationQueriesSchemes - dbapi-3 instagram - googledrive comgooglemaps-x-callback foursquare here-location @@ -257,6 +255,7 @@ opera-https firefox-focus ddgQuickLink + moovit LSRequiresIPhoneOS diff --git a/submodules/TelegramUI/TelegramUI/OpenInOptions.swift b/submodules/TelegramUI/TelegramUI/OpenInOptions.swift index 79e0902c47..1a5e612612 100644 --- a/submodules/TelegramUI/TelegramUI/OpenInOptions.swift +++ b/submodules/TelegramUI/TelegramUI/OpenInOptions.swift @@ -192,6 +192,20 @@ private func allOpenInOptions(context: AccountContext, item: OpenInItem) -> [Ope return .openUrl(url: "yandexnavi://build_route_on_map?lat_to=\(lat)&lon_to=\(lon)") })) } + + options.append(OpenInOption(application: .other(title: "Moovit", identifier: 498477945, scheme: "moovit", store: nil), action: { + if withDirections { + let destName: String + if let title = location.venue?.title.addingPercentEncoding(withAllowedCharacters: .urlQueryValueAllowed), title.count > 0 { + destName = title + } else { + destName = "" + } + return .openUrl(url: "moovit://directions?dest_lat=\(lat)&dest_lon=\(lon)&dest_name=\(destName)&partner_id=Telegram") + } else { + return .openUrl(url: "moovit://nearby?lat=\(lat)&lon=\(lon)&partner_id=Telegram") + } + })) if !withDirections { options.append(OpenInOption(application: .other(title: "HERE Maps", identifier: 955837609, scheme: "here-location", store: nil), action: { From 5abbf5638d950583152924d6d51662c2f55dfd50 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Thu, 11 Jul 2019 02:41:06 +0200 Subject: [PATCH 04/19] Fixed GIFs not respecting autoplay preference --- .../TelegramUI/ChatMessageMediaBubbleContentNode.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageMediaBubbleContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageMediaBubbleContentNode.swift index 83d69b04df..9f0b6b80f2 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageMediaBubbleContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageMediaBubbleContentNode.swift @@ -81,13 +81,13 @@ class ChatMessageMediaBubbleContentNode: ChatMessageBubbleContentNode { } if !item.message.containsSecretMedia { - if telegramFile.isAnimated { + if telegramFile.isAnimated && item.controllerInteraction.automaticMediaDownloadSettings.autoplayGifs { if case .full = automaticDownload { - automaticPlayback = item.controllerInteraction.automaticMediaDownloadSettings.autoplayGifs + automaticPlayback = true //item.controllerInteraction.automaticMediaDownloadSettings.autoplayGifs } else { automaticPlayback = item.context.account.postbox.mediaBox.completedResourcePath(telegramFile.resource) != nil } - } else if telegramFile.isVideo && item.controllerInteraction.automaticMediaDownloadSettings.autoplayVideos { + } else if (telegramFile.isVideo && !telegramFile.isAnimated) && item.controllerInteraction.automaticMediaDownloadSettings.autoplayVideos { if case .full = automaticDownload { automaticPlayback = true } else { From f980f2ce665e367adcfc7d2610583e3818a0e5e2 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Thu, 11 Jul 2019 02:42:38 +0200 Subject: [PATCH 05/19] Fixed trending stickers dot icon size --- .../TelegramUI/TelegramUI/ChatMediaInputTrendingItem.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/submodules/TelegramUI/TelegramUI/ChatMediaInputTrendingItem.swift b/submodules/TelegramUI/TelegramUI/ChatMediaInputTrendingItem.swift index 21cca6add2..c8fda5be13 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMediaInputTrendingItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMediaInputTrendingItem.swift @@ -108,14 +108,14 @@ final class ChatMediaInputTrendingItemNode: ListViewItemNode { self.highlightNode.image = PresentationResourcesChat.chatMediaInputPanelHighlightedIconImage(theme) self.imageNode.image = PresentationResourcesChat.chatInputMediaPanelTrendingIconImage(theme) - self.badgeBackground.image = generateFilledCircleImage(diameter: 16.0, color: theme.chat.inputPanel.mediaRecordingDotColor) + self.badgeBackground.image = generateFilledCircleImage(diameter: 10.0, color: theme.chat.inputPanel.mediaRecordingDotColor) let imageSize = CGSize(width: 26.0, height: 26.0) let imageFrame = CGRect(origin: CGPoint(x: floor((boundingSize.width - imageSize.width) / 2.0) + verticalOffset, y: floor((boundingSize.height - imageSize.height) / 2.0) + UIScreenPixel), size: imageSize) self.imageNode.frame = imageFrame if let image = self.badgeBackground.image { - self.badgeBackground.frame = CGRect(origin: CGPoint(x: imageFrame.maxX - image.size.width + 2.0, y: imageFrame.maxY - image.size.width + 3.0), size: image.size) + self.badgeBackground.frame = CGRect(origin: CGPoint(x: imageFrame.maxX - image.size.width - 1.0, y: imageFrame.maxY - image.size.width + 1.0), size: image.size) } } From ccaa76842a46d0d62f0d23caa8ef52db7081c976 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Thu, 11 Jul 2019 02:44:16 +0200 Subject: [PATCH 06/19] Disable scroll in blocked users & recent sessions screens when there's nothing to show --- submodules/Display/Display/ListView.swift | 6 ++++++ .../TelegramUI/BlockedPeersController.swift | 2 +- .../TelegramUI/ItemListControllerNode.swift | 12 ++++++------ .../TelegramUI/RecentSessionsController.swift | 2 +- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/submodules/Display/Display/ListView.swift b/submodules/Display/Display/ListView.swift index a7772d76cb..202cbbce5a 100644 --- a/submodules/Display/Display/ListView.swift +++ b/submodules/Display/Display/ListView.swift @@ -149,6 +149,12 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture public final var rotated = false public final var experimentalSnapScrollToItem = false + public final var scrollEnabled: Bool = true { + didSet { + self.scroller.isScrollEnabled = self.scrollEnabled + } + } + private final var invisibleInset: CGFloat = 500.0 public var preloadPages: Bool = true { didSet { diff --git a/submodules/TelegramUI/TelegramUI/BlockedPeersController.swift b/submodules/TelegramUI/TelegramUI/BlockedPeersController.swift index 37032904d6..96679afd4d 100644 --- a/submodules/TelegramUI/TelegramUI/BlockedPeersController.swift +++ b/submodules/TelegramUI/TelegramUI/BlockedPeersController.swift @@ -288,7 +288,7 @@ public func blockedPeersController(context: AccountContext, blockedPeersContext: previousState = blockedPeersState let controllerState = ItemListControllerState(theme: presentationData.theme, title: .text(presentationData.strings.BlockedUsers_Title), leftNavigationButton: nil, rightNavigationButton: rightNavigationButton, backNavigationButton: ItemListBackButton(title: presentationData.strings.Common_Back), animateChanges: true) - let listState = ItemListNodeState(entries: blockedPeersControllerEntries(presentationData: presentationData, state: state, blockedPeersState: blockedPeersState), style: .blocks, emptyStateItem: emptyStateItem, animateChanges: previousStateValue != nil && previousStateValue!.peers.count >= blockedPeersState.peers.count) + let listState = ItemListNodeState(entries: blockedPeersControllerEntries(presentationData: presentationData, state: state, blockedPeersState: blockedPeersState), style: .blocks, emptyStateItem: emptyStateItem, animateChanges: previousStateValue != nil && previousStateValue!.peers.count >= blockedPeersState.peers.count, scrollEnabled: emptyStateItem == nil) return (controllerState, (listState, arguments)) } diff --git a/submodules/TelegramUI/TelegramUI/ItemListControllerNode.swift b/submodules/TelegramUI/TelegramUI/ItemListControllerNode.swift index c24b1601ee..6d0b25e53c 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListControllerNode.swift @@ -56,7 +56,7 @@ private struct ItemListNodeTransition { let animateAlpha: Bool let crossfade: Bool let mergedEntries: [Entry] - let userInteractionEnabled: Bool + let scrollEnabled: Bool } struct ItemListNodeState { @@ -66,12 +66,12 @@ struct ItemListNodeState { let searchItem: ItemListControllerSearch? let animateChanges: Bool let crossfadeState: Bool - let userInteractionEnabled: Bool + let scrollEnabled: Bool let focusItemTag: ItemListItemTag? let ensureVisibleItemTag: ItemListItemTag? let initialScrollToItem: ListViewScrollToItem? - init(entries: [Entry], style: ItemListStyle, focusItemTag: ItemListItemTag? = nil, ensureVisibleItemTag: ItemListItemTag? = nil, emptyStateItem: ItemListControllerEmptyStateItem? = nil, searchItem: ItemListControllerSearch? = nil, initialScrollToItem: ListViewScrollToItem? = nil, crossfadeState: Bool = false, animateChanges: Bool = true, userInteractionEnabled: Bool = true) { + init(entries: [Entry], style: ItemListStyle, focusItemTag: ItemListItemTag? = nil, ensureVisibleItemTag: ItemListItemTag? = nil, emptyStateItem: ItemListControllerEmptyStateItem? = nil, searchItem: ItemListControllerSearch? = nil, initialScrollToItem: ListViewScrollToItem? = nil, crossfadeState: Bool = false, animateChanges: Bool = true, scrollEnabled: Bool = true) { self.entries = entries self.style = style self.emptyStateItem = emptyStateItem @@ -81,7 +81,7 @@ struct ItemListNodeState { self.focusItemTag = focusItemTag self.ensureVisibleItemTag = ensureVisibleItemTag self.initialScrollToItem = initialScrollToItem - self.userInteractionEnabled = userInteractionEnabled + self.scrollEnabled = scrollEnabled } } @@ -275,7 +275,7 @@ class ItemListControllerNode: ASDisplayNode, UIScrollV scrollToItem = state.initialScrollToItem } - return ItemListNodeTransition(theme: theme, entries: transition, updateStyle: updatedStyle, emptyStateItem: state.emptyStateItem, searchItem: state.searchItem, focusItemTag: state.focusItemTag, ensureVisibleItemTag: state.ensureVisibleItemTag, scrollToItem: scrollToItem, firstTime: previous == nil, animated: previous != nil && state.animateChanges, animateAlpha: previous != nil && state.animateChanges, crossfade: state.crossfadeState, mergedEntries: state.entries, userInteractionEnabled: state.userInteractionEnabled) + return ItemListNodeTransition(theme: theme, entries: transition, updateStyle: updatedStyle, emptyStateItem: state.emptyStateItem, searchItem: state.searchItem, focusItemTag: state.focusItemTag, ensureVisibleItemTag: state.ensureVisibleItemTag, scrollToItem: scrollToItem, firstTime: previous == nil, animated: previous != nil && state.animateChanges, animateAlpha: previous != nil && state.animateChanges, crossfade: state.crossfadeState, mergedEntries: state.entries, scrollEnabled: state.scrollEnabled) }) |> deliverOnMainQueue).start(next: { [weak self] transition in if let strongSelf = self { strongSelf.enqueueTransition(transition) @@ -593,7 +593,7 @@ class ItemListControllerNode: ASDisplayNode, UIScrollV self.emptyStateNode = nil } } - self.listNode.isUserInteractionEnabled = transition.userInteractionEnabled + self.listNode.scrollEnabled = transition.scrollEnabled if updateSearchItem { self.requestLayout?(.animated(duration: 0.3, curve: .spring)) diff --git a/submodules/TelegramUI/TelegramUI/RecentSessionsController.swift b/submodules/TelegramUI/TelegramUI/RecentSessionsController.swift index 3a7ab9a5af..05eec2b812 100644 --- a/submodules/TelegramUI/TelegramUI/RecentSessionsController.swift +++ b/submodules/TelegramUI/TelegramUI/RecentSessionsController.swift @@ -634,7 +634,7 @@ public func recentSessionsController(context: AccountContext, activeSessionsCont } let controllerState = ItemListControllerState(theme: presentationData.theme, title: title, leftNavigationButton: nil, rightNavigationButton: rightNavigationButton, backNavigationButton: ItemListBackButton(title: presentationData.strings.Common_Back), animateChanges: true) - let listState = ItemListNodeState(entries: entries, style: .blocks, emptyStateItem: emptyStateItem, crossfadeState: crossfadeState, animateChanges: animateChanges, userInteractionEnabled: emptyStateItem == nil) + let listState = ItemListNodeState(entries: entries, style: .blocks, emptyStateItem: emptyStateItem, crossfadeState: crossfadeState, animateChanges: animateChanges, scrollEnabled: emptyStateItem == nil) return (controllerState, (listState, arguments)) } |> afterDisposed { From b73123838c6ec95822463f4d561a594e8c648f9f Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Thu, 11 Jul 2019 02:44:24 +0200 Subject: [PATCH 07/19] Cleanup --- .../TelegramUI/ChatMessageMediaBubbleContentNode.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageMediaBubbleContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageMediaBubbleContentNode.swift index 9f0b6b80f2..26e323799d 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageMediaBubbleContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageMediaBubbleContentNode.swift @@ -83,7 +83,7 @@ class ChatMessageMediaBubbleContentNode: ChatMessageBubbleContentNode { if !item.message.containsSecretMedia { if telegramFile.isAnimated && item.controllerInteraction.automaticMediaDownloadSettings.autoplayGifs { if case .full = automaticDownload { - automaticPlayback = true //item.controllerInteraction.automaticMediaDownloadSettings.autoplayGifs + automaticPlayback = true } else { automaticPlayback = item.context.account.postbox.mediaBox.completedResourcePath(telegramFile.resource) != nil } From 626f42d233f5101c0575369d4ea8e8dec38ed795 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Thu, 11 Jul 2019 17:29:07 +0200 Subject: [PATCH 08/19] Always open chat screen for t.me/username links --- submodules/TelegramUI/TelegramUI/UrlHandling.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/TelegramUI/TelegramUI/UrlHandling.swift b/submodules/TelegramUI/TelegramUI/UrlHandling.swift index 6647bf66ad..2523b28853 100644 --- a/submodules/TelegramUI/TelegramUI/UrlHandling.swift +++ b/submodules/TelegramUI/TelegramUI/UrlHandling.swift @@ -270,7 +270,7 @@ private func resolveInternalUrl(account: Account, url: ParsedInternalUrl) -> Sig } } else { if let peer = peer as? TelegramUser, peer.botInfo == nil { - return .peer(peer.id, .info) + return .peer(peer.id, .chat(textInputState: nil, messageId: nil)) } else { return .peer(peer.id, .chat(textInputState: nil, messageId: nil)) } From 8ed34296e8520212bb1c73d1cc6a2866601b0554 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Thu, 11 Jul 2019 17:29:50 +0200 Subject: [PATCH 09/19] Fixed message editing key shortcut --- .../TelegramUI/ChatController.swift | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/submodules/TelegramUI/TelegramUI/ChatController.swift b/submodules/TelegramUI/TelegramUI/ChatController.swift index edb362e90b..e054968c29 100644 --- a/submodules/TelegramUI/TelegramUI/ChatController.swift +++ b/submodules/TelegramUI/TelegramUI/ChatController.swift @@ -6843,23 +6843,22 @@ public final class ChatController: TelegramController, GalleryHiddenMediaTarget, } }) ] - - if let message = self.chatDisplayNode.historyNode.latestMessageInCurrentHistoryView(), !message.flags.contains(.Incoming) { - inputShortcuts.append(KeyShortcut(input: UIKeyInputUpArrow, action: { [weak self] in - if let strongSelf = self { - var canEdit = false - strongSelf.updateChatPresentationInterfaceState(animated: true, interactive: true, { state in - if state.interfaceState.effectiveInputState.inputText.length == 0 && state.interfaceState.editMessage == nil { - canEdit = true - } - return state - }) - if canEdit { - strongSelf.interfaceInteraction?.setupEditMessage(message.id) - } - } - })) + } + + var canEdit = false + self.updateChatPresentationInterfaceState(animated: false, interactive: false, { state in + if state.interfaceState.effectiveInputState.inputText.length == 0 && state.interfaceState.editMessage == nil { + canEdit = true } + return state + }) + + if canEdit, let message = self.chatDisplayNode.historyNode.firstMessageForEditInCurrentHistoryView() { + inputShortcuts.append(KeyShortcut(input: UIKeyInputUpArrow, action: { [weak self] in + if let strongSelf = self { + strongSelf.interfaceInteraction?.setupEditMessage(message.id) + } + })) } let otherShortcuts: [KeyShortcut] = [ From fe3328d5a17104a3709115d0203bf735bbef2fe6 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Sun, 14 Jul 2019 04:31:11 +0200 Subject: [PATCH 10/19] Fixed biometric unlock --- submodules/TelegramUI/TelegramUI/PasscodeEntryController.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/TelegramUI/TelegramUI/PasscodeEntryController.swift b/submodules/TelegramUI/TelegramUI/PasscodeEntryController.swift index b656248e44..dcf47391ba 100644 --- a/submodules/TelegramUI/TelegramUI/PasscodeEntryController.swift +++ b/submodules/TelegramUI/TelegramUI/PasscodeEntryController.swift @@ -160,7 +160,7 @@ final public class PasscodeEntryController: ViewController { }).start() } - let isMainApp = !strongSelf.context.sharedContext.applicationBindings.isMainApp + let isMainApp = strongSelf.context.sharedContext.applicationBindings.isMainApp let _ = updatePresentationPasscodeSettingsInteractively(accountManager: strongSelf.context.sharedContext.accountManager, { settings in if isMainApp { return settings.withUpdatedBiometricsDomainState(LocalAuth.evaluatedPolicyDomainState) From 2c30af1d7677103b710d081bc481a5e793b4f85e Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Mon, 15 Jul 2019 18:12:44 +0200 Subject: [PATCH 11/19] Added support for thumbnails in standalone media file upload --- .../TelegramCore/EnqueueMessage.swift | 7 +- .../PendingMessageUploadedContent.swift | 20 +- .../StandaloneUploadedMedia.swift | 179 ++++++++++++------ 3 files changed, 133 insertions(+), 73 deletions(-) diff --git a/submodules/TelegramCore/TelegramCore/EnqueueMessage.swift b/submodules/TelegramCore/TelegramCore/EnqueueMessage.swift index f1725a95b1..45ede2460d 100644 --- a/submodules/TelegramCore/TelegramCore/EnqueueMessage.swift +++ b/submodules/TelegramCore/TelegramCore/EnqueueMessage.swift @@ -42,7 +42,7 @@ func augmentMediaWithReference(_ mediaReference: AnyMediaReference) -> Media { if file.partialReference != nil { return file } else { - return file.withUpdatedPartialReference(mediaReference.partial) + return file.withUpdatedPartialReference(mediaReference.partial) } } else if let image = mediaReference.media as? TelegramMediaImage { if image.partialReference != nil { @@ -367,7 +367,7 @@ func enqueueMessages(transaction: Transaction, account: Account, peerId: PeerId, } let authorId: PeerId? - if let peer = peer as? TelegramChannel, case let .broadcast(info) = peer.info { + if let peer = peer as? TelegramChannel, case .broadcast = peer.info { authorId = peer.id } else { authorId = account.peerId @@ -388,12 +388,9 @@ func enqueueMessages(transaction: Transaction, account: Account, peerId: PeerId, if let sourceMessage = sourceMessage, let author = sourceMessage.author ?? sourceMessage.peers[sourceMessage.id.peerId] { if let peer = peer as? TelegramSecretChat { var isAction = false - var mediaDuration: Int32? for media in sourceMessage.media { if let _ = media as? TelegramMediaAction { isAction = true - } else if let file = media as? TelegramMediaFile, let duration = file.duration { - mediaDuration = duration } } if !disableAutoremove, let messageAutoremoveTimeout = peer.messageAutoremoveTimeout, !isAction { diff --git a/submodules/TelegramCore/TelegramCore/PendingMessageUploadedContent.swift b/submodules/TelegramCore/TelegramCore/PendingMessageUploadedContent.swift index c48005d56e..c2df28501e 100644 --- a/submodules/TelegramCore/TelegramCore/PendingMessageUploadedContent.swift +++ b/submodules/TelegramCore/TelegramCore/PendingMessageUploadedContent.swift @@ -476,17 +476,17 @@ private enum UploadedMediaFileAndThumbnail { private func uploadedThumbnail(network: Network, postbox: Postbox, resourceReference: MediaResourceReference) -> Signal { return multipartUpload(network: network, postbox: postbox, source: .resource(resourceReference), encrypt: false, tag: TelegramMediaResourceFetchTag(statsCategory: .image), hintFileSize: nil, hintFileIsLarge: false) - |> mapError { _ -> PendingMessageUploadError in return .generic } - |> mapToSignal { result -> Signal in - switch result { - case .progress: - return .complete() - case let .inputFile(inputFile): - return .single(inputFile) - case .inputSecretFile: - return .single(nil) - } + |> mapError { _ -> PendingMessageUploadError in return .generic } + |> mapToSignal { result -> Signal in + switch result { + case .progress: + return .complete() + case let .inputFile(inputFile): + return .single(inputFile) + case .inputSecretFile: + return .single(nil) } + } } public func statsCategoryForFileWithAttributes(_ attributes: [TelegramMediaFileAttribute]) -> MediaResourceStatsCategory { diff --git a/submodules/TelegramCore/TelegramCore/StandaloneUploadedMedia.swift b/submodules/TelegramCore/TelegramCore/StandaloneUploadedMedia.swift index 5b593a5645..955271f97e 100644 --- a/submodules/TelegramCore/TelegramCore/StandaloneUploadedMedia.swift +++ b/submodules/TelegramCore/TelegramCore/StandaloneUploadedMedia.swift @@ -21,6 +21,20 @@ public struct StandaloneUploadSecretFile { let key: SecretFileEncryptionKey } +public enum StandaloneUploadMediaThumbnailResult { + case pending + case file(Api.InputFile) + case none + + var file: Api.InputFile? { + if case let .file(file) = self { + return file + } else { + return nil + } + } +} + public enum StandaloneUploadMediaResult { case media(AnyMediaReference) } @@ -30,7 +44,22 @@ public enum StandaloneUploadMediaEvent { case result(StandaloneUploadMediaResult) } -public func standaloneUploadedImage(account: Account, peerId: PeerId, text: String, data: Data, dimensions: CGSize) -> Signal { +private func uploadedThumbnail(network: Network, postbox: Postbox, data: Data) -> Signal { + return multipartUpload(network: network, postbox: postbox, source: .data(data), encrypt: false, tag: TelegramMediaResourceFetchTag(statsCategory: .image), hintFileSize: nil, hintFileIsLarge: false) + |> mapError { _ -> StandaloneUploadMediaError in return .generic } + |> mapToSignal { result -> Signal in + switch result { + case .progress: + return .complete() + case let .inputFile(inputFile): + return .single(inputFile) + case .inputSecretFile: + return .single(nil) + } + } +} + +public func standaloneUploadedImage(account: Account, peerId: PeerId, text: String, data: Data, thumbnailData: Data? = nil, dimensions: CGSize) -> Signal { return multipartUpload(network: account.network, postbox: account.postbox, source: .data(data), encrypt: peerId.namespace == Namespaces.Peer.SecretChat, tag: TelegramMediaResourceFetchTag(statsCategory: .image), hintFileSize: nil, hintFileIsLarge: false) |> mapError { _ -> StandaloneUploadMediaError in return .generic } |> mapToSignal { next -> Signal in @@ -91,65 +120,99 @@ public func standaloneUploadedImage(account: Account, peerId: PeerId, text: Stri } } -public func standaloneUploadedFile(account: Account, peerId: PeerId, text: String, source: MultipartUploadSource, mimeType: String, attributes: [TelegramMediaFileAttribute], hintFileIsLarge: Bool) -> Signal { - return multipartUpload(network: account.network, postbox: account.postbox, source: source, encrypt: peerId.namespace == Namespaces.Peer.SecretChat, tag: TelegramMediaResourceFetchTag(statsCategory: statsCategoryForFileWithAttributes(attributes)), hintFileSize: nil, hintFileIsLarge: hintFileIsLarge) - |> mapError { _ -> StandaloneUploadMediaError in return .generic } - |> mapToSignal { next -> Signal in - switch next { - case let .inputFile(inputFile): - return account.postbox.transaction { transaction -> Api.InputPeer? in - return transaction.getPeer(peerId).flatMap(apiInputPeer) - } - |> mapError { _ -> StandaloneUploadMediaError in return .generic } - |> mapToSignal { inputPeer -> Signal in - if let inputPeer = inputPeer { - return account.network.request(Api.functions.messages.uploadMedia(peer: inputPeer, media: Api.InputMedia.inputMediaUploadedDocument(flags: 0, file: inputFile, thumb: nil, mimeType: mimeType, attributes: inputDocumentAttributesFromFileAttributes(attributes), stickers: nil, ttlSeconds: nil))) - |> mapError { _ -> StandaloneUploadMediaError in return .generic } - |> mapToSignal { media -> Signal in - switch media { - case let .messageMediaDocument(_, document, _): - if let document = document { - if let mediaFile = telegramMediaFileFromApiDocument(document) { - return .single(.result(.media(.standalone(media: mediaFile)))) - } - } - default: - break - } - return .fail(.generic) - } - } else { - return .fail(.generic) - } - } - case let .inputSecretFile(file, size, key): - return account.postbox.transaction { transaction -> Api.InputEncryptedChat? in - if let peer = transaction.getPeer(peerId) as? TelegramSecretChat { - return Api.InputEncryptedChat.inputEncryptedChat(chatId: peer.id.id, accessHash: peer.accessHash) - } - return nil - } - |> introduceError(StandaloneUploadMediaError.self) - |> mapToSignal { inputChat -> Signal in - guard let inputChat = inputChat else { - return .fail(.generic) - } - return account.network.request(Api.functions.messages.uploadEncryptedFile(peer: inputChat, file: file)) - |> mapError { _ -> StandaloneUploadMediaError in return .generic - } - |> mapToSignal { result -> Signal in - switch result { - case let .encryptedFile(id, accessHash, size, dcId, _): - let media = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: arc4random64()), partialReference: nil, resource: SecretFileMediaResource(fileId: id, accessHash: accessHash, containerSize: size, decryptedSize: size, datacenterId: Int(dcId), key: key), previewRepresentations: [], immediateThumbnailData: nil, mimeType: mimeType, size: Int(size), attributes: attributes) - - return .single(.result(.media(.standalone(media: media)))) - case .encryptedFileEmpty: - return .fail(.generic) - } - } +public func standaloneUploadedFile(account: Account, peerId: PeerId, text: String, source: MultipartUploadSource, thumbnailData: Data? = nil, mimeType: String, attributes: [TelegramMediaFileAttribute], hintFileIsLarge: Bool) -> Signal { + let upload = multipartUpload(network: account.network, postbox: account.postbox, source: source, encrypt: peerId.namespace == Namespaces.Peer.SecretChat, tag: TelegramMediaResourceFetchTag(statsCategory: statsCategoryForFileWithAttributes(attributes)), hintFileSize: nil, hintFileIsLarge: hintFileIsLarge) + |> mapError { _ -> StandaloneUploadMediaError in return .generic } + + let uploadThumbnail: Signal + if let thumbnailData = thumbnailData { + uploadThumbnail = .single(.pending) + |> then( + uploadedThumbnail(network: account.network, postbox: account.postbox, data: thumbnailData) + |> mapError { _ -> StandaloneUploadMediaError in return .generic } + |> map { result in + if let result = result { + return .file(result) + } else { + return .none } + } + ) + } else { + uploadThumbnail = .single(.none) + } + + return combineLatest(upload, uploadThumbnail) + |> mapToSignal { result, thumbnail in + switch result { case let .progress(progress): return .single(.progress(progress)) - } + default: + switch thumbnail { + case .pending: + return .complete() + default: + switch result { + case let .inputFile(inputFile): + return account.postbox.transaction { transaction -> Api.InputPeer? in + return transaction.getPeer(peerId).flatMap(apiInputPeer) + } + |> mapError { _ -> StandaloneUploadMediaError in return .generic } + |> mapToSignal { inputPeer -> Signal in + if let inputPeer = inputPeer { + var flags: Int32 = 0 + let thumbnailFile = thumbnail.file + if let _ = thumbnailFile { + flags |= 1 << 2 + } + return account.network.request(Api.functions.messages.uploadMedia(peer: inputPeer, media: Api.InputMedia.inputMediaUploadedDocument(flags: flags, file: inputFile, thumb: thumbnailFile, mimeType: mimeType, attributes: inputDocumentAttributesFromFileAttributes(attributes), stickers: nil, ttlSeconds: nil))) + |> mapError { _ -> StandaloneUploadMediaError in return .generic } + |> mapToSignal { media -> Signal in + switch media { + case let .messageMediaDocument(_, document, _): + if let document = document { + if let mediaFile = telegramMediaFileFromApiDocument(document) { + return .single(.result(.media(.standalone(media: mediaFile)))) + } + } + default: + break + } + return .fail(.generic) + } + } else { + return .fail(.generic) + } + } + case let .inputSecretFile(file, _, key): + return account.postbox.transaction { transaction -> Api.InputEncryptedChat? in + if let peer = transaction.getPeer(peerId) as? TelegramSecretChat { + return Api.InputEncryptedChat.inputEncryptedChat(chatId: peer.id.id, accessHash: peer.accessHash) + } + return nil + } + |> introduceError(StandaloneUploadMediaError.self) + |> mapToSignal { inputChat -> Signal in + guard let inputChat = inputChat else { + return .fail(.generic) + } + return account.network.request(Api.functions.messages.uploadEncryptedFile(peer: inputChat, file: file)) + |> mapError { _ -> StandaloneUploadMediaError in return .generic } + |> mapToSignal { result -> Signal in + switch result { + case let .encryptedFile(id, accessHash, size, dcId, _): + let media = TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: arc4random64()), partialReference: nil, resource: SecretFileMediaResource(fileId: id, accessHash: accessHash, containerSize: size, decryptedSize: size, datacenterId: Int(dcId), key: key), previewRepresentations: [], immediateThumbnailData: nil, mimeType: mimeType, size: Int(size), attributes: attributes) + + return .single(.result(.media(.standalone(media: media)))) + case .encryptedFileEmpty: + return .fail(.generic) + } + } + } + case .progress: + return .never() + } + } + } } } From 6842252ce90f46382b98167a2618db278265d357 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Mon, 15 Jul 2019 18:13:44 +0200 Subject: [PATCH 12/19] Generate thumbnails for PDFs sent via share extension --- .../TelegramUI/ICloudResources.swift | 2 +- submodules/TelegramUI/TelegramUI/PDF.swift | 8 ++- .../TelegramUI/ShareExtensionContext.swift | 56 +++++++++---------- .../TelegramUI/TelegramUI/ShareItems.swift | 7 ++- .../TelegramUI/TGItemProviderSignals.m | 3 +- 5 files changed, 42 insertions(+), 34 deletions(-) diff --git a/submodules/TelegramUI/TelegramUI/ICloudResources.swift b/submodules/TelegramUI/TelegramUI/ICloudResources.swift index c69e5891a4..b9553f4e4c 100644 --- a/submodules/TelegramUI/TelegramUI/ICloudResources.swift +++ b/submodules/TelegramUI/TelegramUI/ICloudResources.swift @@ -209,7 +209,7 @@ func fetchICloudFileResource(resource: ICloudFileResource) -> Signal UIImage? { - guard let document = CGPDFDocument(url as CFURL) else { return nil } + guard let data = try? Data(contentsOf: url, options: .mappedIfSafe) else { return nil } + return generatePdfPreviewImage(data: data, size: size) +} + +func generatePdfPreviewImage(data: Data, size: CGSize) -> UIImage? { + guard let provider = CGDataProvider(data: data as CFData) else { return nil } + guard let document = CGPDFDocument(provider) else { return nil } guard let firstPage = document.page(at: 1) else { return nil } let context = DrawingContext(size: size) diff --git a/submodules/TelegramUI/TelegramUI/ShareExtensionContext.swift b/submodules/TelegramUI/TelegramUI/ShareExtensionContext.swift index 3d57e67baa..6ed084b7dc 100644 --- a/submodules/TelegramUI/TelegramUI/ShareExtensionContext.swift +++ b/submodules/TelegramUI/TelegramUI/ShareExtensionContext.swift @@ -222,27 +222,25 @@ public class ShareRootControllerImpl { let requestUserInteraction: ([UnpreparedShareItemContent]) -> Signal<[PreparedShareItemContent], NoError> = { content in return Signal { [weak self] subscriber in switch content[0] { - case let .contact(data): - let controller = deviceContactInfoController(context: context, subject: .filter(peer: nil, contactId: nil, contactData: data, completion: { peer, contactData in - let phone = contactData.basicData.phoneNumbers[0].value - if let vCardData = contactData.serializedVCard() { - subscriber.putNext([.media(.media(.standalone(media: TelegramMediaContact(firstName: contactData.basicData.firstName, lastName: contactData.basicData.lastName, phoneNumber: phone, peerId: nil, vCardData: vCardData))))]) + case let .contact(data): + let controller = deviceContactInfoController(context: context, subject: .filter(peer: nil, contactId: nil, contactData: data, completion: { peer, contactData in + let phone = contactData.basicData.phoneNumbers[0].value + if let vCardData = contactData.serializedVCard() { + subscriber.putNext([.media(.media(.standalone(media: TelegramMediaContact(firstName: contactData.basicData.firstName, lastName: contactData.basicData.lastName, phoneNumber: phone, peerId: nil, vCardData: vCardData))))]) + } + subscriber.putCompletion() + }), cancelled: { + cancelImpl?() + }) + + if let strongSelf = self, let window = strongSelf.mainWindow { + controller.presentationArguments = ViewControllerPresentationArguments(presentationAnimation: .modalSheet) + window.present(controller, on: .root) } - subscriber.putCompletion() - }), cancelled: { - cancelImpl?() - }) - - if let strongSelf = self, let window = strongSelf.mainWindow { - controller.presentationArguments = ViewControllerPresentationArguments(presentationAnimation: .modalSheet) - window.present(controller, on: .root) - } - break + break } - - return ActionDisposable { - } - } |> runOn(Queue.mainQueue()) + return EmptyDisposable + } |> runOn(Queue.mainQueue()) } let sentItems: ([PeerId], [PreparedShareItemContent], Account) -> Signal = { peerIds, contents, account in @@ -271,17 +269,17 @@ public class ShareRootControllerImpl { return .single(.done) } switch state { - case .preparing: - return .single(.preparing) - case let .progress(value): - return .single(.progress(value)) - case let .userInteractionRequired(value): - return requestUserInteraction(value) + case .preparing: + return .single(.preparing) + case let .progress(value): + return .single(.progress(value)) + case let .userInteractionRequired(value): + return requestUserInteraction(value) |> mapToSignal { contents -> Signal in return sentItems(peerIds, contents, account) - } - case let .done(contents): - return sentItems(peerIds, contents, account) + } + case let .done(contents): + return sentItems(peerIds, contents, account) } } } else { @@ -338,7 +336,7 @@ public class ShareRootControllerImpl { self?.getExtensionContext()?.completeRequest(returningItems: nil, completionHandler: nil) })]) strongSelf.mainWindow?.present(controller, on: .root) - }, completed: {})) + }, completed: {})) } } } diff --git a/submodules/TelegramUI/TelegramUI/ShareItems.swift b/submodules/TelegramUI/TelegramUI/ShareItems.swift index 7879f80f0c..da2c87cf6f 100644 --- a/submodules/TelegramUI/TelegramUI/ShareItems.swift +++ b/submodules/TelegramUI/TelegramUI/ShareItems.swift @@ -178,7 +178,12 @@ private func preparedShareItem(account: Account, to peerId: PeerId, value: [Stri } } } else { - return standaloneUploadedFile(account: account, peerId: peerId, text: "", source: .data(data), mimeType: mimeType, attributes: [.FileName(fileName: fileName ?? "file")], hintFileIsLarge: data.count > 5 * 1024 * 1024) + var thumbnailData: Data? + if mimeType == "application/pdf", let image = generatePdfPreviewImage(data: data, size: CGSize(width: 256.0, height: 256.0)), let jpegData = UIImageJPEGRepresentation(image, 0.5) { + thumbnailData = jpegData + } + + return standaloneUploadedFile(account: account, peerId: peerId, text: "", source: .data(data), thumbnailData: thumbnailData, mimeType: mimeType, attributes: [.FileName(fileName: fileName ?? "file")], hintFileIsLarge: data.count > 5 * 1024 * 1024) |> mapError { _ -> Void in return Void() } |> mapToSignal { event -> Signal in switch event { diff --git a/submodules/TelegramUI/TelegramUI/TGItemProviderSignals.m b/submodules/TelegramUI/TelegramUI/TGItemProviderSignals.m index 5901b34885..c3aa6b2d96 100644 --- a/submodules/TelegramUI/TelegramUI/TGItemProviderSignals.m +++ b/submodules/TelegramUI/TelegramUI/TGItemProviderSignals.m @@ -553,7 +553,7 @@ static void set_bits(uint8_t *bytes, int32_t bitOffset, int32_t numBits, int32_t // add output reader to reader [iPodAssetReader addOutput: readerOutput]; - if (! [iPodAssetReader startReading]) { + if (![iPodAssetReader startReading]) { NSLog(@"Unable to start reading!"); return nil; } @@ -563,7 +563,6 @@ static void set_bits(uint8_t *bytes, int32_t bitOffset, int32_t numBits, int32_t int _waveformPeakCount = 0; while (iPodAssetReader.status == AVAssetReaderStatusReading) { - // Check if the available buffer space is enough to hold at least one cycle of the sample data CMSampleBufferRef nextBuffer = [readerOutput copyNextSampleBuffer]; if (nextBuffer) { From 2cae28f070217f61dc76e0e9212bc24d133d5380 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Mon, 15 Jul 2019 18:14:24 +0200 Subject: [PATCH 13/19] libtgvoip: disable packet reassembler initialization --- submodules/libtgvoip/VoIPController.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/submodules/libtgvoip/VoIPController.cpp b/submodules/libtgvoip/VoIPController.cpp index 66fb80e421..407cec4904 100755 --- a/submodules/libtgvoip/VoIPController.cpp +++ b/submodules/libtgvoip/VoIPController.cpp @@ -2388,10 +2388,10 @@ simpleAudioBlock random_id:long random_bytes:string raw_data:string = DecryptedA stm->jitterBuffer->SetMinPacketCount((uint32_t) ServerConfig::GetSharedInstance()->GetInt("jitter_initial_delay_20", 6)); stm->decoder=NULL; }else if(stm->type==STREAM_TYPE_VIDEO){ - if(!stm->packetReassembler){ - stm->packetReassembler=make_shared(); - stm->packetReassembler->SetCallback(bind(&VoIPController::ProcessIncomingVideoFrame, this, placeholders::_1, placeholders::_2, placeholders::_3)); - } +// if(!stm->packetReassembler){ +// stm->packetReassembler=make_shared(); +// stm->packetReassembler->SetCallback(bind(&VoIPController::ProcessIncomingVideoFrame, this, placeholders::_1, placeholders::_2, placeholders::_3)); +// } }else{ LOGW("Unknown incoming stream type: %d", stm->type); continue; From 5937d985f3402bdfcbf60d7db6c5422999b9aa62 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Mon, 15 Jul 2019 18:17:50 +0200 Subject: [PATCH 14/19] Added option to disable animated stickers looped playback across all the app --- .../ArchivedStickerPacksController.swift | 35 +++-- .../TelegramUI/ChatController.swift | 26 +++- .../ChatControllerInteraction.swift | 22 ++- .../TelegramUI/ChatControllerNode.swift | 8 + .../ChatMediaInputStickerGridItem.swift | 20 +-- .../ChatMediaInputStickerPackItem.swift | 50 +++---- .../ChatMessageAnimatedStickerItemNode.swift | 48 +++--- .../ChatMessageBubbleItemNode.swift | 1 - .../TelegramUI/ChatMessageItemView.swift | 3 + .../FeaturedStickerPacksController.swift | 37 +++-- .../GroupStickerPackSetupController.swift | 139 ++++++++++-------- .../InstalledStickerPacksController.swift | 105 ++++++++----- .../TelegramUI/ItemListStickerPackItem.swift | 8 +- .../OverlayPlayerControllerNode.swift | 2 +- .../PeerMediaCollectionController.swift | 2 +- .../StickerPackPreviewController.swift | 24 +-- .../StickerPackPreviewControllerNode.swift | 22 +-- .../StickerPackPreviewGridItem.swift | 32 +--- .../Sources/MediaAutoDownloadSettings.swift | 16 +- .../Sources/StickerSettings.swift | 16 +- 20 files changed, 361 insertions(+), 255 deletions(-) diff --git a/submodules/TelegramUI/TelegramUI/ArchivedStickerPacksController.swift b/submodules/TelegramUI/TelegramUI/ArchivedStickerPacksController.swift index c35840f84b..8f4d08b52c 100644 --- a/submodules/TelegramUI/TelegramUI/ArchivedStickerPacksController.swift +++ b/submodules/TelegramUI/TelegramUI/ArchivedStickerPacksController.swift @@ -5,6 +5,7 @@ import SwiftSignalKit import Postbox import TelegramCore import TelegramPresentationData +import TelegramUIPreferences public enum ArchivedStickerPacksControllerMode { case stickers @@ -65,7 +66,7 @@ private enum ArchivedStickerPacksEntryId: Hashable { private enum ArchivedStickerPacksEntry: ItemListNodeEntry { case info(PresentationTheme, String) - case pack(Int32, PresentationTheme, PresentationStrings, StickerPackCollectionInfo, StickerPackItem?, String, Bool, ItemListStickerPackItemEditing) + case pack(Int32, PresentationTheme, PresentationStrings, StickerPackCollectionInfo, StickerPackItem?, String, Bool, Bool, ItemListStickerPackItemEditing) var section: ItemListSectionId { switch self { @@ -78,7 +79,7 @@ private enum ArchivedStickerPacksEntry: ItemListNodeEntry { switch self { case .info: return .index(0) - case let .pack(_, _, _, info, _, _, _, _): + case let .pack(_, _, _, info, _, _, _, _, _): return .pack(info.id) } } @@ -91,8 +92,8 @@ private enum ArchivedStickerPacksEntry: ItemListNodeEntry { } else { return false } - case let .pack(lhsIndex, lhsTheme, lhsStrings, lhsInfo, lhsTopItem, lhsCount, lhsEnabled, lhsEditing): - if case let .pack(rhsIndex, rhsTheme, rhsStrings, rhsInfo, rhsTopItem, rhsCount, rhsEnabled, rhsEditing) = rhs { + case let .pack(lhsIndex, lhsTheme, lhsStrings, lhsInfo, lhsTopItem, lhsCount, lhsPlayAnimatedStickers, lhsEnabled, lhsEditing): + if case let .pack(rhsIndex, rhsTheme, rhsStrings, rhsInfo, rhsTopItem, rhsCount, rhsPlayAnimatedStickers, rhsEnabled, rhsEditing) = rhs { if lhsIndex != rhsIndex { return false } @@ -111,6 +112,9 @@ private enum ArchivedStickerPacksEntry: ItemListNodeEntry { if lhsCount != rhsCount { return false } + if lhsPlayAnimatedStickers != rhsPlayAnimatedStickers { + return false + } if lhsEnabled != rhsEnabled { return false } @@ -133,9 +137,9 @@ private enum ArchivedStickerPacksEntry: ItemListNodeEntry { default: return true } - case let .pack(lhsIndex, _, _, _, _, _, _, _): + case let .pack(lhsIndex, _, _, _, _, _, _, _, _): switch rhs { - case let .pack(rhsIndex, _, _, _, _, _, _, _): + case let .pack(rhsIndex, _, _, _, _, _, _, _, _): return lhsIndex < rhsIndex default: return false @@ -147,8 +151,8 @@ private enum ArchivedStickerPacksEntry: ItemListNodeEntry { switch self { case let .info(theme, text): return ItemListTextItem(theme: theme, text: .plain(text), sectionId: self.section) - case let .pack(_, theme, strings, info, topItem, count, enabled, editing): - return ItemListStickerPackItem(theme: theme, strings: strings, account: arguments.account, packInfo: info, itemCount: count, topItem: topItem, unread: false, control: .installation(installed: false), editing: editing, enabled: enabled, sectionId: self.section, action: { + case let .pack(_, theme, strings, info, topItem, count, animatedStickers, enabled, editing): + return ItemListStickerPackItem(theme: theme, strings: strings, account: arguments.account, packInfo: info, itemCount: count, topItem: topItem, unread: false, control: .installation(installed: false), editing: editing, enabled: enabled, playAnimatedStickers: animatedStickers, sectionId: self.section, action: { arguments.openStickerPack(info) }, setPackIdWithRevealedOptions: { current, previous in arguments.setPackIdWithRevealedOptions(current, previous) @@ -205,7 +209,7 @@ private struct ArchivedStickerPacksControllerState: Equatable { } } -private func archivedStickerPacksControllerEntries(presentationData: PresentationData, state: ArchivedStickerPacksControllerState, packs: [ArchivedStickerPackItem]?, installedView: CombinedView) -> [ArchivedStickerPacksEntry] { +private func archivedStickerPacksControllerEntries(presentationData: PresentationData, state: ArchivedStickerPacksControllerState, packs: [ArchivedStickerPackItem]?, installedView: CombinedView, stickerSettings: StickerSettings) -> [ArchivedStickerPacksEntry] { var entries: [ArchivedStickerPacksEntry] = [] if let packs = packs { @@ -219,7 +223,7 @@ private func archivedStickerPacksControllerEntries(presentationData: Presentatio var index: Int32 = 0 for item in packs { if !installedIds.contains(item.info.id) { - entries.append(.pack(index, presentationData.theme, presentationData.strings, item.info, item.topItems.first, presentationData.strings.StickerPack_StickerCount(item.info.count), !state.removingPackIds.contains(item.info.id), ItemListStickerPackItemEditing(editable: true, editing: state.editing, revealed: state.packIdWithRevealedOptions == item.info.id, reorderable: false))) + entries.append(.pack(index, presentationData.theme, presentationData.strings, item.info, item.topItems.first, presentationData.strings.StickerPack_StickerCount(item.info.count), stickerSettings.loopAnimatedStickers, !state.removingPackIds.contains(item.info.id), ItemListStickerPackItemEditing(editable: true, editing: state.editing, revealed: state.packIdWithRevealedOptions == item.info.id, reorderable: false))) index += 1 } } @@ -369,9 +373,14 @@ public func archivedStickerPacksController(context: AccountContext, mode: Archiv var previousPackCount: Int? - let signal = combineLatest(context.sharedContext.presentationData, statePromise.get() |> deliverOnMainQueue, stickerPacks.get() |> deliverOnMainQueue, installedStickerPacks.get() |> deliverOnMainQueue) + let signal = combineLatest(context.sharedContext.presentationData, statePromise.get() |> deliverOnMainQueue, stickerPacks.get() |> deliverOnMainQueue, installedStickerPacks.get() |> deliverOnMainQueue, context.sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.stickerSettings]) |> deliverOnMainQueue) |> deliverOnMainQueue - |> map { presentationData, state, packs, installedView -> (ItemListControllerState, (ItemListNodeState, ArchivedStickerPacksEntry.ItemGenerationArguments)) in + |> map { presentationData, state, packs, installedView, sharedData -> (ItemListControllerState, (ItemListNodeState, ArchivedStickerPacksEntry.ItemGenerationArguments)) in + var stickerSettings = StickerSettings.defaultSettings + if let value = sharedData.entries[ApplicationSpecificSharedDataKeys.stickerSettings] as? StickerSettings { + stickerSettings = value + } + var rightNavigationButton: ItemListNavigationButton? if let packs = packs, packs.count != 0 { if state.editing { @@ -399,7 +408,7 @@ public func archivedStickerPacksController(context: AccountContext, mode: Archiv let controllerState = ItemListControllerState(theme: presentationData.theme, title: .text(presentationData.strings.StickerPacksSettings_ArchivedPacks), leftNavigationButton: nil, rightNavigationButton: rightNavigationButton, backNavigationButton: ItemListBackButton(title: presentationData.strings.Common_Back), animateChanges: true) - let listState = ItemListNodeState(entries: archivedStickerPacksControllerEntries(presentationData: presentationData, state: state, packs: packs, installedView: installedView), style: .blocks, emptyStateItem: emptyStateItem, animateChanges: previous != nil && packs != nil && (previous! != 0 && previous! >= packs!.count - 10)) + let listState = ItemListNodeState(entries: archivedStickerPacksControllerEntries(presentationData: presentationData, state: state, packs: packs, installedView: installedView, stickerSettings: stickerSettings), style: .blocks, emptyStateItem: emptyStateItem, animateChanges: previous != nil && packs != nil && (previous! != 0 && previous! >= packs!.count - 10)) return (controllerState, (listState, arguments)) } |> afterDisposed { actionsDisposable.dispose() diff --git a/submodules/TelegramUI/TelegramUI/ChatController.swift b/submodules/TelegramUI/TelegramUI/ChatController.swift index e054968c29..5fbedb19f0 100644 --- a/submodules/TelegramUI/TelegramUI/ChatController.swift +++ b/submodules/TelegramUI/TelegramUI/ChatController.swift @@ -208,6 +208,9 @@ public final class ChatController: TelegramController, GalleryHiddenMediaTarget, private var automaticMediaDownloadSettings: MediaAutoDownloadSettings private var automaticMediaDownloadSettingsDisposable: Disposable? + private var stickerSettings: ChatInterfaceStickerSettings + private var stickerSettingsDisposable: Disposable? + private var applicationInForegroundDisposable: Disposable? private var checkedPeerChatServiceActions = false @@ -264,6 +267,8 @@ public final class ChatController: TelegramController, GalleryHiddenMediaTarget, self.presentationData = context.sharedContext.currentPresentationData.with { $0 } self.automaticMediaDownloadSettings = context.sharedContext.currentAutomaticMediaDownloadSettings.with { $0 } + self.stickerSettings = ChatInterfaceStickerSettings(loopAnimatedStickers: false) + self.presentationInterfaceState = ChatPresentationInterfaceState(chatWallpaper: self.presentationData.chatWallpaper, theme: self.presentationData.theme, strings: self.presentationData.strings, dateTimeFormat: self.presentationData.dateTimeFormat, nameDisplayOrder: self.presentationData.nameDisplayOrder, limitsConfiguration: context.currentLimitsConfiguration.with { $0 }, fontSize: self.presentationData.fontSize, accountPeerId: context.account.peerId, mode: mode, chatLocation: chatLocation) var mediaAccessoryPanelVisibility = MediaAccessoryPanelVisibility.none @@ -1378,8 +1383,7 @@ public final class ChatController: TelegramController, GalleryHiddenMediaTarget, }, cancelInteractiveKeyboardGestures: { [weak self] in (self?.view.window as? WindowHost)?.cancelInteractiveKeyboardGestures() self?.chatDisplayNode.cancelInteractiveKeyboardGestures() - }, automaticMediaDownloadSettings: self.automaticMediaDownloadSettings, - pollActionState: ChatInterfacePollActionState()) + }, automaticMediaDownloadSettings: self.automaticMediaDownloadSettings, pollActionState: ChatInterfacePollActionState(), stickerSettings: self.stickerSettings) self.controllerInteraction = controllerInteraction @@ -1884,6 +1888,24 @@ public final class ChatController: TelegramController, GalleryHiddenMediaTarget, } }) + self.stickerSettingsDisposable = (context.sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.stickerSettings]) + |> deliverOnMainQueue).start(next: { [weak self] sharedData in + var stickerSettings = StickerSettings.defaultSettings + if let value = sharedData.entries[ApplicationSpecificSharedDataKeys.stickerSettings] as? StickerSettings { + stickerSettings = value + } + + let chatStickerSettings = ChatInterfaceStickerSettings(stickerSettings: stickerSettings) + + if let strongSelf = self, strongSelf.stickerSettings != chatStickerSettings { + strongSelf.stickerSettings = chatStickerSettings + strongSelf.controllerInteraction?.stickerSettings = chatStickerSettings + if strongSelf.isNodeLoaded { + strongSelf.chatDisplayNode.updateStickerSettings(chatStickerSettings) + } + } + }) + self.applicationInForegroundDisposable = (context.sharedContext.applicationBindings.applicationInForeground |> distinctUntilChanged |> deliverOn(Queue.mainQueue())).start(next: { [weak self] value in diff --git a/submodules/TelegramUI/TelegramUI/ChatControllerInteraction.swift b/submodules/TelegramUI/TelegramUI/ChatControllerInteraction.swift index 8c522afb15..90e26ecfd3 100644 --- a/submodules/TelegramUI/TelegramUI/ChatControllerInteraction.swift +++ b/submodules/TelegramUI/TelegramUI/ChatControllerInteraction.swift @@ -31,6 +31,22 @@ struct ChatInterfaceHighlightedState: Equatable { } } +struct ChatInterfaceStickerSettings: Equatable { + let loopAnimatedStickers: Bool + + public init(loopAnimatedStickers: Bool) { + self.loopAnimatedStickers = loopAnimatedStickers + } + + public init(stickerSettings: StickerSettings) { + self.loopAnimatedStickers = stickerSettings.loopAnimatedStickers + } + + static func ==(lhs: ChatInterfaceStickerSettings, rhs: ChatInterfaceStickerSettings) -> Bool { + return lhs.loopAnimatedStickers == rhs.loopAnimatedStickers + } +} + public enum ChatControllerInteractionLongTapAction { case url(String) case mention(String) @@ -104,9 +120,10 @@ public final class ChatControllerInteraction { var contextHighlightedState: ChatInterfaceHighlightedState? var automaticMediaDownloadSettings: MediaAutoDownloadSettings var pollActionState: ChatInterfacePollActionState + var stickerSettings: ChatInterfaceStickerSettings var searchTextHighightState: String? - init(openMessage: @escaping (Message, ChatControllerInteractionOpenMessageMode) -> Bool, openPeer: @escaping (PeerId?, ChatControllerInteractionNavigateToPeer, Message?) -> Void, openPeerMention: @escaping (String) -> Void, openMessageContextMenu: @escaping (Message, Bool, ASDisplayNode, CGRect) -> Void, navigateToMessage: @escaping (MessageId, MessageId) -> Void, clickThroughMessage: @escaping () -> Void, toggleMessagesSelection: @escaping ([MessageId], Bool) -> Void, sendMessage: @escaping (String) -> Void, sendSticker: @escaping (FileMediaReference, Bool) -> Void, sendGif: @escaping (FileMediaReference) -> Void, requestMessageActionCallback: @escaping (MessageId, MemoryBuffer?, Bool) -> Void, requestMessageActionUrlAuth: @escaping (String, MessageId, Int32) -> Void, activateSwitchInline: @escaping (PeerId?, String) -> Void, openUrl: @escaping (String, Bool, Bool?) -> Void, shareCurrentLocation: @escaping () -> Void, shareAccountContact: @escaping () -> Void, sendBotCommand: @escaping (MessageId?, String) -> Void, openInstantPage: @escaping (Message, ChatMessageItemAssociatedData?) -> Void, openWallpaper: @escaping (Message) -> Void, openHashtag: @escaping (String?, String) -> Void, updateInputState: @escaping ((ChatTextInputState) -> ChatTextInputState) -> Void, updateInputMode: @escaping ((ChatInputMode) -> ChatInputMode) -> Void, openMessageShareMenu: @escaping (MessageId) -> Void, presentController: @escaping (ViewController, Any?) -> Void, navigationController: @escaping () -> NavigationController?, presentGlobalOverlayController: @escaping (ViewController, Any?) -> Void, callPeer: @escaping (PeerId) -> Void, longTap: @escaping (ChatControllerInteractionLongTapAction, Message?) -> Void, openCheckoutOrReceipt: @escaping (MessageId) -> Void, openSearch: @escaping () -> Void, setupReply: @escaping (MessageId) -> Void, canSetupReply: @escaping (Message) -> Bool, navigateToFirstDateMessage: @escaping(Int32) ->Void, requestRedeliveryOfFailedMessages: @escaping (MessageId) -> Void, addContact: @escaping (String) -> Void, rateCall: @escaping (Message, CallId) -> Void, requestSelectMessagePollOption: @escaping (MessageId, Data) -> Void, openAppStorePage: @escaping () -> Void, displayMessageTooltip: @escaping (MessageId, String, ASDisplayNode?, CGRect?) -> Void, seekToTimecode: @escaping (Message, Double, Bool) -> Void, requestMessageUpdate: @escaping (MessageId) -> Void, cancelInteractiveKeyboardGestures: @escaping () -> Void, automaticMediaDownloadSettings: MediaAutoDownloadSettings, pollActionState: ChatInterfacePollActionState) { + init(openMessage: @escaping (Message, ChatControllerInteractionOpenMessageMode) -> Bool, openPeer: @escaping (PeerId?, ChatControllerInteractionNavigateToPeer, Message?) -> Void, openPeerMention: @escaping (String) -> Void, openMessageContextMenu: @escaping (Message, Bool, ASDisplayNode, CGRect) -> Void, navigateToMessage: @escaping (MessageId, MessageId) -> Void, clickThroughMessage: @escaping () -> Void, toggleMessagesSelection: @escaping ([MessageId], Bool) -> Void, sendMessage: @escaping (String) -> Void, sendSticker: @escaping (FileMediaReference, Bool) -> Void, sendGif: @escaping (FileMediaReference) -> Void, requestMessageActionCallback: @escaping (MessageId, MemoryBuffer?, Bool) -> Void, requestMessageActionUrlAuth: @escaping (String, MessageId, Int32) -> Void, activateSwitchInline: @escaping (PeerId?, String) -> Void, openUrl: @escaping (String, Bool, Bool?) -> Void, shareCurrentLocation: @escaping () -> Void, shareAccountContact: @escaping () -> Void, sendBotCommand: @escaping (MessageId?, String) -> Void, openInstantPage: @escaping (Message, ChatMessageItemAssociatedData?) -> Void, openWallpaper: @escaping (Message) -> Void, openHashtag: @escaping (String?, String) -> Void, updateInputState: @escaping ((ChatTextInputState) -> ChatTextInputState) -> Void, updateInputMode: @escaping ((ChatInputMode) -> ChatInputMode) -> Void, openMessageShareMenu: @escaping (MessageId) -> Void, presentController: @escaping (ViewController, Any?) -> Void, navigationController: @escaping () -> NavigationController?, presentGlobalOverlayController: @escaping (ViewController, Any?) -> Void, callPeer: @escaping (PeerId) -> Void, longTap: @escaping (ChatControllerInteractionLongTapAction, Message?) -> Void, openCheckoutOrReceipt: @escaping (MessageId) -> Void, openSearch: @escaping () -> Void, setupReply: @escaping (MessageId) -> Void, canSetupReply: @escaping (Message) -> Bool, navigateToFirstDateMessage: @escaping(Int32) ->Void, requestRedeliveryOfFailedMessages: @escaping (MessageId) -> Void, addContact: @escaping (String) -> Void, rateCall: @escaping (Message, CallId) -> Void, requestSelectMessagePollOption: @escaping (MessageId, Data) -> Void, openAppStorePage: @escaping () -> Void, displayMessageTooltip: @escaping (MessageId, String, ASDisplayNode?, CGRect?) -> Void, seekToTimecode: @escaping (Message, Double, Bool) -> Void, requestMessageUpdate: @escaping (MessageId) -> Void, cancelInteractiveKeyboardGestures: @escaping () -> Void, automaticMediaDownloadSettings: MediaAutoDownloadSettings, pollActionState: ChatInterfacePollActionState, stickerSettings: ChatInterfaceStickerSettings) { self.openMessage = openMessage self.openPeer = openPeer self.openPeerMention = openPeerMention @@ -154,6 +171,7 @@ public final class ChatControllerInteraction { self.automaticMediaDownloadSettings = automaticMediaDownloadSettings self.pollActionState = pollActionState + self.stickerSettings = stickerSettings } static var `default`: ChatControllerInteraction { @@ -175,6 +193,6 @@ public final class ChatControllerInteraction { }, requestMessageUpdate: { _ in }, cancelInteractiveKeyboardGestures: { }, automaticMediaDownloadSettings: MediaAutoDownloadSettings.defaultSettings, - pollActionState: ChatInterfacePollActionState()) + pollActionState: ChatInterfacePollActionState(), stickerSettings: ChatInterfaceStickerSettings(loopAnimatedStickers: false)) } } diff --git a/submodules/TelegramUI/TelegramUI/ChatControllerNode.swift b/submodules/TelegramUI/TelegramUI/ChatControllerNode.swift index ad4510afe7..9be192a99a 100644 --- a/submodules/TelegramUI/TelegramUI/ChatControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatControllerNode.swift @@ -1497,6 +1497,14 @@ class ChatControllerNode: ASDisplayNode, UIScrollViewDelegate { self.historyNode.prefetchManager.updateAutoDownloadSettings(settings) } + func updateStickerSettings(_ settings: ChatInterfaceStickerSettings) { + self.historyNode.forEachItemNode { itemNode in + if let itemNode = itemNode as? ChatMessageItemView { + itemNode.updateStickerSettings() + } + } + } + var isInputViewFocused: Bool { if let inputPanelNode = self.inputPanelNode as? ChatTextInputPanelNode { return inputPanelNode.isFocused diff --git a/submodules/TelegramUI/TelegramUI/ChatMediaInputStickerGridItem.swift b/submodules/TelegramUI/TelegramUI/ChatMediaInputStickerGridItem.swift index 3cf1fd44d8..414e20455d 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMediaInputStickerGridItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMediaInputStickerGridItem.swift @@ -145,7 +145,6 @@ final class ChatMediaInputStickerGridItem: GridItem { let node = ChatMediaInputStickerGridItemNode() node.interfaceInteraction = self.interfaceInteraction node.inputNodeInteraction = self.inputNodeInteraction - node.setup(account: self.account, stickerItem: self.stickerItem) node.selected = self.selected return node } @@ -157,7 +156,6 @@ final class ChatMediaInputStickerGridItem: GridItem { } node.interfaceInteraction = self.interfaceInteraction node.inputNodeInteraction = self.inputNodeInteraction - node.setup(account: self.account, stickerItem: self.stickerItem) node.selected = self.selected } } @@ -209,11 +207,6 @@ final class ChatMediaInputStickerGridItemNode: GridItemNode { self.imageNode.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.imageNodeTap(_:)))) } - func setup(account: Account, stickerItem: StickerPackItem) { - //self.updateSelectionState(animated: false) - //self.updateHiddenMedia() - } - override func updateLayout(item: GridItem, size: CGSize, isVisible: Bool, synchronousLoads: Bool) { guard let item = item as? ChatMediaInputStickerGridItem else { return @@ -232,13 +225,7 @@ final class ChatMediaInputStickerGridItemNode: GridItemNode { self.addSubnode(animationNode) } self.imageNode.setSignal(chatMessageAnimatedSticker(postbox: item.account.postbox, file: item.stickerItem.file, small: false, size: CGSize(width: 160.0, height: 160.0))) - if self.isPlaying { - self.didSetUpAnimationNode = true - self.animationNode?.setup(account: item.account, resource: item.stickerItem.file.resource, width: 160, height: 160, mode: .cached) - } else { - self.didSetUpAnimationNode = false - } - self.animationNode?.visibility = self.isPlaying + self.updateVisibility() self.stickerFetchedDisposable.set(freeMediaFileResourceInteractiveFetched(account: item.account, fileReference: stickerPackFileReference(item.stickerItem.file), resource: item.stickerItem.file.resource).start()) } else { if let animationNode = self.animationNode { @@ -297,7 +284,10 @@ final class ChatMediaInputStickerGridItemNode: GridItemNode { } func updateVisibility() { - let isPlaying = self.isPanelVisible && self.isVisibleInGrid + guard let item = self.item else { + return + } + let isPlaying = self.isPanelVisible && self.isVisibleInGrid && (item.interfaceInteraction?.stickerSettings.loopAnimatedStickers ?? true) if self.isPlaying != isPlaying { self.isPlaying = isPlaying self.animationNode?.visibility = isPlaying diff --git a/submodules/TelegramUI/TelegramUI/ChatMediaInputStickerPackItem.swift b/submodules/TelegramUI/TelegramUI/ChatMediaInputStickerPackItem.swift index b874f8678b..0907653e9f 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMediaInputStickerPackItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMediaInputStickerPackItem.swift @@ -103,7 +103,7 @@ final class ChatMediaInputStickerPackItemNode: ListViewItemNode { override var visibility: ListViewItemNodeVisibility { didSet { - self.visibilityStatus = self.visibility != .none + self.visibilityStatus = self.visibility != .none && false } } @@ -171,30 +171,30 @@ final class ChatMediaInputStickerPackItemNode: ListViewItemNode { self.currentThumbnailItem = thumbnailItem if let thumbnailItem = thumbnailItem { switch thumbnailItem { - case let .still(representation): - let imageSize = representation.dimensions.aspectFitted(boundingImageSize) - let imageApply = self.imageNode.asyncLayout()(TransformImageArguments(corners: ImageCorners(), imageSize: imageSize, boundingSize: imageSize, intrinsicInsets: UIEdgeInsets())) - imageApply() - self.imageNode.setSignal(chatMessageStickerPackThumbnail(postbox: account.postbox, representation: representation)) - - self.imageNode.frame = CGRect(origin: CGPoint(x: floor((boundingSize.width - imageSize.width) / 2.0) + verticalOffset, y: floor((boundingSize.height - imageSize.height) / 2.0)), size: imageSize) - case let .animated(resource): - let imageSize = boundingImageSize - - let animatedStickerNode: AnimatedStickerNode - if let current = self.animatedStickerNode { - animatedStickerNode = current - } else { - animatedStickerNode = AnimatedStickerNode() - self.animatedStickerNode = animatedStickerNode - animatedStickerNode.transform = CATransform3DMakeRotation(CGFloat.pi / 2.0, 0.0, 0.0, 1.0) - self.addSubnode(animatedStickerNode) - animatedStickerNode.setup(account: account, resource: resource, width: 80, height: 80, mode: .cached) - animatedStickerNode.visibility = self.visibilityStatus - } - if let animatedStickerNode = self.animatedStickerNode { - animatedStickerNode.frame = CGRect(origin: CGPoint(x: floor((boundingSize.width - imageSize.width) / 2.0) + verticalOffset, y: floor((boundingSize.height - imageSize.height) / 2.0)), size: imageSize) - } + case let .still(representation): + let imageSize = representation.dimensions.aspectFitted(boundingImageSize) + let imageApply = self.imageNode.asyncLayout()(TransformImageArguments(corners: ImageCorners(), imageSize: imageSize, boundingSize: imageSize, intrinsicInsets: UIEdgeInsets())) + imageApply() + self.imageNode.setSignal(chatMessageStickerPackThumbnail(postbox: account.postbox, representation: representation)) + + self.imageNode.frame = CGRect(origin: CGPoint(x: floor((boundingSize.width - imageSize.width) / 2.0) + verticalOffset, y: floor((boundingSize.height - imageSize.height) / 2.0)), size: imageSize) + case let .animated(resource): + let imageSize = boundingImageSize + + let animatedStickerNode: AnimatedStickerNode + if let current = self.animatedStickerNode { + animatedStickerNode = current + } else { + animatedStickerNode = AnimatedStickerNode() + self.animatedStickerNode = animatedStickerNode + animatedStickerNode.transform = CATransform3DMakeRotation(CGFloat.pi / 2.0, 0.0, 0.0, 1.0) + self.addSubnode(animatedStickerNode) + animatedStickerNode.setup(account: account, resource: resource, width: 80, height: 80, mode: .cached) + animatedStickerNode.visibility = self.visibilityStatus && false + } + if let animatedStickerNode = self.animatedStickerNode { + animatedStickerNode.frame = CGRect(origin: CGPoint(x: floor((boundingSize.width - imageSize.width) / 2.0) + verticalOffset, y: floor((boundingSize.height - imageSize.height) / 2.0)), size: imageSize) + } } if let resourceReference = resourceReference { self.stickerFetchedDisposable.set(fetchedMediaResource(mediaBox: account.postbox.mediaBox, reference: resourceReference).start()) diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageAnimatedStickerItemNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageAnimatedStickerItemNode.swift index 7ffe44291d..b1feb4f240 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageAnimatedStickerItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageAnimatedStickerItemNode.swift @@ -17,6 +17,7 @@ class ChatMessageAnimatedStickerItemNode: ChatMessageItemView { let imageNode: TransformImageNode private let animationNode: AnimatedStickerNode private var didSetUpAnimationNode = false + private var isPlaying = false private var swipeToReplyNode: ChatMessageSwipeToReplyNode? private var swipeToReplyFeedback: HapticFeedback? @@ -90,8 +91,7 @@ class ChatMessageAnimatedStickerItemNode: ChatMessageItemView { } self.view.addGestureRecognizer(replyRecognizer) } - - private var visibilityPromise = ValuePromise(false, ignoreRepeated: true) + override var visibility: ListViewItemNodeVisibility { didSet { let wasVisible = oldValue != .none @@ -106,21 +106,7 @@ class ChatMessageAnimatedStickerItemNode: ChatMessageItemView { private var visibilityStatus: Bool = false { didSet { if self.visibilityStatus != oldValue { - if self.visibilityStatus { - self.animationNode.visibility = true - self.visibilityPromise.set(true) - if let item = self.item, !self.didSetUpAnimationNode { - for media in item.message.media { - if let telegramFile = media as? TelegramMediaFile { - self.didSetUpAnimationNode = true - self.animationNode.setup(account: item.context.account, resource: telegramFile.resource, width: 384, height: 384, mode: .cached) - } - } - } - } else { - self.animationNode.visibility = false - self.visibilityPromise.set(false) - } + self.updateVisibility() } } } @@ -133,7 +119,8 @@ class ChatMessageAnimatedStickerItemNode: ChatMessageItemView { if self.telegramFile?.id != telegramFile.id { self.telegramFile = telegramFile self.imageNode.setSignal(chatMessageAnimatedSticker(postbox: item.context.account.postbox, file: telegramFile, small: false, size: CGSize(width: 384.0, height: 384.0), thumbnail: false)) - if self.visibilityStatus { + self.updateVisibility() + if self.visibilityStatus && false { self.didSetUpAnimationNode = true self.animationNode.setup(account: item.context.account, resource: telegramFile.resource, width: 384, height: 384, mode: .cached) } @@ -144,6 +131,31 @@ class ChatMessageAnimatedStickerItemNode: ChatMessageItemView { } } + func updateVisibility() { + guard let item = self.item else { + return + } + + let isPlaying = self.visibilityStatus && item.controllerInteraction.stickerSettings.loopAnimatedStickers + if self.isPlaying != isPlaying { + self.isPlaying = isPlaying + self.animationNode.visibility = isPlaying + if let item = self.item, isPlaying, !self.didSetUpAnimationNode { + self.didSetUpAnimationNode = true + for media in item.message.media { + if let telegramFile = media as? TelegramMediaFile { + self.animationNode.setup(account: item.context.account, resource: telegramFile.resource, width: 384, height: 384, mode: .cached) + break + } + } + } + } + } + + override func updateStickerSettings() { + self.updateVisibility() + } + override func asyncLayout() -> (_ item: ChatMessageItem, _ params: ListViewItemLayoutParams, _ mergedTop: ChatMessageMerge, _ mergedBottom: ChatMessageMerge, _ dateHeaderAtBottom: Bool) -> (ListViewItemNodeLayout, (ListViewItemUpdateAnimation, Bool) -> Void) { let displaySize = CGSize(width: 184.0, height: 184.0) let telegramFile = self.telegramFile diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageBubbleItemNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageBubbleItemNode.swift index 4403bf84c3..5459e75993 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageBubbleItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageBubbleItemNode.swift @@ -2191,7 +2191,6 @@ class ChatMessageBubbleItemNode: ChatMessageItemView { } } - override func playMediaWithSound() -> ((Double?) -> Void, Bool, Bool, Bool, ASDisplayNode?)? { for contentNode in self.contentNodes { if let playMediaWithSound = contentNode.playMediaWithSound() { diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageItemView.swift b/submodules/TelegramUI/TelegramUI/ChatMessageItemView.swift index 06bf3cd96a..a4f1d3fd33 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageItemView.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageItemView.swift @@ -698,6 +698,9 @@ public class ChatMessageItemView: ListViewItemNode { func updateAutomaticMediaDownloadSettings() { } + func updateStickerSettings() { + } + func playMediaWithSound() -> ((Double?) -> Void, Bool, Bool, Bool, ASDisplayNode?)? { return nil } diff --git a/submodules/TelegramUI/TelegramUI/FeaturedStickerPacksController.swift b/submodules/TelegramUI/TelegramUI/FeaturedStickerPacksController.swift index 51088e34d9..207189c093 100644 --- a/submodules/TelegramUI/TelegramUI/FeaturedStickerPacksController.swift +++ b/submodules/TelegramUI/TelegramUI/FeaturedStickerPacksController.swift @@ -5,6 +5,7 @@ import SwiftSignalKit import Postbox import TelegramCore import TelegramPresentationData +import TelegramUIPreferences private final class FeaturedStickerPacksControllerArguments { let account: Account @@ -46,7 +47,7 @@ private enum FeaturedStickerPacksEntryId: Hashable { } private enum FeaturedStickerPacksEntry: ItemListNodeEntry { - case pack(Int32, PresentationTheme, PresentationStrings, StickerPackCollectionInfo, Bool, StickerPackItem?, String, Bool) + case pack(Int32, PresentationTheme, PresentationStrings, StickerPackCollectionInfo, Bool, StickerPackItem?, String, Bool, Bool) var section: ItemListSectionId { switch self { @@ -57,15 +58,15 @@ private enum FeaturedStickerPacksEntry: ItemListNodeEntry { var stableId: FeaturedStickerPacksEntryId { switch self { - case let .pack(_, _, _, info, _, _, _, _): + case let .pack(_, _, _, info, _, _, _, _, _): return .pack(info.id) } } static func ==(lhs: FeaturedStickerPacksEntry, rhs: FeaturedStickerPacksEntry) -> Bool { switch lhs { - case let .pack(lhsIndex, lhsTheme, lhsStrings, lhsInfo, lhsUnread, lhsTopItem, lhsCount, lhsInstalled): - if case let .pack(rhsIndex, rhsTheme, rhsStrings, rhsInfo, rhsUnread, rhsTopItem, rhsCount, rhsInstalled) = rhs { + case let .pack(lhsIndex, lhsTheme, lhsStrings, lhsInfo, lhsUnread, lhsTopItem, lhsCount, lhsPlayAnimatedStickers, lhsInstalled): + if case let .pack(rhsIndex, rhsTheme, rhsStrings, rhsInfo, rhsUnread, rhsTopItem, rhsCount, rhsPlayAnimatedStickers, rhsInstalled) = rhs { if lhsIndex != rhsIndex { return false } @@ -87,6 +88,9 @@ private enum FeaturedStickerPacksEntry: ItemListNodeEntry { if lhsCount != rhsCount { return false } + if lhsPlayAnimatedStickers != rhsPlayAnimatedStickers { + return false + } if lhsInstalled != rhsInstalled { return false } @@ -99,9 +103,9 @@ private enum FeaturedStickerPacksEntry: ItemListNodeEntry { static func <(lhs: FeaturedStickerPacksEntry, rhs: FeaturedStickerPacksEntry) -> Bool { switch lhs { - case let .pack(lhsIndex, _, _, _, _, _, _, _): + case let .pack(lhsIndex, _, _, _, _, _, _, _, _): switch rhs { - case let .pack(rhsIndex, _, _, _, _, _, _, _): + case let .pack(rhsIndex, _, _, _, _, _, _, _, _): return lhsIndex < rhsIndex } } @@ -109,8 +113,8 @@ private enum FeaturedStickerPacksEntry: ItemListNodeEntry { func item(_ arguments: FeaturedStickerPacksControllerArguments) -> ListViewItem { switch self { - case let .pack(_, theme, strings, info, unread, topItem, count, installed): - return ItemListStickerPackItem(theme: theme, strings: strings, account: arguments.account, packInfo: info, itemCount: count, topItem: topItem, unread: unread, control: .installation(installed: installed), editing: ItemListStickerPackItemEditing(editable: false, editing: false, revealed: false, reorderable: false), enabled: true, sectionId: self.section, action: { + case let .pack(_, theme, strings, info, unread, topItem, count, playAnimatedStickers, installed): + return ItemListStickerPackItem(theme: theme, strings: strings, account: arguments.account, packInfo: info, itemCount: count, topItem: topItem, unread: unread, control: .installation(installed: installed), editing: ItemListStickerPackItemEditing(editable: false, editing: false, revealed: false, reorderable: false), enabled: true, playAnimatedStickers: playAnimatedStickers, sectionId: self.section, action: { arguments.openStickerPack(info) }, setPackIdWithRevealedOptions: { _, _ in }, addPack: { @@ -130,7 +134,7 @@ private struct FeaturedStickerPacksControllerState: Equatable { } } -private func featuredStickerPacksControllerEntries(presentationData: PresentationData, state: FeaturedStickerPacksControllerState, view: CombinedView, featured: [FeaturedStickerPackItem], unreadPacks: [ItemCollectionId: Bool]) -> [FeaturedStickerPacksEntry] { +private func featuredStickerPacksControllerEntries(presentationData: PresentationData, state: FeaturedStickerPacksControllerState, view: CombinedView, featured: [FeaturedStickerPackItem], unreadPacks: [ItemCollectionId: Bool], stickerSettings: StickerSettings) -> [FeaturedStickerPacksEntry] { var entries: [FeaturedStickerPacksEntry] = [] if let stickerPacksView = view.views[.itemCollectionInfos(namespaces: [Namespaces.ItemCollection.CloudStickerPacks])] as? ItemCollectionInfosView, !featured.isEmpty { @@ -145,7 +149,7 @@ private func featuredStickerPacksControllerEntries(presentationData: Presentatio if let value = unreadPacks[item.info.id] { unread = value } - entries.append(.pack(index, presentationData.theme, presentationData.strings, item.info, unread, item.topItems.first, presentationData.strings.StickerPack_StickerCount(item.info.count), installedPacks.contains(item.info.id))) + entries.append(.pack(index, presentationData.theme, presentationData.strings, item.info, unread, item.topItems.first, presentationData.strings.StickerPack_StickerCount(item.info.count), stickerSettings.loopAnimatedStickers, installedPacks.contains(item.info.id))) index += 1 } } @@ -195,9 +199,14 @@ public func featuredStickerPacksController(context: AccountContext) -> ViewContr var previousPackCount: Int? var initialUnreadPacks: [ItemCollectionId: Bool] = [:] - let signal = combineLatest(context.sharedContext.presentationData, statePromise.get() |> deliverOnMainQueue, stickerPacks.get() |> deliverOnMainQueue, featured.get() |> deliverOnMainQueue) + let signal = combineLatest(context.sharedContext.presentationData, statePromise.get() |> deliverOnMainQueue, stickerPacks.get() |> deliverOnMainQueue, featured.get() |> deliverOnMainQueue, context.sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.stickerSettings]) |> deliverOnMainQueue) |> deliverOnMainQueue - |> map { presentationData, state, view, featured -> (ItemListControllerState, (ItemListNodeState, FeaturedStickerPacksEntry.ItemGenerationArguments)) in + |> map { presentationData, state, view, featured, sharedData -> (ItemListControllerState, (ItemListNodeState, FeaturedStickerPacksEntry.ItemGenerationArguments)) in + var stickerSettings = StickerSettings.defaultSettings + if let value = sharedData.entries[ApplicationSpecificSharedDataKeys.stickerSettings] as? StickerSettings { + stickerSettings = value + } + let packCount: Int? = featured.count for item in featured { @@ -212,7 +221,7 @@ public func featuredStickerPacksController(context: AccountContext) -> ViewContr let controllerState = ItemListControllerState(theme: presentationData.theme, title: .text(presentationData.strings.FeaturedStickerPacks_Title), leftNavigationButton: nil, rightNavigationButton: rightNavigationButton, backNavigationButton: ItemListBackButton(title: presentationData.strings.Common_Back), animateChanges: true) - let listState = ItemListNodeState(entries: featuredStickerPacksControllerEntries(presentationData: presentationData, state: state, view: view, featured: featured, unreadPacks: initialUnreadPacks), style: .blocks, animateChanges: false) + let listState = ItemListNodeState(entries: featuredStickerPacksControllerEntries(presentationData: presentationData, state: state, view: view, featured: featured, unreadPacks: initialUnreadPacks, stickerSettings: stickerSettings), style: .blocks, animateChanges: false) return (controllerState, (listState, arguments)) } |> afterDisposed { actionsDisposable.dispose() @@ -226,7 +235,7 @@ public func featuredStickerPacksController(context: AccountContext) -> ViewContr var unreadIds: [ItemCollectionId] = [] for entry in entries { switch entry { - case let .pack(_, _, _, info, unread, _, _, _): + case let .pack(_, _, _, info, unread, _, _, _, _): if unread && !alreadyReadIds.contains(info.id) { unreadIds.append(info.id) } diff --git a/submodules/TelegramUI/TelegramUI/GroupStickerPackSetupController.swift b/submodules/TelegramUI/TelegramUI/GroupStickerPackSetupController.swift index 0cb5ec6d30..e37813635f 100644 --- a/submodules/TelegramUI/TelegramUI/GroupStickerPackSetupController.swift +++ b/submodules/TelegramUI/TelegramUI/GroupStickerPackSetupController.swift @@ -5,6 +5,7 @@ import SwiftSignalKit import Postbox import TelegramCore import TelegramPresentationData +import TelegramUIPreferences private final class GroupStickerPackSetupControllerArguments { let account: Account @@ -64,7 +65,7 @@ private enum GroupStickerPackEntry: ItemListNodeEntry { case currentPack(Int32, PresentationTheme, PresentationStrings, GroupStickerPackCurrentItemContent) case searchInfo(PresentationTheme, String) case packsTitle(PresentationTheme, String) - case pack(Int32, PresentationTheme, PresentationStrings, StickerPackCollectionInfo, StickerPackItem?, String, Bool) + case pack(Int32, PresentationTheme, PresentationStrings, StickerPackCollectionInfo, StickerPackItem?, String, Bool, Bool) var section: ItemListSectionId { switch self { @@ -85,7 +86,7 @@ private enum GroupStickerPackEntry: ItemListNodeEntry { return .index(2) case .packsTitle: return .index(3) - case let .pack(_, _, _, info, _, _, _): + case let .pack(_, _, _, info, _, _, _, _): return .pack(info.id) } } @@ -128,8 +129,8 @@ private enum GroupStickerPackEntry: ItemListNodeEntry { } else { return false } - case let .pack(lhsIndex, lhsTheme, lhsStrings, lhsInfo, lhsTopItem, lhsCount, lhsSelected): - if case let .pack(rhsIndex, rhsTheme, rhsStrings, rhsInfo, rhsTopItem, rhsCount, rhsSelected) = rhs { + case let .pack(lhsIndex, lhsTheme, lhsStrings, lhsInfo, lhsTopItem, lhsCount, lhsPlayAnimatedStickers, lhsSelected): + if case let .pack(rhsIndex, rhsTheme, rhsStrings, rhsInfo, rhsTopItem, rhsCount, rhsPlayAnimatedStickers, rhsSelected) = rhs { if lhsIndex != rhsIndex { return false } @@ -148,6 +149,9 @@ private enum GroupStickerPackEntry: ItemListNodeEntry { if lhsCount != rhsCount { return false } + if lhsPlayAnimatedStickers != rhsPlayAnimatedStickers { + return false + } if lhsSelected != rhsSelected { return false } @@ -188,9 +192,9 @@ private enum GroupStickerPackEntry: ItemListNodeEntry { default: return true } - case let .pack(lhsIndex, _, _, _, _, _, _): + case let .pack(lhsIndex, _, _, _, _, _, _, _): switch rhs { - case let .pack(rhsIndex, _, _, _, _, _, _): + case let .pack(rhsIndex, _, _, _, _, _, _, _): return lhsIndex < rhsIndex default: return false @@ -216,8 +220,8 @@ private enum GroupStickerPackEntry: ItemListNodeEntry { return ItemListTextItem(theme: theme, text: .plain(text), sectionId: self.section, linkAction: nil) case let .packsTitle(theme, text): return ItemListSectionHeaderItem(theme: theme, text: text, sectionId: self.section) - case let .pack(_, theme, strings, info, topItem, count, selected): - return ItemListStickerPackItem(theme: theme, strings: strings, account: arguments.account, packInfo: info, itemCount: count, topItem: topItem, unread: false, control: selected ? .selection : .none, editing: ItemListStickerPackItemEditing(editable: false, editing: false, revealed: false, reorderable: false), enabled: true, sectionId: self.section, action: { + case let .pack(_, theme, strings, info, topItem, count, playAnimatedStickers, selected): + return ItemListStickerPackItem(theme: theme, strings: strings, account: arguments.account, packInfo: info, itemCount: count, topItem: topItem, unread: false, control: selected ? .selection : .none, editing: ItemListStickerPackItemEditing(editable: false, editing: false, revealed: false, reorderable: false), enabled: true, playAnimatedStickers: playAnimatedStickers, sectionId: self.section, action: { if selected { arguments.openStickerPack(info) } else { @@ -258,7 +262,7 @@ private struct GroupStickerPackSetupControllerState: Equatable { var isSaving: Bool } -private func groupStickerPackSetupControllerEntries(presentationData: PresentationData, searchText: String, view: CombinedView, initialData: InitialStickerPackData?, searchState: GroupStickerPackSearchState) -> [GroupStickerPackEntry] { +private func groupStickerPackSetupControllerEntries(presentationData: PresentationData, searchText: String, view: CombinedView, initialData: InitialStickerPackData?, searchState: GroupStickerPackSearchState, stickerSettings: StickerSettings) -> [GroupStickerPackEntry] { if initialData == nil { return [] } @@ -288,7 +292,7 @@ private func groupStickerPackSetupControllerEntries(presentationData: Presentati if case let .found(found) = searchState { selected = found.info.id == info.id } - entries.append(.pack(index, presentationData.theme, presentationData.strings, info, entry.firstItem as? StickerPackItem, presentationData.strings.StickerPack_StickerCount(info.count == 0 ? entry.count : info.count), selected)) + entries.append(.pack(index, presentationData.theme, presentationData.strings, info, entry.firstItem as? StickerPackItem, presentationData.strings.StickerPack_StickerCount(info.count == 0 ? entry.count : info.count), stickerSettings.loopAnimatedStickers, selected)) index += 1 } } @@ -400,66 +404,71 @@ public func groupStickerPackSetupController(context: AccountContext, peerId: Pee let previousHadData = Atomic(value: false) - let signal = combineLatest(context.sharedContext.presentationData, statePromise.get() |> deliverOnMainQueue, initialData.get() |> deliverOnMainQueue, stickerPacks.get() |> deliverOnMainQueue, searchState.get() |> deliverOnMainQueue) - |> map { presentationData, state, initialData, view, searchState -> (ItemListControllerState, (ItemListNodeState, GroupStickerPackEntry.ItemGenerationArguments)) in - let leftNavigationButton = ItemListNavigationButton(content: .text(presentationData.strings.Common_Cancel), style: .regular, enabled: true, action: { - dismissImpl?() - }) - - var rightNavigationButton: ItemListNavigationButton? - if initialData != nil { - if state.isSaving { - rightNavigationButton = ItemListNavigationButton(content: .text(""), style: .activity, enabled: true, action: {}) - } else { - let enabled: Bool - var info: StickerPackCollectionInfo? - switch searchState.1 { - case .searching, .notFound: - enabled = false - case .none: - enabled = true - case let .found(data): - enabled = true - info = data.info - } - rightNavigationButton = ItemListNavigationButton(content: .text(presentationData.strings.Common_Done), style: .bold, enabled: enabled, action: { - if info?.id == currentPackInfo?.id { - dismissImpl?() - } else { + let signal = combineLatest(context.sharedContext.presentationData, statePromise.get() |> deliverOnMainQueue, initialData.get() |> deliverOnMainQueue, stickerPacks.get() |> deliverOnMainQueue, searchState.get() |> deliverOnMainQueue, context.sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.stickerSettings]) |> deliverOnMainQueue) + |> map { presentationData, state, initialData, view, searchState, sharedData -> (ItemListControllerState, (ItemListNodeState, GroupStickerPackEntry.ItemGenerationArguments)) in + var stickerSettings = StickerSettings.defaultSettings + if let value = sharedData.entries[ApplicationSpecificSharedDataKeys.stickerSettings] as? StickerSettings { + stickerSettings = value + } + + let leftNavigationButton = ItemListNavigationButton(content: .text(presentationData.strings.Common_Cancel), style: .regular, enabled: true, action: { + dismissImpl?() + }) + + var rightNavigationButton: ItemListNavigationButton? + if initialData != nil { + if state.isSaving { + rightNavigationButton = ItemListNavigationButton(content: .text(""), style: .activity, enabled: true, action: {}) + } else { + let enabled: Bool + var info: StickerPackCollectionInfo? + switch searchState.1 { + case .searching, .notFound: + enabled = false + case .none: + enabled = true + case let .found(data): + enabled = true + info = data.info + } + rightNavigationButton = ItemListNavigationButton(content: .text(presentationData.strings.Common_Done), style: .bold, enabled: enabled, action: { + if info?.id == currentPackInfo?.id { + dismissImpl?() + } else { + updateState { state in + var state = state + state.isSaving = true + return state + } + saveDisposable.set((updateGroupSpecificStickerset(postbox: context.account.postbox, network: context.account.network, peerId: peerId, info: info) + |> deliverOnMainQueue).start(error: { _ in updateState { state in var state = state - state.isSaving = true + state.isSaving = false return state } - saveDisposable.set((updateGroupSpecificStickerset(postbox: context.account.postbox, network: context.account.network, peerId: peerId, info: info) - |> deliverOnMainQueue).start(error: { _ in - updateState { state in - var state = state - state.isSaving = false - return state - } - }, completed: { - dismissImpl?() - })) - } - }) - } + }, completed: { + dismissImpl?() + })) + } + }) } - - let controllerState = ItemListControllerState(theme: presentationData.theme, title: .text(presentationData.strings.Channel_Info_Stickers), leftNavigationButton: leftNavigationButton, rightNavigationButton: rightNavigationButton, backNavigationButton: ItemListBackButton(title: presentationData.strings.Common_Back), animateChanges: true) - - let hasData = initialData != nil - let hadData = previousHadData.swap(hasData) - - var emptyStateItem: ItemListLoadingIndicatorEmptyStateItem? - if !hasData { - emptyStateItem = ItemListLoadingIndicatorEmptyStateItem(theme: presentationData.theme) - } - - let listState = ItemListNodeState(entries: groupStickerPackSetupControllerEntries(presentationData: presentationData, searchText: searchState.0, view: view, initialData: initialData, searchState: searchState.1), style: .blocks, emptyStateItem: emptyStateItem, animateChanges: hasData && hadData) - return (controllerState, (listState, arguments)) - } |> afterDisposed { - actionsDisposable.dispose() + } + + let controllerState = ItemListControllerState(theme: presentationData.theme, title: .text(presentationData.strings.Channel_Info_Stickers), leftNavigationButton: leftNavigationButton, rightNavigationButton: rightNavigationButton, backNavigationButton: ItemListBackButton(title: presentationData.strings.Common_Back), animateChanges: true) + + let hasData = initialData != nil + let hadData = previousHadData.swap(hasData) + + var emptyStateItem: ItemListLoadingIndicatorEmptyStateItem? + if !hasData { + emptyStateItem = ItemListLoadingIndicatorEmptyStateItem(theme: presentationData.theme) + } + + let listState = ItemListNodeState(entries: groupStickerPackSetupControllerEntries(presentationData: presentationData, searchText: searchState.0, view: view, initialData: initialData, searchState: searchState.1, stickerSettings: stickerSettings), style: .blocks, emptyStateItem: emptyStateItem, animateChanges: hasData && hadData) + return (controllerState, (listState, arguments)) + } |> afterDisposed { + actionsDisposable.dispose() } let controller = ItemListController(context: context, state: signal) diff --git a/submodules/TelegramUI/TelegramUI/InstalledStickerPacksController.swift b/submodules/TelegramUI/TelegramUI/InstalledStickerPacksController.swift index c2f6745deb..1e8a02f9c1 100644 --- a/submodules/TelegramUI/TelegramUI/InstalledStickerPacksController.swift +++ b/submodules/TelegramUI/TelegramUI/InstalledStickerPacksController.swift @@ -18,8 +18,9 @@ private final class InstalledStickerPacksControllerArguments { let openFeatured: () -> Void let openArchived: ([ArchivedStickerPackItem]?) -> Void let openSuggestOptions: () -> Void + let toggleAnimatedStickers: (Bool) -> Void - init(account: Account, openStickerPack: @escaping (StickerPackCollectionInfo) -> Void, setPackIdWithRevealedOptions: @escaping (ItemCollectionId?, ItemCollectionId?) -> Void, removePack: @escaping (ArchivedStickerPackItem) -> Void, openStickersBot: @escaping () -> Void, openMasks: @escaping () -> Void, openFeatured: @escaping () -> Void, openArchived: @escaping ([ArchivedStickerPackItem]?) -> Void, openSuggestOptions: @escaping () -> Void) { + init(account: Account, openStickerPack: @escaping (StickerPackCollectionInfo) -> Void, setPackIdWithRevealedOptions: @escaping (ItemCollectionId?, ItemCollectionId?) -> Void, removePack: @escaping (ArchivedStickerPackItem) -> Void, openStickersBot: @escaping () -> Void, openMasks: @escaping () -> Void, openFeatured: @escaping () -> Void, openArchived: @escaping ([ArchivedStickerPackItem]?) -> Void, openSuggestOptions: @escaping () -> Void, toggleAnimatedStickers: @escaping (Bool) -> Void) { self.account = account self.openStickerPack = openStickerPack self.setPackIdWithRevealedOptions = setPackIdWithRevealedOptions @@ -29,6 +30,7 @@ private final class InstalledStickerPacksControllerArguments { self.openFeatured = openFeatured self.openArchived = openArchived self.openSuggestOptions = openSuggestOptions + self.toggleAnimatedStickers = toggleAnimatedStickers } } @@ -85,13 +87,15 @@ private enum InstalledStickerPacksEntry: ItemListNodeEntry { case trending(PresentationTheme, String, Int32) case archived(PresentationTheme, String, Int32, [ArchivedStickerPackItem]?) case masks(PresentationTheme, String) + case animatedStickers(PresentationTheme, String, Bool) + case animatedStickersInfo(PresentationTheme, String) case packsTitle(PresentationTheme, String) - case pack(Int32, PresentationTheme, PresentationStrings, StickerPackCollectionInfo, StickerPackItem?, String, Bool, ItemListStickerPackItemEditing) + case pack(Int32, PresentationTheme, PresentationStrings, StickerPackCollectionInfo, StickerPackItem?, String, Bool, Bool, ItemListStickerPackItemEditing) case packsInfo(PresentationTheme, String) var section: ItemListSectionId { switch self { - case .suggestOptions, .trending, .masks, .archived: + case .suggestOptions, .trending, .masks, .archived, .animatedStickers, .animatedStickersInfo: return InstalledStickerPacksSection.service.rawValue case .packsTitle, .pack, .packsInfo: return InstalledStickerPacksSection.stickers.rawValue @@ -108,12 +112,16 @@ private enum InstalledStickerPacksEntry: ItemListNodeEntry { return .index(2) case .masks: return .index(3) - case .packsTitle: + case .animatedStickers: return .index(4) - case let .pack(_, _, _, info, _, _, _, _): + case .animatedStickersInfo: + return .index(5) + case .packsTitle: + return .index(6) + case let .pack(_, _, _, info, _, _, _, _, _): return .pack(info.id) case .packsInfo: - return .index(5) + return .index(7) } } @@ -143,14 +151,26 @@ private enum InstalledStickerPacksEntry: ItemListNodeEntry { } else { return false } + case let .animatedStickers(lhsTheme, lhsText, lhsValue): + if case let .animatedStickers(rhsTheme, rhsText, rhsValue) = rhs, lhsTheme === rhsTheme, lhsText == rhsText, lhsValue == rhsValue { + return true + } else { + return false + } + case let .animatedStickersInfo(lhsTheme, lhsText): + if case let .animatedStickersInfo(rhsTheme, rhsText) = rhs, lhsTheme === rhsTheme, lhsText == rhsText { + return true + } else { + return false + } case let .packsTitle(lhsTheme, lhsText): if case let .packsTitle(rhsTheme, rhsText) = rhs, lhsTheme === rhsTheme, lhsText == rhsText { return true } else { return false } - case let .pack(lhsIndex, lhsTheme, lhsStrings, lhsInfo, lhsTopItem, lhsCount, lhsEnabled, lhsEditing): - if case let .pack(rhsIndex, rhsTheme, rhsStrings, rhsInfo, rhsTopItem, rhsCount, rhsEnabled, rhsEditing) = rhs { + case let .pack(lhsIndex, lhsTheme, lhsStrings, lhsInfo, lhsTopItem, lhsCount, lhsAnimatedStickers, lhsEnabled, lhsEditing): + if case let .pack(rhsIndex, rhsTheme, rhsStrings, rhsInfo, rhsTopItem, rhsCount, rhsAnimatedStickers, rhsEnabled, rhsEditing) = rhs { if lhsIndex != rhsIndex { return false } @@ -169,6 +189,9 @@ private enum InstalledStickerPacksEntry: ItemListNodeEntry { if lhsCount != rhsCount { return false } + if lhsAnimatedStickers != rhsAnimatedStickers { + return false + } if lhsEnabled != rhsEnabled { return false } @@ -218,16 +241,30 @@ private enum InstalledStickerPacksEntry: ItemListNodeEntry { default: return true } - case .packsTitle: + case .animatedStickers: switch rhs { - case .suggestOptions, .trending, .masks, .archived, .packsTitle: + case .suggestOptions, .trending, .archived, .masks, .animatedStickers: return false default: return true } - case let .pack(lhsIndex, _, _, _, _, _, _, _): + case .animatedStickersInfo: switch rhs { - case let .pack(rhsIndex, _, _, _, _, _, _, _): + case .suggestOptions, .trending, .archived, .masks, .animatedStickers, .animatedStickersInfo: + return false + default: + return true + } + case .packsTitle: + switch rhs { + case .suggestOptions, .trending, .masks, .archived, .animatedStickers, .animatedStickersInfo, .packsTitle: + return false + default: + return true + } + case let .pack(lhsIndex, _, _, _, _, _, _, _, _): + switch rhs { + case let .pack(rhsIndex, _, _, _, _, _, _, _, _): return lhsIndex < rhsIndex case .packsInfo: return true @@ -262,10 +299,16 @@ private enum InstalledStickerPacksEntry: ItemListNodeEntry { return ItemListDisclosureItem(theme: theme, title: text, label: count == 0 ? "" : "\(count)", sectionId: self.section, style: .blocks, action: { arguments.openArchived(archived) }) + case let .animatedStickers(theme, text, value): + return ItemListSwitchItem(theme: theme, title: text, value: value, sectionId: self.section, style: .blocks, updated: { value in + arguments.toggleAnimatedStickers(value) + }) + case let .animatedStickersInfo(theme, text): + return ItemListTextItem(theme: theme, text: .plain(text), sectionId: self.section) case let .packsTitle(theme, text): return ItemListSectionHeaderItem(theme: theme, text: text, sectionId: self.section) - case let .pack(_, theme, strings, info, topItem, count, enabled, editing): - return ItemListStickerPackItem(theme: theme, strings: strings, account: arguments.account, packInfo: info, itemCount: count, topItem: topItem, unread: false, control: .none, editing: editing, enabled: enabled, sectionId: self.section, action: { + case let .pack(_, theme, strings, info, topItem, count, animatedStickers, enabled, editing): + return ItemListStickerPackItem(theme: theme, strings: strings, account: arguments.account, packInfo: info, itemCount: count, topItem: topItem, unread: false, control: .none, editing: editing, enabled: enabled, playAnimatedStickers: animatedStickers, sectionId: self.section, action: { arguments.openStickerPack(info) }, setPackIdWithRevealedOptions: { current, previous in arguments.setPackIdWithRevealedOptions(current, previous) @@ -353,6 +396,10 @@ private func installedStickerPacksControllerEntries(presentationData: Presentati entries.append(.archived(presentationData.theme, presentationData.strings.StickerPacksSettings_ArchivedPacks, Int32(archived.count), archived)) } entries.append(.masks(presentationData.theme, presentationData.strings.MaskStickerSettings_Title)) + + entries.append(.animatedStickers(presentationData.theme, presentationData.strings.StickerPacksSettings_AnimatedStickers, stickerSettings.loopAnimatedStickers)) + entries.append(.animatedStickersInfo(presentationData.theme, presentationData.strings.StickerPacksSettings_AnimatedStickersInfo)) + entries.append(.packsTitle(presentationData.theme, presentationData.strings.StickerPacksSettings_StickerPacksSection)) case .masks: if let archived = archived, !archived.isEmpty { @@ -365,7 +412,7 @@ private func installedStickerPacksControllerEntries(presentationData: Presentati var index: Int32 = 0 for entry in packsEntries { if let info = entry.info as? StickerPackCollectionInfo { - entries.append(.pack(index, presentationData.theme, presentationData.strings, info, entry.firstItem as? StickerPackItem, presentationData.strings.StickerPack_StickerCount(info.count == 0 ? entry.count : info.count), true, ItemListStickerPackItemEditing(editable: true, editing: state.editing, revealed: state.packIdWithRevealedOptions == entry.id, reorderable: true))) + entries.append(.pack(index, presentationData.theme, presentationData.strings, info, entry.firstItem as? StickerPackItem, presentationData.strings.StickerPack_StickerCount(info.count == 0 ? entry.count : info.count), stickerSettings.loopAnimatedStickers, true, ItemListStickerPackItemEditing(editable: true, editing: state.editing, revealed: state.packIdWithRevealedOptions == entry.id, reorderable: true))) index += 1 } } @@ -505,18 +552,10 @@ public func installedStickerPacksController(context: AccountContext, mode: Insta ActionSheetItemGroup(items: [ActionSheetButtonItem(title: presentationData.strings.Common_Cancel, action: { dismissAction() })]) ]) presentControllerImpl?(controller, ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) - /* - let suggestString: String - switch stickerSettings.emojiStickerSuggestionMode { - case .none: - suggestString = presentationData.strings.Stickers_SuggestNone - case .all: - - case .installed: - suggestString = presentationData.strings.Stickers_SuggestAdded - } - */ - + }, toggleAnimatedStickers: { value in + let _ = updateStickerSettingsInteractively(accountManager: context.sharedContext.accountManager, { current in + return current.withUpdatedLoopAnimatedStickers(value) + }).start() }) let stickerPacks = Promise() stickerPacks.set(context.account.postbox.combinedView(keys: [.itemCollectionInfos(namespaces: [namespaceForMode(mode)])])) @@ -531,10 +570,8 @@ public func installedStickerPacksController(context: AccountContext, mode: Insta featured.set(.single([])) archivedPromise.set(.single(nil) |> then(archivedStickerPacks(account: context.account, namespace: .masks) |> map(Optional.init))) } - var previousPackCount: Int? - let signal = combineLatest(queue: .mainQueue(), context.sharedContext.presentationData, statePromise.get(), stickerPacks.get(), combineLatest(queue: .mainQueue(), featured.get(), archivedPromise.get()), context.sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.stickerSettings])) |> deliverOnMainQueue |> map { presentationData, state, view, featuredAndArchived, sharedData -> (ItemListControllerState, (ItemListNodeState, InstalledStickerPacksEntry.ItemGenerationArguments)) in @@ -549,12 +586,6 @@ public func installedStickerPacksController(context: AccountContext, mode: Insta } let leftNavigationButton: ItemListNavigationButton? = nil - /*if case .modal = mode { - leftNavigationButton = ItemListNavigationButton(content: .text(presentationData.strings.Common_Cancel), style: .regular, enabled: true, action: { - dismissImpl?() - }) - }*/ - var rightNavigationButton: ItemListNavigationButton? if let packCount = packCount, packCount != 0 { if case .modal = mode { @@ -603,7 +634,7 @@ public func installedStickerPacksController(context: AccountContext, mode: Insta controller.reorderEntry = { fromIndex, toIndex, entries in let fromEntry = entries[fromIndex] - guard case let .pack(_, _, _, fromPackInfo, _, _, _, _) = fromEntry else { + guard case let .pack(_, _, _, fromPackInfo, _, _, _, _, _) = fromEntry else { return } var referenceId: ItemCollectionId? @@ -611,7 +642,7 @@ public func installedStickerPacksController(context: AccountContext, mode: Insta var afterAll = false if toIndex < entries.count { switch entries[toIndex] { - case let .pack(_, _, _, toPackInfo, _, _, _, _): + case let .pack(_, _, _, toPackInfo, _, _, _, _, _): referenceId = toPackInfo.id default: if entries[toIndex] < fromEntry { diff --git a/submodules/TelegramUI/TelegramUI/ItemListStickerPackItem.swift b/submodules/TelegramUI/TelegramUI/ItemListStickerPackItem.swift index 5f24644910..a7ed3223d8 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListStickerPackItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListStickerPackItem.swift @@ -47,13 +47,14 @@ final class ItemListStickerPackItem: ListViewItem, ItemListItem { let control: ItemListStickerPackItemControl let editing: ItemListStickerPackItemEditing let enabled: Bool + let playAnimatedStickers: Bool let sectionId: ItemListSectionId let action: (() -> Void)? let setPackIdWithRevealedOptions: (ItemCollectionId?, ItemCollectionId?) -> Void let addPack: () -> Void let removePack: () -> Void - init(theme: PresentationTheme, strings: PresentationStrings, account: Account, packInfo: StickerPackCollectionInfo, itemCount: String, topItem: StickerPackItem?, unread: Bool, control: ItemListStickerPackItemControl, editing: ItemListStickerPackItemEditing, enabled: Bool, sectionId: ItemListSectionId, action: (() -> Void)?, setPackIdWithRevealedOptions: @escaping (ItemCollectionId?, ItemCollectionId?) -> Void, addPack: @escaping () -> Void, removePack: @escaping () -> Void) { + init(theme: PresentationTheme, strings: PresentationStrings, account: Account, packInfo: StickerPackCollectionInfo, itemCount: String, topItem: StickerPackItem?, unread: Bool, control: ItemListStickerPackItemControl, editing: ItemListStickerPackItemEditing, enabled: Bool, playAnimatedStickers: Bool, sectionId: ItemListSectionId, action: (() -> Void)?, setPackIdWithRevealedOptions: @escaping (ItemCollectionId?, ItemCollectionId?) -> Void, addPack: @escaping () -> Void, removePack: @escaping () -> Void) { self.theme = theme self.strings = strings self.account = account @@ -64,6 +65,7 @@ final class ItemListStickerPackItem: ListViewItem, ItemListItem { self.control = control self.editing = editing self.enabled = enabled + self.playAnimatedStickers = playAnimatedStickers self.sectionId = sectionId self.action = action self.setPackIdWithRevealedOptions = setPackIdWithRevealedOptions @@ -162,7 +164,7 @@ class ItemListStickerPackItemNode: ItemListRevealOptionsItemNode { let isVisible = self.visibility != .none if wasVisible != isVisible { - self.animationNode?.visibility = isVisible + self.animationNode?.visibility = isVisible && (self.layoutParams?.0.playAnimatedStickers ?? true) } } } @@ -558,8 +560,8 @@ class ItemListStickerPackItemNode: ItemListRevealOptionsItemNode { strongSelf.animationNode = animationNode strongSelf.addSubnode(animationNode) animationNode.setup(account: item.account, resource: resource, width: 80, height: 80, mode: .cached) - animationNode.visibility = strongSelf.visibility != .none } + animationNode.visibility = strongSelf.visibility != .none && item.playAnimatedStickers if let animationNode = strongSelf.animationNode { transition.updateFrame(node: animationNode, frame: imageFrame) } diff --git a/submodules/TelegramUI/TelegramUI/OverlayPlayerControllerNode.swift b/submodules/TelegramUI/TelegramUI/OverlayPlayerControllerNode.swift index 8417e760dd..790162a1fc 100644 --- a/submodules/TelegramUI/TelegramUI/OverlayPlayerControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/OverlayPlayerControllerNode.swift @@ -101,7 +101,7 @@ final class OverlayPlayerControllerNode: ViewControllerTracingNode, UIGestureRec }, seekToTimecode: { _, _, _ in }, requestMessageUpdate: { _ in }, cancelInteractiveKeyboardGestures: { - }, automaticMediaDownloadSettings: MediaAutoDownloadSettings.defaultSettings, pollActionState: ChatInterfacePollActionState()) + }, automaticMediaDownloadSettings: MediaAutoDownloadSettings.defaultSettings, pollActionState: ChatInterfacePollActionState(), stickerSettings: ChatInterfaceStickerSettings(loopAnimatedStickers: false)) self.dimNode = ASDisplayNode() self.dimNode.backgroundColor = UIColor(white: 0.0, alpha: 0.5) diff --git a/submodules/TelegramUI/TelegramUI/PeerMediaCollectionController.swift b/submodules/TelegramUI/TelegramUI/PeerMediaCollectionController.swift index dee56a9619..43997090c3 100644 --- a/submodules/TelegramUI/TelegramUI/PeerMediaCollectionController.swift +++ b/submodules/TelegramUI/TelegramUI/PeerMediaCollectionController.swift @@ -272,7 +272,7 @@ public class PeerMediaCollectionController: TelegramController { }, requestMessageUpdate: { _ in }, cancelInteractiveKeyboardGestures: { }, automaticMediaDownloadSettings: MediaAutoDownloadSettings.defaultSettings, - pollActionState: ChatInterfacePollActionState()) + pollActionState: ChatInterfacePollActionState(), stickerSettings: ChatInterfaceStickerSettings(loopAnimatedStickers: false)) self.controllerInteraction = controllerInteraction diff --git a/submodules/TelegramUI/TelegramUI/StickerPackPreviewController.swift b/submodules/TelegramUI/TelegramUI/StickerPackPreviewController.swift index 113d37d7db..76dd7c71b9 100644 --- a/submodules/TelegramUI/TelegramUI/StickerPackPreviewController.swift +++ b/submodules/TelegramUI/TelegramUI/StickerPackPreviewController.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit +import TelegramUIPreferences enum StickerPackPreviewControllerMode { case `default` @@ -140,8 +141,13 @@ final class StickerPackPreviewController: ViewController { } let account = self.context.account self.displayNodeDidLoad() - self.stickerPackDisposable.set((self.stickerPackContents.get() - |> mapToSignal { next -> Signal in + self.stickerPackDisposable.set((combineLatest(self.stickerPackContents.get(), self.context.sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.stickerSettings]) |> take(1)) + |> mapToSignal { next, sharedData -> Signal<(LoadedStickerPack, StickerSettings), NoError> in + var stickerSettings = StickerSettings.defaultSettings + if let value = sharedData.entries[ApplicationSpecificSharedDataKeys.stickerSettings] as? StickerSettings { + stickerSettings = value + } + switch next { case let .result(_, items, _): var preloadSignals: [Signal] = [] @@ -172,26 +178,26 @@ final class StickerPackPreviewController: ViewController { return !values.contains(false) } |> distinctUntilChanged - |> mapToSignal { loaded -> Signal in + |> mapToSignal { loaded -> Signal<(LoadedStickerPack, StickerSettings), NoError> in if !loaded { - return .single(.fetching) + return .single((.fetching, stickerSettings)) } else { - return .single(next) + return .single((next, stickerSettings)) } } default: - return .single(next) + return .single((next, stickerSettings)) } } |> deliverOnMainQueue).start(next: { [weak self] next in if let strongSelf = self { - if case .none = next { + if case .none = next.0 { let presentationData = strongSelf.context.sharedContext.currentPresentationData.with { $0 } strongSelf.present(textAlertController(context: strongSelf.context, title: nil, text: presentationData.strings.StickerPack_ErrorNotFound, actions: [TextAlertAction(type: .defaultAction, title: presentationData.strings.Common_OK, action: {})]), in: .window(.root)) strongSelf.dismiss() } else { - strongSelf.controllerNode.updateStickerPack(next) - strongSelf.stickerPackContentsValue = next + strongSelf.controllerNode.updateStickerPack(next.0, stickerSettings: next.1) + strongSelf.stickerPackContentsValue = next.0 } } })) diff --git a/submodules/TelegramUI/TelegramUI/StickerPackPreviewControllerNode.swift b/submodules/TelegramUI/TelegramUI/StickerPackPreviewControllerNode.swift index 870c783b78..03c62c1ed6 100644 --- a/submodules/TelegramUI/TelegramUI/StickerPackPreviewControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/StickerPackPreviewControllerNode.swift @@ -6,6 +6,7 @@ import SwiftSignalKit import Postbox import TelegramCore import TelegramPresentationData +import TelegramUIPreferences private struct StickerPackPreviewGridEntry: Comparable, Identifiable { let index: Int @@ -75,6 +76,7 @@ final class StickerPackPreviewControllerNode: ViewControllerTracingNode, UIScrol private var stickerPack: LoadedStickerPack? private var stickerPackUpdated = false private var stickerPackInitiallyInstalled : Bool? + private var stickerSettings: StickerSettings? private var currentItems: [StickerPackPreviewGridEntry] = [] @@ -131,13 +133,7 @@ final class StickerPackPreviewControllerNode: ViewControllerTracingNode, UIScrol super.init() - self.interaction = StickerPackPreviewInteraction(sendSticker: { [weak self] item in - if let strongSelf = self, let sendSticker = strongSelf.sendSticker { - /*if sendSticker(item.file) { - strongSelf.cancel?() - }*/ - } - }) + self.interaction = StickerPackPreviewInteraction(playAnimatedStickers: false) self.backgroundColor = nil self.isOpaque = false @@ -510,16 +506,16 @@ final class StickerPackPreviewControllerNode: ViewControllerTracingNode, UIScrol } else { dismissOnAction = true } - if let stickerPack = self.stickerPack { + if let stickerPack = self.stickerPack, let stickerSettings = self.stickerSettings { switch stickerPack { case let .result(info, items, installed): if installed { let _ = removeStickerPackInteractively(postbox: self.context.account.postbox, id: info.id, option: .delete).start() - updateStickerPack(.result(info: info, items: items, installed: false)) + self.updateStickerPack(.result(info: info, items: items, installed: false), stickerSettings: stickerSettings) } else { let _ = addStickerPackInteractively(postbox: self.context.account.postbox, info: info, items: items).start() if !dismissOnAction { - updateStickerPack(.result(info: info, items: items, installed: true)) + self.updateStickerPack(.result(info: info, items: items, installed: true), stickerSettings: stickerSettings) } } if dismissOnAction { @@ -566,9 +562,13 @@ final class StickerPackPreviewControllerNode: ViewControllerTracingNode, UIScrol }) } - func updateStickerPack(_ stickerPack: LoadedStickerPack) { + func updateStickerPack(_ stickerPack: LoadedStickerPack, stickerSettings: StickerSettings) { self.stickerPack = stickerPack + self.stickerSettings = stickerSettings self.stickerPackUpdated = true + + self.interaction.playAnimatedStickers = stickerSettings.loopAnimatedStickers + if let _ = self.containerLayout { self.dequeueUpdateStickerPack() } diff --git a/submodules/TelegramUI/TelegramUI/StickerPackPreviewGridItem.swift b/submodules/TelegramUI/TelegramUI/StickerPackPreviewGridItem.swift index 412ed8e834..06b0bdc2b1 100644 --- a/submodules/TelegramUI/TelegramUI/StickerPackPreviewGridItem.swift +++ b/submodules/TelegramUI/TelegramUI/StickerPackPreviewGridItem.swift @@ -8,11 +8,10 @@ import Postbox final class StickerPackPreviewInteraction { var previewedItem: StickerPreviewPeekItem? + var playAnimatedStickers: Bool - let sendSticker: (StickerPackItem) -> Void - - init(sendSticker: @escaping (StickerPackItem) -> Void) { - self.sendSticker = sendSticker + init(playAnimatedStickers: Bool) { + self.playAnimatedStickers = playAnimatedStickers } } @@ -53,12 +52,10 @@ final class StickerPackPreviewGridItemNode: GridItemNode { override var isVisibleInGrid: Bool { didSet { - self.animationNode?.visibility = self.isVisibleInGrid + self.animationNode?.visibility = self.isVisibleInGrid && self.interaction?.playAnimatedStickers ?? true } } - private let textNode: ASTextNode - private var currentIsPreviewing = false private let stickerFetchedDisposable = MetaDisposable() @@ -74,16 +71,10 @@ final class StickerPackPreviewGridItemNode: GridItemNode { override init() { self.imageNode = TransformImageNode() self.imageNode.isLayerBacked = !smartInvertColorsEnabled() - //self.imageNode.alphaTransitionOnFirstUpdate = true - - self.textNode = ASTextNode() - self.textNode.isUserInteractionEnabled = false - self.textNode.displaysAsynchronously = true super.init() self.addSubnode(self.imageNode) - //self.addSubnode(self.textNode) } deinit { @@ -100,14 +91,6 @@ final class StickerPackPreviewGridItemNode: GridItemNode { self.interaction = interaction if self.currentState == nil || self.currentState!.0 !== account || self.currentState!.1 != stickerItem { - var text = "" - for attribute in stickerItem.file.attributes { - if case let .Sticker(displayText, _, _) = attribute { - text = displayText - break - } - } - self.textNode.attributedText = NSAttributedString(string: text, font: textFont, textColor: .black, paragraphAlignment: .right) if let dimensions = stickerItem.file.dimensions { if stickerItem.file.isAnimatedSticker { self.imageNode.setSignal(chatMessageAnimatedSticker(postbox: account.postbox, file: stickerItem.file, small: false, size: CGSize(width: 160.0, height: 160.0))) @@ -121,7 +104,7 @@ final class StickerPackPreviewGridItemNode: GridItemNode { } } self.animationNode?.setup(account: account, resource: stickerItem.file.resource, width: 160, height: 160, mode: .cached) - self.animationNode?.visibility = self.isVisibleInGrid + self.animationNode?.visibility = self.isVisibleInGrid && self.interaction?.playAnimatedStickers ?? true self.stickerFetchedDisposable.set(freeMediaFileResourceInteractiveFetched(account: account, fileReference: stickerPackFileReference(stickerItem.file), resource: stickerItem.file.resource).start()) } else { if let animationNode = self.animationNode { @@ -157,9 +140,6 @@ final class StickerPackPreviewGridItemNode: GridItemNode { animationNode.frame = CGRect(origin: CGPoint(x: floor((bounds.size.width - imageSize.width) / 2.0), y: (bounds.size.height - imageSize.height) / 2.0), size: imageSize) animationNode.updateLayout(size: imageSize) } - let boundingFrame = CGRect(origin: CGPoint(x: floor((bounds.size.width - boundingSize.width) / 2.0), y: (bounds.size.height - boundingSize.height) / 2.0), size: boundingSize) - let textSize = CGSize(width: 32.0, height: 24.0) - self.textNode.frame = CGRect(origin: CGPoint(x: boundingFrame.maxX - 1.0 - textSize.width, y: boundingFrame.height + 10.0 - textSize.height), size: textSize) } } @@ -169,7 +149,7 @@ final class StickerPackPreviewGridItemNode: GridItemNode { @objc func imageNodeTap(_ recognizer: UITapGestureRecognizer) { if let interaction = self.interaction, let (_, item, _) = self.currentState, case .ended = recognizer.state { - interaction.sendSticker(item) + //interaction.sendSticker(item) } } diff --git a/submodules/TelegramUIPreferences/Sources/MediaAutoDownloadSettings.swift b/submodules/TelegramUIPreferences/Sources/MediaAutoDownloadSettings.swift index dd1e6abf7a..4240e5768f 100644 --- a/submodules/TelegramUIPreferences/Sources/MediaAutoDownloadSettings.swift +++ b/submodules/TelegramUIPreferences/Sources/MediaAutoDownloadSettings.swift @@ -151,14 +151,14 @@ public struct MediaAutoDownloadSettings: PreferencesEntry, Equatable { public static var defaultSettings: MediaAutoDownloadSettings { let mb: Int32 = 1024 * 1024 let presets = MediaAutoDownloadPresets(low: MediaAutoDownloadCategories(basePreset: .low, photo: MediaAutoDownloadCategory(contacts: true, otherPrivate: true, groups: true, channels: true, sizeLimit: 1 * mb, predownload: false), - video: MediaAutoDownloadCategory(contacts: false, otherPrivate: false, groups: false, channels: false, sizeLimit: 1 * mb, predownload: false), - file: MediaAutoDownloadCategory(contacts: false, otherPrivate: false, groups: false, channels: false, sizeLimit: 1 * mb, predownload: false)), - medium: MediaAutoDownloadCategories(basePreset: .medium, photo: MediaAutoDownloadCategory(contacts: true, otherPrivate: true, groups: true, channels: true, sizeLimit: 1 * mb, predownload: false), - video: MediaAutoDownloadCategory(contacts: true, otherPrivate: true, groups: true, channels: true, sizeLimit: Int32(2.5 * CGFloat(mb)), predownload: false), - file: MediaAutoDownloadCategory(contacts: true, otherPrivate: true, groups: true, channels: true, sizeLimit: 1 * mb, predownload: false)), - high: MediaAutoDownloadCategories(basePreset: .high, photo: MediaAutoDownloadCategory(contacts: true, otherPrivate: true, groups: true, channels: true, sizeLimit: 1 * mb, predownload: false), - video: MediaAutoDownloadCategory(contacts: true, otherPrivate: true, groups: true, channels: true, sizeLimit: 10 * mb, predownload: true), - file: MediaAutoDownloadCategory(contacts: true, otherPrivate: true, groups: true, channels: true, sizeLimit: 3 * mb, predownload: false))) + video: MediaAutoDownloadCategory(contacts: false, otherPrivate: false, groups: false, channels: false, sizeLimit: 1 * mb, predownload: false), + file: MediaAutoDownloadCategory(contacts: false, otherPrivate: false, groups: false, channels: false, sizeLimit: 1 * mb, predownload: false)), + medium: MediaAutoDownloadCategories(basePreset: .medium, photo: MediaAutoDownloadCategory(contacts: true, otherPrivate: true, groups: true, channels: true, sizeLimit: 1 * mb, predownload: false), + video: MediaAutoDownloadCategory(contacts: true, otherPrivate: true, groups: true, channels: true, sizeLimit: Int32(2.5 * CGFloat(mb)), predownload: false), + file: MediaAutoDownloadCategory(contacts: true, otherPrivate: true, groups: true, channels: true, sizeLimit: 1 * mb, predownload: false)), + high: MediaAutoDownloadCategories(basePreset: .high, photo: MediaAutoDownloadCategory(contacts: true, otherPrivate: true, groups: true, channels: true, sizeLimit: 1 * mb, predownload: false), + video: MediaAutoDownloadCategory(contacts: true, otherPrivate: true, groups: true, channels: true, sizeLimit: 10 * mb, predownload: true), + file: MediaAutoDownloadCategory(contacts: true, otherPrivate: true, groups: true, channels: true, sizeLimit: 3 * mb, predownload: false))) let saveDownloadedPhotos = MediaAutoDownloadCategory(contacts: false, otherPrivate: false, groups: false, channels: false, sizeLimit: 0, predownload: false) return MediaAutoDownloadSettings(presets: presets, cellular: MediaAutoDownloadConnection(enabled: true, preset: .medium, custom: nil), wifi: MediaAutoDownloadConnection(enabled: true, preset: .high, custom: nil), saveDownloadedPhotos: saveDownloadedPhotos, autoplayGifs: true, autoplayVideos: true, downloadInBackground: true) diff --git a/submodules/TelegramUIPreferences/Sources/StickerSettings.swift b/submodules/TelegramUIPreferences/Sources/StickerSettings.swift index 79244f2e03..4eea5be1da 100644 --- a/submodules/TelegramUIPreferences/Sources/StickerSettings.swift +++ b/submodules/TelegramUIPreferences/Sources/StickerSettings.swift @@ -10,21 +10,25 @@ public enum EmojiStickerSuggestionMode: Int32 { public struct StickerSettings: PreferencesEntry, Equatable { public var emojiStickerSuggestionMode: EmojiStickerSuggestionMode + public var loopAnimatedStickers: Bool public static var defaultSettings: StickerSettings { - return StickerSettings(emojiStickerSuggestionMode: .all) + return StickerSettings(emojiStickerSuggestionMode: .all, loopAnimatedStickers: true) } - init(emojiStickerSuggestionMode: EmojiStickerSuggestionMode) { + init(emojiStickerSuggestionMode: EmojiStickerSuggestionMode, loopAnimatedStickers: Bool) { self.emojiStickerSuggestionMode = emojiStickerSuggestionMode + self.loopAnimatedStickers = loopAnimatedStickers } public init(decoder: PostboxDecoder) { self.emojiStickerSuggestionMode = EmojiStickerSuggestionMode(rawValue: decoder.decodeInt32ForKey("emojiStickerSuggestionMode", orElse: 0))! + self.loopAnimatedStickers = decoder.decodeBoolForKey("loopAnimatedStickers", orElse: true) } public func encode(_ encoder: PostboxEncoder) { encoder.encodeInt32(self.emojiStickerSuggestionMode.rawValue, forKey: "emojiStickerSuggestionMode") + encoder.encodeBool(self.loopAnimatedStickers, forKey: "loopAnimatedStickers") } public func isEqual(to: PreferencesEntry) -> Bool { @@ -36,11 +40,15 @@ public struct StickerSettings: PreferencesEntry, Equatable { } public static func ==(lhs: StickerSettings, rhs: StickerSettings) -> Bool { - return lhs.emojiStickerSuggestionMode == rhs.emojiStickerSuggestionMode + return lhs.emojiStickerSuggestionMode == rhs.emojiStickerSuggestionMode && lhs.loopAnimatedStickers == rhs.loopAnimatedStickers } public func withUpdatedEmojiStickerSuggestionMode(_ emojiStickerSuggestionMode: EmojiStickerSuggestionMode) -> StickerSettings { - return StickerSettings(emojiStickerSuggestionMode: emojiStickerSuggestionMode) + return StickerSettings(emojiStickerSuggestionMode: emojiStickerSuggestionMode, loopAnimatedStickers: self.loopAnimatedStickers) + } + + public func withUpdatedLoopAnimatedStickers(_ loopAnimatedStickers: Bool) -> StickerSettings { + return StickerSettings(emojiStickerSuggestionMode: self.emojiStickerSuggestionMode, loopAnimatedStickers: loopAnimatedStickers) } } From 185a3c4dad07b09024de48477a1bb79285d56581 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Mon, 15 Jul 2019 18:21:01 +0200 Subject: [PATCH 15/19] Fixed bot payload handover when opening the bot's start url with the bot's chat already opened --- .../TelegramUI/NavigateToChatController.swift | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/submodules/TelegramUI/TelegramUI/NavigateToChatController.swift b/submodules/TelegramUI/TelegramUI/NavigateToChatController.swift index 42883c4ec2..0fcb9c3d46 100644 --- a/submodules/TelegramUI/TelegramUI/NavigateToChatController.swift +++ b/submodules/TelegramUI/TelegramUI/NavigateToChatController.swift @@ -38,6 +38,11 @@ public func navigateToChatController(navigationController: NavigationController, if activateInput { controller.activateInput() } + if let botStart = botStart { + controller.updateChatPresentationInterfaceState(interactive: false) { state -> ChatPresentationInterfaceState in + return state.updatedBotStartPayload(botStart.payload) + } + } found = true break } @@ -48,6 +53,11 @@ public func navigateToChatController(navigationController: NavigationController, let controller: ChatController if let chatController = chatController { controller = chatController + if let botStart = botStart { + controller.updateChatPresentationInterfaceState(interactive: false) { state -> ChatPresentationInterfaceState in + return state.updatedBotStartPayload(botStart.payload) + } + } } else { controller = ChatController(context: context, chatLocation: chatLocation, messageId: messageId, botStart: botStart) } From fec4f50849e9e3d2a0a72c5437eb12af0c262f7c Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Wed, 17 Jul 2019 00:25:04 +0200 Subject: [PATCH 16/19] Added block quote entity support --- submodules/Display/Display/TextNode.swift | 119 +++++++++++++----- .../AuthorizationSequenceController.swift | 2 +- .../TelegramUI/ChatBotInfoItem.swift | 2 +- .../ChatMessageActionItemNode.swift | 2 +- .../ChatMessageAttachedContentNode.swift | 3 +- .../ChatMessageTextBubbleContentNode.swift | 4 +- .../TelegramUI/ChatPresentationData.swift | 2 + .../TelegramUI/ChatTextInputAttributes.swift | 1 + .../TelegramUI/GalleryController.swift | 2 +- .../TelegramUI/ItemListAddressItem.swift | 2 +- .../ItemListMultilineTextItem.swift | 2 +- .../ItemListTextWithLabelItem.swift | 2 +- .../TelegramUI/TelegramUI/Pasteboard.swift | 2 +- .../StickerPackPreviewControllerNode.swift | 3 +- .../StringWithAppliedEntities.swift | 30 ++++- .../TermsOfServiceControllerNode.swift | 2 +- .../TelegramUI/TelegramUI/TextNode.swift | 1 + .../TelegramUI/UpdateInfoItem.swift | 2 +- 18 files changed, 133 insertions(+), 50 deletions(-) diff --git a/submodules/Display/Display/TextNode.swift b/submodules/Display/Display/TextNode.swift index b70b5400fa..a00c22c472 100644 --- a/submodules/Display/Display/TextNode.swift +++ b/submodules/Display/Display/TextNode.swift @@ -5,6 +5,14 @@ import CoreText private let defaultFont = UIFont.systemFont(ofSize: 15.0) +private final class TextNodeStrikethrough { + let frame: CGRect + + init(frame: CGRect) { + self.frame = frame + } +} + private final class TextNodeLine { let line: CTLine let frame: CGRect @@ -21,7 +29,7 @@ private final class TextNodeLine { } } -private final class TextNodeStrikethrough { +private final class TextNodeBlockQuote { let frame: CGRect init(frame: CGRect) { @@ -83,8 +91,9 @@ public final class TextNodeLayoutArguments { public let lineSpacing: CGFloat public let cutout: TextNodeCutout? public let insets: UIEdgeInsets + public let lineColor: UIColor? - public init(attributedString: NSAttributedString?, backgroundColor: UIColor? = nil, maximumNumberOfLines: Int, truncationType: CTLineTruncationType, constrainedSize: CGSize, alignment: NSTextAlignment = .natural, lineSpacing: CGFloat = 0.12, cutout: TextNodeCutout? = nil, insets: UIEdgeInsets = UIEdgeInsets()) { + public init(attributedString: NSAttributedString?, backgroundColor: UIColor? = nil, maximumNumberOfLines: Int, truncationType: CTLineTruncationType, constrainedSize: CGSize, alignment: NSTextAlignment = .natural, lineSpacing: CGFloat = 0.12, cutout: TextNodeCutout? = nil, insets: UIEdgeInsets = UIEdgeInsets(), lineColor: UIColor? = nil) { self.attributedString = attributedString self.backgroundColor = backgroundColor self.maximumNumberOfLines = maximumNumberOfLines @@ -94,6 +103,7 @@ public final class TextNodeLayoutArguments { self.lineSpacing = lineSpacing self.cutout = cutout self.insets = insets + self.lineColor = lineColor } } @@ -111,9 +121,11 @@ public final class TextNodeLayout: NSObject { public let truncated: Bool fileprivate let firstLineOffset: CGFloat fileprivate let lines: [TextNodeLine] + fileprivate let blockQuotes: [TextNodeBlockQuote] + fileprivate let lineColor: UIColor? public let hasRTL: Bool - fileprivate init(attributedString: NSAttributedString?, maximumNumberOfLines: Int, truncationType: CTLineTruncationType, constrainedSize: CGSize, alignment: NSTextAlignment, lineSpacing: CGFloat, cutout: TextNodeCutout?, insets: UIEdgeInsets, size: CGSize, truncated: Bool, firstLineOffset: CGFloat, lines: [TextNodeLine], backgroundColor: UIColor?) { + fileprivate init(attributedString: NSAttributedString?, maximumNumberOfLines: Int, truncationType: CTLineTruncationType, constrainedSize: CGSize, alignment: NSTextAlignment, lineSpacing: CGFloat, cutout: TextNodeCutout?, insets: UIEdgeInsets, size: CGSize, truncated: Bool, firstLineOffset: CGFloat, lines: [TextNodeLine], blockQuotes: [TextNodeBlockQuote], backgroundColor: UIColor?, lineColor: UIColor?) { self.attributedString = attributedString self.maximumNumberOfLines = maximumNumberOfLines self.truncationType = truncationType @@ -126,7 +138,9 @@ public final class TextNodeLayout: NSObject { self.truncated = truncated self.firstLineOffset = firstLineOffset self.lines = lines + self.blockQuotes = blockQuotes self.backgroundColor = backgroundColor + self.lineColor = lineColor var hasRTL = false for line in lines { if line.isRTL { @@ -561,7 +575,7 @@ public class TextNode: ASDisplayNode { } } - private class func calculateLayout(attributedString: NSAttributedString?, maximumNumberOfLines: Int, truncationType: CTLineTruncationType, backgroundColor: UIColor?, constrainedSize: CGSize, alignment: NSTextAlignment, lineSpacingFactor: CGFloat, cutout: TextNodeCutout?, insets: UIEdgeInsets) -> TextNodeLayout { + private class func calculateLayout(attributedString: NSAttributedString?, maximumNumberOfLines: Int, truncationType: CTLineTruncationType, backgroundColor: UIColor?, constrainedSize: CGSize, alignment: NSTextAlignment, lineSpacingFactor: CGFloat, cutout: TextNodeCutout?, insets: UIEdgeInsets, lineColor: UIColor?) -> TextNodeLayout { if let attributedString = attributedString { let stringLength = attributedString.length @@ -582,11 +596,12 @@ public class TextNode: ASDisplayNode { let fontLineSpacing = floor(fontLineHeight * lineSpacingFactor) var lines: [TextNodeLine] = [] + var blockQuotes: [TextNodeBlockQuote] = [] var maybeTypesetter: CTTypesetter? maybeTypesetter = CTTypesetterCreateWithAttributedString(attributedString as CFAttributedString) if maybeTypesetter == nil { - return TextNodeLayout(attributedString: attributedString, maximumNumberOfLines: maximumNumberOfLines, truncationType: truncationType, constrainedSize: constrainedSize, alignment: alignment, lineSpacing: lineSpacingFactor, cutout: cutout, insets: insets, size: CGSize(), truncated: false, firstLineOffset: 0.0, lines: [], backgroundColor: backgroundColor) + return TextNodeLayout(attributedString: attributedString, maximumNumberOfLines: maximumNumberOfLines, truncationType: truncationType, constrainedSize: constrainedSize, alignment: alignment, lineSpacing: lineSpacingFactor, cutout: cutout, insets: insets, size: CGSize(), truncated: false, firstLineOffset: 0.0, lines: [], blockQuotes: [], backgroundColor: backgroundColor, lineColor: lineColor) } let typesetter = maybeTypesetter! @@ -682,11 +697,28 @@ public class TextNode: ASDisplayNode { truncated = true } + var headIndent: CGFloat = 0.0 + attributedString.enumerateAttributes(in: NSMakeRange(lineRange.location, lineRange.length), options: []) { attributes, range, _ in + if let _ = attributes[NSAttributedStringKey.strikethroughStyle] { + let lowerX = floor(CTLineGetOffsetForStringIndex(coreTextLine, range.location, nil)) + let upperX = ceil(CTLineGetOffsetForStringIndex(coreTextLine, range.location + range.length, nil)) + let x = lowerX < upperX ? lowerX : upperX + strikethroughs.append(TextNodeStrikethrough(frame: CGRect(x: x, y: 0.0, width: abs(upperX - lowerX), height: fontLineHeight))) + } else if let paragraphStyle = attributes[NSAttributedStringKey.paragraphStyle] as? NSParagraphStyle { + headIndent = paragraphStyle.headIndent + + } + } + let lineWidth = min(constrainedSize.width, ceil(CGFloat(CTLineGetTypographicBounds(coreTextLine, nil, nil, nil) - CTLineGetTrailingWhitespaceWidth(coreTextLine)))) - let lineFrame = CGRect(x: lineCutoutOffset, y: lineOriginY, width: lineWidth, height: fontLineHeight) + let lineFrame = CGRect(x: lineCutoutOffset + headIndent, y: lineOriginY, width: lineWidth, height: fontLineHeight) layoutSize.height += fontLineHeight + fontLineSpacing layoutSize.width = max(layoutSize.width, lineWidth + lineAdditionalWidth) + if headIndent > 0.0 { + blockQuotes.append(TextNodeBlockQuote(frame: lineFrame)) + } + var isRTL = false let glyphRuns = CTLineGetGlyphRuns(coreTextLine) as NSArray if glyphRuns.count != 0 { @@ -696,16 +728,7 @@ public class TextNode: ASDisplayNode { } } - attributedString.enumerateAttributes(in: NSMakeRange(lineRange.location, lineRange.length), options: []) { attributes, range, _ in - if let _ = attributes[NSAttributedStringKey.strikethroughStyle] { - let lowerX = floor(CTLineGetOffsetForStringIndex(coreTextLine, range.location, nil)) - let upperX = ceil(CTLineGetOffsetForStringIndex(coreTextLine, range.location + range.length, nil)) - let x = lowerX < upperX ? lowerX : upperX - strikethroughs.append(TextNodeStrikethrough(frame: CGRect(x: x, y: 0.0, width: abs(upperX - lowerX), height: fontLineHeight))) - } - } lines.append(TextNodeLine(line: coreTextLine, frame: lineFrame, range: NSMakeRange(lineRange.location, lineRange.length), isRTL: isRTL, strikethroughs: strikethroughs)) - break } else { if lineCharacterCount > 0 { @@ -719,11 +742,27 @@ public class TextNode: ASDisplayNode { let coreTextLine = CTTypesetterCreateLineWithOffset(typesetter, lineRange, 100.0) lastLineCharacterIndex += lineCharacterCount + var headIndent: CGFloat = 0.0 + attributedString.enumerateAttributes(in: NSMakeRange(lineRange.location, lineRange.length), options: []) { attributes, range, _ in + if let _ = attributes[NSAttributedStringKey.strikethroughStyle] { + let lowerX = floor(CTLineGetOffsetForStringIndex(coreTextLine, range.location, nil)) + let upperX = ceil(CTLineGetOffsetForStringIndex(coreTextLine, range.location + range.length, nil)) + let x = lowerX < upperX ? lowerX : upperX + strikethroughs.append(TextNodeStrikethrough(frame: CGRect(x: x, y: 0.0, width: abs(upperX - lowerX), height: fontLineHeight))) + } else if let paragraphStyle = attributes[NSAttributedStringKey.paragraphStyle] as? NSParagraphStyle { + headIndent = paragraphStyle.headIndent + } + } + let lineWidth = ceil(CGFloat(CTLineGetTypographicBounds(coreTextLine, nil, nil, nil) - CTLineGetTrailingWhitespaceWidth(coreTextLine))) - let lineFrame = CGRect(x: lineCutoutOffset, y: lineOriginY, width: lineWidth, height: fontLineHeight) + let lineFrame = CGRect(x: lineCutoutOffset + headIndent, y: lineOriginY, width: lineWidth, height: fontLineHeight) layoutSize.height += fontLineHeight layoutSize.width = max(layoutSize.width, lineWidth + lineAdditionalWidth) + if headIndent > 0.0 { + blockQuotes.append(TextNodeBlockQuote(frame: lineFrame)) + } + var isRTL = false let glyphRuns = CTLineGetGlyphRuns(coreTextLine) as NSArray if glyphRuns.count != 0 { @@ -733,14 +772,6 @@ public class TextNode: ASDisplayNode { } } - attributedString.enumerateAttributes(in: NSMakeRange(lineRange.location, lineRange.length), options: []) { attributes, range, _ in - if let _ = attributes[NSAttributedStringKey.strikethroughStyle] { - let lowerX = floor(CTLineGetOffsetForStringIndex(coreTextLine, range.location, nil)) - let upperX = ceil(CTLineGetOffsetForStringIndex(coreTextLine, range.location + range.length, nil)) - let x = lowerX < upperX ? lowerX : upperX - strikethroughs.append(TextNodeStrikethrough(frame: CGRect(x: x, y: 0.0, width: abs(upperX - lowerX), height: fontLineHeight))) - } - } lines.append(TextNodeLine(line: coreTextLine, frame: lineFrame, range: NSMakeRange(lineRange.location, lineRange.length), isRTL: isRTL, strikethroughs: strikethroughs)) } else { if !lines.isEmpty { @@ -762,9 +793,9 @@ public class TextNode: ASDisplayNode { } } - return TextNodeLayout(attributedString: attributedString, maximumNumberOfLines: maximumNumberOfLines, truncationType: truncationType, constrainedSize: constrainedSize, alignment: alignment, lineSpacing: lineSpacingFactor, cutout: cutout, insets: insets, size: CGSize(width: ceil(layoutSize.width) + insets.left + insets.right, height: ceil(layoutSize.height) + insets.top + insets.bottom), truncated: truncated, firstLineOffset: firstLineOffset, lines: lines, backgroundColor: backgroundColor) + return TextNodeLayout(attributedString: attributedString, maximumNumberOfLines: maximumNumberOfLines, truncationType: truncationType, constrainedSize: constrainedSize, alignment: alignment, lineSpacing: lineSpacingFactor, cutout: cutout, insets: insets, size: CGSize(width: ceil(layoutSize.width) + insets.left + insets.right, height: ceil(layoutSize.height) + insets.top + insets.bottom), truncated: truncated, firstLineOffset: firstLineOffset, lines: lines, blockQuotes: blockQuotes, backgroundColor: backgroundColor, lineColor: lineColor) } else { - return TextNodeLayout(attributedString: attributedString, maximumNumberOfLines: maximumNumberOfLines, truncationType: truncationType, constrainedSize: constrainedSize, alignment: alignment, lineSpacing: lineSpacingFactor, cutout: cutout, insets: insets, size: CGSize(), truncated: false, firstLineOffset: 0.0, lines: [], backgroundColor: backgroundColor) + return TextNodeLayout(attributedString: attributedString, maximumNumberOfLines: maximumNumberOfLines, truncationType: truncationType, constrainedSize: constrainedSize, alignment: alignment, lineSpacing: lineSpacingFactor, cutout: cutout, insets: insets, size: CGSize(), truncated: false, firstLineOffset: 0.0, lines: [], blockQuotes: [], backgroundColor: backgroundColor, lineColor: lineColor) } } @@ -799,11 +830,8 @@ public class TextNode: ASDisplayNode { let textMatrix = context.textMatrix let textPosition = context.textPosition - //CGContextSaveGState(context) - context.textMatrix = CGAffineTransform(scaleX: 1.0, y: -1.0) - //let clipRect = CGContextGetClipBoundingBox(context) let alignment = layout.alignment let offset = CGPoint(x: layout.insets.left, y: layout.insets.top) @@ -832,7 +860,34 @@ public class TextNode: ASDisplayNode { } } - //CGContextRestoreGState(context) + var blockQuoteFrames: [CGRect] = [] + var currentBlockQuoteFrame: CGRect? + for blockQuote in layout.blockQuotes { + if let frame = currentBlockQuoteFrame { + if blockQuote.frame.minY - frame.maxY < 20.0 { + currentBlockQuoteFrame = frame.union(blockQuote.frame) + } else { + blockQuoteFrames.append(frame) + currentBlockQuoteFrame = frame + } + } else { + currentBlockQuoteFrame = blockQuote.frame + } + } + + if let frame = currentBlockQuoteFrame { + blockQuoteFrames.append(frame) + } + + for frame in blockQuoteFrames { + if let lineColor = layout.lineColor { + context.setFillColor(lineColor.cgColor) + } + let rect = UIBezierPath(roundedRect: CGRect(x: frame.minX - 9.0, y: frame.minY - 14.0, width: 2.0, height: frame.height), cornerRadius: 1.0) + context.addPath(rect.cgPath) + context.fillPath() + } + context.textMatrix = textMatrix context.textPosition = CGPoint(x: textPosition.x, y: textPosition.y) } @@ -872,11 +927,11 @@ public class TextNode: ASDisplayNode { if stringMatch { layout = existingLayout } else { - layout = TextNode.calculateLayout(attributedString: arguments.attributedString, maximumNumberOfLines: arguments.maximumNumberOfLines, truncationType: arguments.truncationType, backgroundColor: arguments.backgroundColor, constrainedSize: arguments.constrainedSize, alignment: arguments.alignment, lineSpacingFactor: arguments.lineSpacing, cutout: arguments.cutout, insets: arguments.insets) + layout = TextNode.calculateLayout(attributedString: arguments.attributedString, maximumNumberOfLines: arguments.maximumNumberOfLines, truncationType: arguments.truncationType, backgroundColor: arguments.backgroundColor, constrainedSize: arguments.constrainedSize, alignment: arguments.alignment, lineSpacingFactor: arguments.lineSpacing, cutout: arguments.cutout, insets: arguments.insets, lineColor: arguments.lineColor) updated = true } } else { - layout = TextNode.calculateLayout(attributedString: arguments.attributedString, maximumNumberOfLines: arguments.maximumNumberOfLines, truncationType: arguments.truncationType, backgroundColor: arguments.backgroundColor, constrainedSize: arguments.constrainedSize, alignment: arguments.alignment, lineSpacingFactor: arguments.lineSpacing, cutout: arguments.cutout, insets: arguments.insets) + layout = TextNode.calculateLayout(attributedString: arguments.attributedString, maximumNumberOfLines: arguments.maximumNumberOfLines, truncationType: arguments.truncationType, backgroundColor: arguments.backgroundColor, constrainedSize: arguments.constrainedSize, alignment: arguments.alignment, lineSpacingFactor: arguments.lineSpacing, cutout: arguments.cutout, insets: arguments.insets, lineColor: arguments.lineColor) updated = true } diff --git a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceController.swift b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceController.swift index 6856cc558c..d6e9fcf4b8 100644 --- a/submodules/TelegramUI/TelegramUI/AuthorizationSequenceController.swift +++ b/submodules/TelegramUI/TelegramUI/AuthorizationSequenceController.swift @@ -277,7 +277,7 @@ public final class AuthorizationSequenceController: NavigationController, MFMail } var dismissImpl: (() -> Void)? let alertTheme = AlertControllerTheme(presentationTheme: strongSelf.theme) - let attributedText = stringWithAppliedEntities(termsOfService.text, entities: termsOfService.entities, baseColor: alertTheme.primaryColor, linkColor: alertTheme.accentColor, baseFont: Font.regular(13.0), linkFont: Font.regular(13.0), boldFont: Font.semibold(13.0), italicFont: Font.italic(13.0), boldItalicFont: Font.semiboldItalic(13.0), fixedFont: Font.regular(13.0)) + let attributedText = stringWithAppliedEntities(termsOfService.text, entities: termsOfService.entities, baseColor: alertTheme.primaryColor, linkColor: alertTheme.accentColor, baseFont: Font.regular(13.0), linkFont: Font.regular(13.0), boldFont: Font.semibold(13.0), italicFont: Font.italic(13.0), boldItalicFont: Font.semiboldItalic(13.0), fixedFont: Font.regular(13.0), blockQuoteFont: Font.regular(13.0)) let contentNode = TextAlertContentNode(theme: alertTheme, title: NSAttributedString(string: strongSelf.strings.Login_TermsOfServiceHeader, font: Font.medium(17.0), textColor: alertTheme.primaryColor, paragraphAlignment: .center), text: attributedText, actions: [ TextAlertAction(type: .defaultAction, title: strongSelf.strings.Login_TermsOfServiceAgree, action: { dismissImpl?() diff --git a/submodules/TelegramUI/TelegramUI/ChatBotInfoItem.swift b/submodules/TelegramUI/TelegramUI/ChatBotInfoItem.swift index 2c42f66e9b..993f51b18a 100644 --- a/submodules/TelegramUI/TelegramUI/ChatBotInfoItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatBotInfoItem.swift @@ -152,7 +152,7 @@ final class ChatBotInfoItemNode: ListViewItemNode { updatedTextAndEntities = (item.text, generateTextEntities(item.text, enabledTypes: .all)) } - let attributedText = stringWithAppliedEntities(updatedTextAndEntities.0, entities: updatedTextAndEntities.1, baseColor: item.presentationData.theme.theme.chat.message.infoPrimaryTextColor, linkColor: item.presentationData.theme.theme.chat.message.infoLinkTextColor, baseFont: messageFont, linkFont: messageFont, boldFont: messageBoldFont, italicFont: messageItalicFont, boldItalicFont: messageBoldItalicFont, fixedFont: messageFixedFont) + let attributedText = stringWithAppliedEntities(updatedTextAndEntities.0, entities: updatedTextAndEntities.1, baseColor: item.presentationData.theme.theme.chat.message.infoPrimaryTextColor, linkColor: item.presentationData.theme.theme.chat.message.infoLinkTextColor, baseFont: messageFont, linkFont: messageFont, boldFont: messageBoldFont, italicFont: messageItalicFont, boldItalicFont: messageBoldItalicFont, fixedFont: messageFixedFont, blockQuoteFont: messageFont) let horizontalEdgeInset: CGFloat = 10.0 + params.leftInset let horizontalContentInset: CGFloat = 12.0 diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageActionItemNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageActionItemNode.swift index 3b7617e208..e07c4c5351 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageActionItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageActionItemNode.swift @@ -385,7 +385,7 @@ private func universalServiceMessageString(theme: ChatPresentationThemeData?, st } attributedString = NSAttributedString(string: titleString, font: titleFont, textColor: primaryTextColor) case let .customText(text, entities): - attributedString = stringWithAppliedEntities(text, entities: entities, baseColor: primaryTextColor, linkColor: primaryTextColor, baseFont: titleFont, linkFont: titleBoldFont, boldFont: titleBoldFont, italicFont: titleFont, boldItalicFont: titleBoldFont, fixedFont: titleFont, underlineLinks: false) + attributedString = stringWithAppliedEntities(text, entities: entities, baseColor: primaryTextColor, linkColor: primaryTextColor, baseFont: titleFont, linkFont: titleBoldFont, boldFont: titleBoldFont, italicFont: titleFont, boldItalicFont: titleBoldFont, fixedFont: titleFont, blockQuoteFont: titleFont, underlineLinks: false) case let .botDomainAccessGranted(domain): attributedString = NSAttributedString(string: strings.AuthSessions_Message(domain).0, font: titleFont, textColor: primaryTextColor) case let .botSentSecureValues(types): diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageAttachedContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageAttachedContentNode.swift index f70cc6e086..b68200b160 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageAttachedContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageAttachedContentNode.swift @@ -15,6 +15,7 @@ private let textBoldFont = Font.semibold(15.0) private let textItalicFont = Font.italic(15.0) private let textBoldItalicFont = Font.semiboldItalic(15.0) private let textFixedFont = Font.regular(15.0) +private let textBlockQuoteFont = Font.regular(15.0) private let buttonFont = Font.semibold(13.0) enum ChatMessageAttachedContentActionIcon { @@ -371,7 +372,7 @@ final class ChatMessageAttachedContentNode: ASDisplayNode { string.append(NSAttributedString(string: "\n", font: textFont, textColor: messageTheme.primaryTextColor)) } if let entities = entities { - string.append(stringWithAppliedEntities(text, entities: entities, baseColor: messageTheme.primaryTextColor, linkColor: messageTheme.linkTextColor, baseFont: textFont, linkFont: textFont, boldFont: textBoldFont, italicFont: textItalicFont, boldItalicFont: textBoldItalicFont, fixedFont: textFixedFont)) + string.append(stringWithAppliedEntities(text, entities: entities, baseColor: messageTheme.primaryTextColor, linkColor: messageTheme.linkTextColor, baseFont: textFont, linkFont: textFont, boldFont: textBoldFont, italicFont: textItalicFont, boldItalicFont: textBoldItalicFont, fixedFont: textFixedFont, blockQuoteFont: textBlockQuoteFont)) } else { string.append(NSAttributedString(string: text + "\n", font: textFont, textColor: messageTheme.primaryTextColor)) } diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageTextBubbleContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageTextBubbleContentNode.swift index 6e98e91484..e33571fb75 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageTextBubbleContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageTextBubbleContentNode.swift @@ -230,7 +230,7 @@ class ChatMessageTextBubbleContentNode: ChatMessageBubbleContentNode { let forceStatusNewline = false if let entities = entities { - attributedText = stringWithAppliedEntities(rawText, entities: entities, baseColor: messageTheme.primaryTextColor, linkColor: messageTheme.linkTextColor, baseFont: textFont, linkFont: textFont, boldFont: item.presentationData.messageBoldFont, italicFont: item.presentationData.messageItalicFont, boldItalicFont: item.presentationData.messageBoldItalicFont, fixedFont: item.presentationData.messageFixedFont) + attributedText = stringWithAppliedEntities(rawText, entities: entities, baseColor: messageTheme.primaryTextColor, linkColor: messageTheme.linkTextColor, baseFont: textFont, linkFont: textFont, boldFont: item.presentationData.messageBoldFont, italicFont: item.presentationData.messageItalicFont, boldItalicFont: item.presentationData.messageBoldItalicFont, fixedFont: item.presentationData.messageFixedFont, blockQuoteFont: item.presentationData.messageBlockQuoteFont) } else { attributedText = NSAttributedString(string: rawText, font: textFont, textColor: messageTheme.primaryTextColor) } @@ -242,7 +242,7 @@ class ChatMessageTextBubbleContentNode: ChatMessageBubbleContentNode { let textInsets = UIEdgeInsets(top: 2.0, left: 0.0, bottom: 5.0, right: 0.0) - let (textLayout, textApply) = textLayout(TextNodeLayoutArguments(attributedString: attributedText, backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: textConstrainedSize, alignment: .natural, cutout: cutout, insets: textInsets)) + let (textLayout, textApply) = textLayout(TextNodeLayoutArguments(attributedString: attributedText, backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: textConstrainedSize, alignment: .natural, cutout: cutout, insets: textInsets, lineColor: messageTheme.accentControlColor)) var textFrame = CGRect(origin: CGPoint(x: -textInsets.left, y: -textInsets.top), size: textLayout.size) var textFrameWithoutInsets = CGRect(origin: CGPoint(x: textFrame.origin.x + textInsets.left, y: textFrame.origin.y + textInsets.top), size: CGSize(width: textFrame.width - textInsets.left - textInsets.right, height: textFrame.height - textInsets.top - textInsets.bottom)) diff --git a/submodules/TelegramUI/TelegramUI/ChatPresentationData.swift b/submodules/TelegramUI/TelegramUI/ChatPresentationData.swift index 9971681d4e..22b3e1a386 100644 --- a/submodules/TelegramUI/TelegramUI/ChatPresentationData.swift +++ b/submodules/TelegramUI/TelegramUI/ChatPresentationData.swift @@ -84,6 +84,7 @@ public final class ChatPresentationData { let messageItalicFont: UIFont let messageBoldItalicFont: UIFont let messageFixedFont: UIFont + let messageBlockQuoteFont: UIFont init(theme: ChatPresentationThemeData, fontSize: PresentationFontSize, strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat, nameDisplayOrder: PresentationPersonNameOrder, disableAnimations: Bool, largeEmoji: Bool) { self.theme = theme @@ -103,5 +104,6 @@ public final class ChatPresentationData { self.messageItalicFont = UIFont.italicSystemFont(ofSize: baseFontSize) self.messageBoldItalicFont = Font.semiboldItalic(baseFontSize) self.messageFixedFont = UIFont(name: "Menlo-Regular", size: baseFontSize - 1.0) ?? UIFont.systemFont(ofSize: baseFontSize) + self.messageBlockQuoteFont = UIFont.systemFont(ofSize: baseFontSize - 1.0) } } diff --git a/submodules/TelegramUI/TelegramUI/ChatTextInputAttributes.swift b/submodules/TelegramUI/TelegramUI/ChatTextInputAttributes.swift index 032306111a..939a7918d6 100644 --- a/submodules/TelegramUI/TelegramUI/ChatTextInputAttributes.swift +++ b/submodules/TelegramUI/TelegramUI/ChatTextInputAttributes.swift @@ -39,6 +39,7 @@ struct ChatTextFontAttributes: OptionSet { static let bold = ChatTextFontAttributes(rawValue: 1 << 0) static let italic = ChatTextFontAttributes(rawValue: 1 << 1) static let monospace = ChatTextFontAttributes(rawValue: 1 << 2) + static let blockQuote = ChatTextFontAttributes(rawValue: 1 << 3) } func textAttributedStringForStateText(_ stateText: NSAttributedString, fontSize: CGFloat, textColor: UIColor, accentTextColor: UIColor) -> NSAttributedString { diff --git a/submodules/TelegramUI/TelegramUI/GalleryController.swift b/submodules/TelegramUI/TelegramUI/GalleryController.swift index e2c884eb88..6856c12d7a 100644 --- a/submodules/TelegramUI/TelegramUI/GalleryController.swift +++ b/submodules/TelegramUI/TelegramUI/GalleryController.swift @@ -122,7 +122,7 @@ private let boldItalicFont = Font.semiboldItalic(16.0) private let fixedFont = UIFont(name: "Menlo-Regular", size: 15.0) ?? textFont func galleryCaptionStringWithAppliedEntities(_ text: String, entities: [MessageTextEntity]) -> NSAttributedString { - return stringWithAppliedEntities(text, entities: entities, baseColor: .white, linkColor: UIColor(rgb: 0x5ac8fa), baseFont: textFont, linkFont: textFont, boldFont: boldFont, italicFont: italicFont, boldItalicFont: boldItalicFont, fixedFont: fixedFont, underlineLinks: false) + return stringWithAppliedEntities(text, entities: entities, baseColor: .white, linkColor: UIColor(rgb: 0x5ac8fa), baseFont: textFont, linkFont: textFont, boldFont: boldFont, italicFont: italicFont, boldItalicFont: boldItalicFont, fixedFont: fixedFont, blockQuoteFont: textFont, underlineLinks: false) } private func galleryMessageCaptionText(_ message: Message) -> String { diff --git a/submodules/TelegramUI/TelegramUI/ItemListAddressItem.swift b/submodules/TelegramUI/TelegramUI/ItemListAddressItem.swift index c05ce7c48f..c5eaa57a47 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListAddressItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListAddressItem.swift @@ -182,7 +182,7 @@ class ItemListAddressItemNode: ListViewItemNode { let (labelLayout, labelApply) = makeLabelLayout(TextNodeLayoutArguments(attributedString: NSAttributedString(string: item.label, font: labelFont, textColor: labelColor), backgroundColor: nil, maximumNumberOfLines: 1, truncationType: .end, constrainedSize: CGSize(width: params.width - leftOffset - leftInset - rightInset, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets())) let baseColor = item.theme.list.itemPrimaryTextColor - let string = stringWithAppliedEntities(item.text, entities: [], baseColor: baseColor, linkColor: item.theme.list.itemAccentColor, baseFont: textFont, linkFont: textFont, boldFont: textBoldFont, italicFont: textItalicFont, boldItalicFont: textBoldItalicFont, fixedFont: textFixedFont) + let string = stringWithAppliedEntities(item.text, entities: [], baseColor: baseColor, linkColor: item.theme.list.itemAccentColor, baseFont: textFont, linkFont: textFont, boldFont: textBoldFont, italicFont: textItalicFont, boldItalicFont: textBoldItalicFont, fixedFont: textFixedFont, blockQuoteFont: textFont) let (textLayout, textApply) = makeTextLayout(TextNodeLayoutArguments(attributedString: string, backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: params.width - leftOffset - leftInset - rightInset - 98.0, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets())) let padding: CGFloat = !item.label.isEmpty ? 39.0 : 20.0 diff --git a/submodules/TelegramUI/TelegramUI/ItemListMultilineTextItem.swift b/submodules/TelegramUI/TelegramUI/ItemListMultilineTextItem.swift index 8a0dd83357..2b85440197 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListMultilineTextItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListMultilineTextItem.swift @@ -185,7 +185,7 @@ class ItemListMultilineTextItemNode: ListViewItemNode { } let entities = generateTextEntities(item.text, enabledTypes: item.enabledEntityTypes) - let string = stringWithAppliedEntities(item.text, entities: entities, baseColor: textColor, linkColor: item.theme.list.itemAccentColor, baseFont: titleFont, linkFont: titleFont, boldFont: titleBoldFont, italicFont: titleItalicFont, boldItalicFont: titleBoldItalicFont, fixedFont: titleFixedFont) + let string = stringWithAppliedEntities(item.text, entities: entities, baseColor: textColor, linkColor: item.theme.list.itemAccentColor, baseFont: titleFont, linkFont: titleFont, boldFont: titleBoldFont, italicFont: titleItalicFont, boldItalicFont: titleBoldItalicFont, fixedFont: titleFixedFont, blockQuoteFont: titleFont) let (titleLayout, titleApply) = makeTextLayout(TextNodeLayoutArguments(attributedString: string, backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: params.width - params.leftInset - params.rightInset - 20.0, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets())) diff --git a/submodules/TelegramUI/TelegramUI/ItemListTextWithLabelItem.swift b/submodules/TelegramUI/TelegramUI/ItemListTextWithLabelItem.swift index 774113f7eb..c21de0574d 100644 --- a/submodules/TelegramUI/TelegramUI/ItemListTextWithLabelItem.swift +++ b/submodules/TelegramUI/TelegramUI/ItemListTextWithLabelItem.swift @@ -209,7 +209,7 @@ class ItemListTextWithLabelItemNode: ListViewItemNode { case .highlighted: baseColor = item.theme.list.itemHighlightedColor } - let string = stringWithAppliedEntities(item.text, entities: entities, baseColor: baseColor, linkColor: item.theme.list.itemAccentColor, baseFont: textFont, linkFont: textFont, boldFont: textBoldFont, italicFont: textItalicFont, boldItalicFont: textBoldItalicFont, fixedFont: textFixedFont) + let string = stringWithAppliedEntities(item.text, entities: entities, baseColor: baseColor, linkColor: item.theme.list.itemAccentColor, baseFont: textFont, linkFont: textFont, boldFont: textBoldFont, italicFont: textItalicFont, boldItalicFont: textBoldItalicFont, fixedFont: textFixedFont, blockQuoteFont: textFont) let (textLayout, textApply) = makeTextLayout(TextNodeLayoutArguments(attributedString: string, backgroundColor: nil, maximumNumberOfLines: item.multiline ? 0 : 1, truncationType: .end, constrainedSize: CGSize(width: params.width - leftOffset - leftInset - rightInset, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets())) let contentSize = CGSize(width: params.width, height: textLayout.size.height + 39.0) diff --git a/submodules/TelegramUI/TelegramUI/Pasteboard.swift b/submodules/TelegramUI/TelegramUI/Pasteboard.swift index 3f654f700d..7b10d9ea40 100644 --- a/submodules/TelegramUI/TelegramUI/Pasteboard.swift +++ b/submodules/TelegramUI/TelegramUI/Pasteboard.swift @@ -5,7 +5,7 @@ import TelegramCore import MobileCoreServices private func rtfStringWithAppliedEntities(_ text: String, entities: [MessageTextEntity]) -> String { - let test = stringWithAppliedEntities(text, entities: entities, baseColor: .black, linkColor: .black, baseFont: Font.regular(14.0), linkFont: Font.regular(14.0), boldFont: Font.semibold(14.0), italicFont: Font.italic(14.0), boldItalicFont: Font.semiboldItalic(14.0), fixedFont: Font.monospace(14.0), underlineLinks: false, external: true) + let test = stringWithAppliedEntities(text, entities: entities, baseColor: .black, linkColor: .black, baseFont: Font.regular(14.0), linkFont: Font.regular(14.0), boldFont: Font.semibold(14.0), italicFont: Font.italic(14.0), boldItalicFont: Font.semiboldItalic(14.0), fixedFont: Font.monospace(14.0), blockQuoteFont: Font.regular(14.0), underlineLinks: false, external: true) if let data = try? test.data(from: NSRange(location: 0, length: test.length), documentAttributes: [NSAttributedString.DocumentAttributeKey.documentType: NSAttributedString.DocumentType.rtf]) { if var rtf = String(data: data, encoding: .windowsCP1252) { diff --git a/submodules/TelegramUI/TelegramUI/StickerPackPreviewControllerNode.swift b/submodules/TelegramUI/TelegramUI/StickerPackPreviewControllerNode.swift index 03c62c1ed6..db7082b12e 100644 --- a/submodules/TelegramUI/TelegramUI/StickerPackPreviewControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/StickerPackPreviewControllerNode.swift @@ -371,7 +371,8 @@ final class StickerPackPreviewControllerNode: ViewControllerTracingNode, UIScrol if self.currentItems.isEmpty && !updatedItems.isEmpty { let entities = generateTextEntities(info.title, enabledTypes: [.mention]) - self.contentTitleNode.attributedText = stringWithAppliedEntities(info.title, entities: entities, baseColor: self.presentationData.theme.actionSheet.primaryTextColor, linkColor: self.presentationData.theme.actionSheet.controlAccentColor, baseFont: Font.medium(20.0), linkFont: Font.medium(20.0), boldFont: Font.medium(20.0), italicFont: Font.medium(20.0), boldItalicFont: Font.medium(20.0), fixedFont: Font.medium(20.0)) + let font = Font.medium(20.0) + self.contentTitleNode.attributedText = stringWithAppliedEntities(info.title, entities: entities, baseColor: self.presentationData.theme.actionSheet.primaryTextColor, linkColor: self.presentationData.theme.actionSheet.controlAccentColor, baseFont: font, linkFont: font, boldFont: font, italicFont: font, boldItalicFont: font, fixedFont: font, blockQuoteFont: font) animateIn = true } transaction = StickerPackPreviewGridTransaction(previousList: self.currentItems, list: updatedItems, account: self.context.account, interaction: self.interaction) diff --git a/submodules/TelegramUI/TelegramUI/StringWithAppliedEntities.swift b/submodules/TelegramUI/TelegramUI/StringWithAppliedEntities.swift index fef36803ae..511b6534de 100644 --- a/submodules/TelegramUI/TelegramUI/StringWithAppliedEntities.swift +++ b/submodules/TelegramUI/TelegramUI/StringWithAppliedEntities.swift @@ -45,24 +45,25 @@ func chatInputStateStringWithAppliedEntities(_ text: String, entities: [MessageT return string } -func stringWithAppliedEntities(_ text: String, entities: [MessageTextEntity], baseColor: UIColor, linkColor: UIColor, baseFont: UIFont, linkFont: UIFont, boldFont: UIFont, italicFont: UIFont, boldItalicFont: UIFont, fixedFont: UIFont, underlineLinks: Bool = true, external: Bool = false) -> NSAttributedString { +func stringWithAppliedEntities(_ text: String, entities: [MessageTextEntity], baseColor: UIColor, linkColor: UIColor, baseFont: UIFont, linkFont: UIFont, boldFont: UIFont, italicFont: UIFont, boldItalicFont: UIFont, fixedFont: UIFont, blockQuoteFont: UIFont, underlineLinks: Bool = true, external: Bool = false) -> NSAttributedString { var nsString: NSString? let string = NSMutableAttributedString(string: text, attributes: [NSAttributedStringKey.font: baseFont, NSAttributedStringKey.foregroundColor: baseColor]) var skipEntity = false - let stringLength = string.length var underlineAllLinks = false if linkColor.isEqual(baseColor) { underlineAllLinks = true } var fontAttributes: [NSRange: ChatTextFontAttributes] = [:] + var rangeOffset: Int = 0 for i in 0 ..< entities.count { if skipEntity { skipEntity = false continue } + let stringLength = string.length let entity = entities[i] - var range = NSRange(location: entity.range.lowerBound, length: entity.range.upperBound - entity.range.lowerBound) + var range = NSRange(location: entity.range.lowerBound + rangeOffset, length: entity.range.upperBound - entity.range.lowerBound) if nsString == nil { nsString = text as NSString } @@ -188,6 +189,25 @@ func stringWithAppliedEntities(_ text: String, entities: [MessageTextEntity], ba string.addAttribute(NSAttributedStringKey(rawValue: TelegramTextAttributes.BotCommand), value: nsString!.substring(with: range), range: range) case .Code, .Pre: string.addAttribute(NSAttributedStringKey.font, value: fixedFont, range: range) + case .BlockQuote: + if let fontAttribute = fontAttributes[range] { + fontAttributes[range] = fontAttribute.union(.blockQuote) + } else { + fontAttributes[range] = .blockQuote + } + + let paragraphBreak = "\n" + string.insert(NSAttributedString(string: paragraphBreak), at: range.lowerBound) + + let paragraphRange = NSRange(location: range.lowerBound + paragraphBreak.count, length: range.upperBound - range.lowerBound) + + let paragraphStyle = NSMutableParagraphStyle() + paragraphStyle.headIndent = 10.0 + paragraphStyle.tabStops = [NSTextTab(textAlignment: .left, location: paragraphStyle.headIndent, options: [:])] + string.addAttribute(NSAttributedStringKey.paragraphStyle, value: paragraphStyle, range: paragraphRange) + + string.insert(NSAttributedString(string: paragraphBreak), at: paragraphRange.upperBound) + rangeOffset += paragraphBreak.count case let .Custom(type): if type == ApplicationSpecificEntityType.Timecode { string.addAttribute(NSAttributedStringKey.foregroundColor, value: linkColor, range: range) @@ -208,7 +228,9 @@ func stringWithAppliedEntities(_ text: String, entities: [MessageTextEntity], ba for (range, fontAttributes) in fontAttributes { var font: UIFont? - if fontAttributes == [.bold, .italic] { + if fontAttributes.contains(.blockQuote) { + font = blockQuoteFont + } else if fontAttributes == [.bold, .italic] { font = boldItalicFont } else if fontAttributes == [.bold] { font = boldFont diff --git a/submodules/TelegramUI/TelegramUI/TermsOfServiceControllerNode.swift b/submodules/TelegramUI/TelegramUI/TermsOfServiceControllerNode.swift index 0d3c59e5fd..674458c03c 100644 --- a/submodules/TelegramUI/TelegramUI/TermsOfServiceControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/TermsOfServiceControllerNode.swift @@ -57,7 +57,7 @@ final class TermsOfServiceControllerNode: ViewControllerTracingNode { self.contentTextNode = ImmediateTextNode() self.contentTextNode.displaysAsynchronously = false self.contentTextNode.maximumNumberOfLines = 0 - self.contentTextNode.attributedText = stringWithAppliedEntities(text, entities: entities, baseColor: theme.primary, linkColor: theme.accent, baseFont: Font.regular(15.0), linkFont: Font.regular(15.0), boldFont: Font.semibold(15.0), italicFont: Font.italic(15.0), boldItalicFont: Font.semiboldItalic(15.0), fixedFont: Font.monospace(15.0)) + self.contentTextNode.attributedText = stringWithAppliedEntities(text, entities: entities, baseColor: theme.primary, linkColor: theme.accent, baseFont: Font.regular(15.0), linkFont: Font.regular(15.0), boldFont: Font.semibold(15.0), italicFont: Font.italic(15.0), boldItalicFont: Font.semiboldItalic(15.0), fixedFont: Font.monospace(15.0), blockQuoteFont: Font.regular(15.0)) self.toolbarNode = ASDisplayNode() self.toolbarSeparatorNode = ASDisplayNode() diff --git a/submodules/TelegramUI/TelegramUI/TextNode.swift b/submodules/TelegramUI/TelegramUI/TextNode.swift index 3a947ac672..de69f8ef66 100644 --- a/submodules/TelegramUI/TelegramUI/TextNode.swift +++ b/submodules/TelegramUI/TelegramUI/TextNode.swift @@ -41,4 +41,5 @@ struct TelegramTextAttributes { static let BotCommand = "TelegramBotCommand" static let Hashtag = "TelegramHashtag" static let Timecode = "TelegramTimecode" + static let BlockQuote = "TelegramBlockQuote" } diff --git a/submodules/TelegramUI/TelegramUI/UpdateInfoItem.swift b/submodules/TelegramUI/TelegramUI/UpdateInfoItem.swift index e5cf15cb24..aaab7a0921 100644 --- a/submodules/TelegramUI/TelegramUI/UpdateInfoItem.swift +++ b/submodules/TelegramUI/TelegramUI/UpdateInfoItem.swift @@ -208,7 +208,7 @@ class UpdateInfoItemNode: ListViewItemNode { let (titleLayout, titleApply) = makeTitleLayout(TextNodeLayoutArguments(attributedString: NSAttributedString(string: item.title, font: titleFont, textColor: textColor), backgroundColor: nil, maximumNumberOfLines: 1, truncationType: .end, constrainedSize: CGSize(width: params.width - params.leftInset - params.rightInset - 88.0, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets())) - let string = stringWithAppliedEntities(item.text, entities: item.entities, baseColor: textColor, linkColor: item.theme.list.itemAccentColor, baseFont: textFont, linkFont: textFont, boldFont: textBoldFont, italicFont: textItalicFont, boldItalicFont: textBoldItalicFont, fixedFont: textFixedFont) + let string = stringWithAppliedEntities(item.text, entities: item.entities, baseColor: textColor, linkColor: item.theme.list.itemAccentColor, baseFont: textFont, linkFont: textFont, boldFont: textBoldFont, italicFont: textItalicFont, boldItalicFont: textBoldItalicFont, fixedFont: textFixedFont, blockQuoteFont: textFont) let (textLayout, textApply) = makeTextLayout(TextNodeLayoutArguments(attributedString: string, backgroundColor: nil, maximumNumberOfLines: 0, truncationType: .end, constrainedSize: CGSize(width: params.width - params.leftInset - params.rightInset - 28.0, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets())) let contentSize: CGSize From d1359970261790548c225fbd811ebce130535a42 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Wed, 17 Jul 2019 01:01:52 +0200 Subject: [PATCH 17/19] Fix build --- Telegram-iOS/en.lproj/Localizable.strings | 3 + .../Sources/PresentationStrings.swift | 6758 +++++++++-------- .../ChatRecentActionsControllerNode.swift | 2 +- .../Resources/PresentationStrings.mapping | Bin 118146 -> 118248 bytes 4 files changed, 3384 insertions(+), 3379 deletions(-) diff --git a/Telegram-iOS/en.lproj/Localizable.strings b/Telegram-iOS/en.lproj/Localizable.strings index 50ae3aa51e..288521e713 100644 --- a/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram-iOS/en.lproj/Localizable.strings @@ -4471,3 +4471,6 @@ Any member of this group will be able to see messages in the channel."; "Channel.TooMuchBots" = "Sorry, there are already too many bots in this group. Please remove some of the bots you're not using first."; "Channel.BotDoesntSupportGroups" = "Sorry, this bot is telling us it doesn't want to be added to groups. You can't add this bot unless its developers change their mind."; + +"StickerPacksSettings.AnimatedStickers" = "Loop Animated Stickers"; +"StickerPacksSettings.AnimatedStickersInfo" = "Animated stickers will play in chat continuously."; diff --git a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift index 0fdc0bf414..7dd2559224 100644 --- a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift +++ b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift @@ -213,4241 +213,4243 @@ public final class PresentationStrings { public var Passport_Address_ScansHelp: String { return self._s[23]! } public var FastTwoStepSetup_PasswordHelp: String { return self._s[24]! } public var SettingsSearch_Synonyms_Notifications_Title: String { return self._s[25]! } - public var AutoDownloadSettings_Files: String { return self._s[26]! } - public var TextFormat_AddLinkPlaceholder: String { return self._s[27]! } - public var LastSeen_Lately: String { return self._s[32]! } + public var StickerPacksSettings_AnimatedStickers: String { return self._s[26]! } + public var AutoDownloadSettings_Files: String { return self._s[27]! } + public var TextFormat_AddLinkPlaceholder: String { return self._s[28]! } + public var LastSeen_Lately: String { return self._s[33]! } public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[33]!, self._r[33]!, [_1, _2]) + return formatWithArgumentRanges(self._s[34]!, self._r[34]!, [_1, _2]) } - public var Camera_Discard: String { return self._s[34]! } - public var Channel_EditAdmin_PermissinAddAdminOff: String { return self._s[35]! } - public var Login_InvalidPhoneError: String { return self._s[37]! } - public var SettingsSearch_Synonyms_Privacy_AuthSessions: String { return self._s[38]! } - public var GroupInfo_LabelOwner: String { return self._s[39]! } - public var Conversation_Moderate_Delete: String { return self._s[40]! } - public var Conversation_DeleteMessagesForEveryone: String { return self._s[41]! } - public var WatchRemote_AlertOpen: String { return self._s[42]! } + public var Camera_Discard: String { return self._s[35]! } + public var Channel_EditAdmin_PermissinAddAdminOff: String { return self._s[36]! } + public var Login_InvalidPhoneError: String { return self._s[38]! } + public var SettingsSearch_Synonyms_Privacy_AuthSessions: String { return self._s[39]! } + public var GroupInfo_LabelOwner: String { return self._s[40]! } + public var Conversation_Moderate_Delete: String { return self._s[41]! } + public var Conversation_DeleteMessagesForEveryone: String { return self._s[42]! } + public var WatchRemote_AlertOpen: String { return self._s[43]! } public func MediaPicker_Nof(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[43]!, self._r[43]!, [_0]) + return formatWithArgumentRanges(self._s[44]!, self._r[44]!, [_0]) } - public var AutoDownloadSettings_MediaTypes: String { return self._s[45]! } - public var Watch_GroupInfo_Title: String { return self._s[46]! } - public var Passport_Identity_AddPersonalDetails: String { return self._s[47]! } - public var Channel_Info_Members: String { return self._s[48]! } - public var LoginPassword_InvalidPasswordError: String { return self._s[50]! } - public var Conversation_LiveLocation: String { return self._s[51]! } - public var PrivacyLastSeenSettings_CustomShareSettingsHelp: String { return self._s[52]! } - public var NetworkUsageSettings_BytesReceived: String { return self._s[54]! } - public var Stickers_Search: String { return self._s[56]! } - public var NotificationsSound_Synth: String { return self._s[57]! } - public var LogoutOptions_LogOutInfo: String { return self._s[58]! } - public var NetworkUsageSettings_MediaAudioDataSection: String { return self._s[60]! } - public var AutoNightTheme_UseSunsetSunrise: String { return self._s[62]! } - public var FastTwoStepSetup_Title: String { return self._s[63]! } - public var Channel_Info_BlackList: String { return self._s[64]! } - public var Channel_AdminLog_InfoPanelTitle: String { return self._s[65]! } - public var Conversation_OpenFile: String { return self._s[66]! } - public var SecretTimer_ImageDescription: String { return self._s[67]! } - public var StickerSettings_ContextInfo: String { return self._s[68]! } - public var TwoStepAuth_GenericHelp: String { return self._s[70]! } - public var AutoDownloadSettings_Unlimited: String { return self._s[71]! } - public var PrivacyLastSeenSettings_NeverShareWith_Title: String { return self._s[72]! } - public var AutoDownloadSettings_DataUsageHigh: String { return self._s[73]! } + public var AutoDownloadSettings_MediaTypes: String { return self._s[46]! } + public var Watch_GroupInfo_Title: String { return self._s[47]! } + public var Passport_Identity_AddPersonalDetails: String { return self._s[48]! } + public var Channel_Info_Members: String { return self._s[49]! } + public var LoginPassword_InvalidPasswordError: String { return self._s[51]! } + public var Conversation_LiveLocation: String { return self._s[52]! } + public var PrivacyLastSeenSettings_CustomShareSettingsHelp: String { return self._s[53]! } + public var NetworkUsageSettings_BytesReceived: String { return self._s[55]! } + public var Stickers_Search: String { return self._s[57]! } + public var NotificationsSound_Synth: String { return self._s[58]! } + public var LogoutOptions_LogOutInfo: String { return self._s[59]! } + public var NetworkUsageSettings_MediaAudioDataSection: String { return self._s[61]! } + public var AutoNightTheme_UseSunsetSunrise: String { return self._s[63]! } + public var FastTwoStepSetup_Title: String { return self._s[64]! } + public var Channel_Info_BlackList: String { return self._s[65]! } + public var Channel_AdminLog_InfoPanelTitle: String { return self._s[66]! } + public var Conversation_OpenFile: String { return self._s[67]! } + public var SecretTimer_ImageDescription: String { return self._s[68]! } + public var StickerSettings_ContextInfo: String { return self._s[69]! } + public var TwoStepAuth_GenericHelp: String { return self._s[71]! } + public var AutoDownloadSettings_Unlimited: String { return self._s[72]! } + public var PrivacyLastSeenSettings_NeverShareWith_Title: String { return self._s[73]! } + public var AutoDownloadSettings_DataUsageHigh: String { return self._s[74]! } public func PUSH_CHAT_MESSAGE_VIDEO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[74]!, self._r[74]!, [_1, _2]) + return formatWithArgumentRanges(self._s[75]!, self._r[75]!, [_1, _2]) } - public var Notifications_AddExceptionTitle: String { return self._s[75]! } - public var Watch_MessageView_Reply: String { return self._s[76]! } - public var Tour_Text6: String { return self._s[77]! } - public var TwoStepAuth_SetupPasswordEnterPasswordChange: String { return self._s[78]! } + public var Notifications_AddExceptionTitle: String { return self._s[76]! } + public var Watch_MessageView_Reply: String { return self._s[77]! } + public var Tour_Text6: String { return self._s[78]! } + public var TwoStepAuth_SetupPasswordEnterPasswordChange: String { return self._s[79]! } public func Notification_PinnedAnimationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[79]!, self._r[79]!, [_0]) - } - public func ShareFileTip_Text(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[80]!, self._r[80]!, [_0]) } - public var AccessDenied_LocationDenied: String { return self._s[81]! } - public var CallSettings_RecentCalls: String { return self._s[82]! } - public var ConversationProfile_LeaveDeleteAndExit: String { return self._s[83]! } - public var Channel_Members_AddAdminErrorBlacklisted: String { return self._s[84]! } - public var Passport_Authorize: String { return self._s[85]! } - public var StickerPacksSettings_ArchivedMasks_Info: String { return self._s[86]! } - public var AutoDownloadSettings_Videos: String { return self._s[87]! } - public var TwoStepAuth_ReEnterPasswordTitle: String { return self._s[88]! } - public var Tour_StartButton: String { return self._s[89]! } - public var Watch_AppName: String { return self._s[91]! } - public var StickerPack_ErrorNotFound: String { return self._s[92]! } - public var Channel_Info_Subscribers: String { return self._s[93]! } - public func Channel_AdminLog_MessageGroupPreHistoryVisible(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[94]!, self._r[94]!, [_0]) + public func ShareFileTip_Text(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[81]!, self._r[81]!, [_0]) } - public func DialogList_PinLimitError(_ _0: String) -> (String, [(Int, NSRange)]) { + public var AccessDenied_LocationDenied: String { return self._s[82]! } + public var CallSettings_RecentCalls: String { return self._s[83]! } + public var ConversationProfile_LeaveDeleteAndExit: String { return self._s[84]! } + public var Channel_Members_AddAdminErrorBlacklisted: String { return self._s[85]! } + public var Passport_Authorize: String { return self._s[86]! } + public var StickerPacksSettings_ArchivedMasks_Info: String { return self._s[87]! } + public var AutoDownloadSettings_Videos: String { return self._s[88]! } + public var TwoStepAuth_ReEnterPasswordTitle: String { return self._s[89]! } + public var Tour_StartButton: String { return self._s[90]! } + public var Watch_AppName: String { return self._s[92]! } + public var StickerPack_ErrorNotFound: String { return self._s[93]! } + public var Channel_Info_Subscribers: String { return self._s[94]! } + public func Channel_AdminLog_MessageGroupPreHistoryVisible(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[95]!, self._r[95]!, [_0]) } - public var Conversation_StopLiveLocation: String { return self._s[97]! } - public var Channel_AdminLogFilter_EventsAll: String { return self._s[98]! } - public var GroupInfo_InviteLink_CopyAlert_Success: String { return self._s[100]! } - public var Username_LinkCopied: String { return self._s[102]! } - public var GroupRemoved_Title: String { return self._s[103]! } - public var SecretVideo_Title: String { return self._s[104]! } + public func DialogList_PinLimitError(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[96]!, self._r[96]!, [_0]) + } + public var Conversation_StopLiveLocation: String { return self._s[98]! } + public var Channel_AdminLogFilter_EventsAll: String { return self._s[99]! } + public var GroupInfo_InviteLink_CopyAlert_Success: String { return self._s[101]! } + public var Username_LinkCopied: String { return self._s[103]! } + public var GroupRemoved_Title: String { return self._s[104]! } + public var SecretVideo_Title: String { return self._s[105]! } public func PUSH_PINNED_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[105]!, self._r[105]!, [_1]) + return formatWithArgumentRanges(self._s[106]!, self._r[106]!, [_1]) } - public var AccessDenied_PhotosAndVideos: String { return self._s[106]! } + public var AccessDenied_PhotosAndVideos: String { return self._s[107]! } public func PUSH_CHANNEL_MESSAGE_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[107]!, self._r[107]!, [_1]) + return formatWithArgumentRanges(self._s[108]!, self._r[108]!, [_1]) } - public var Map_OpenInGoogleMaps: String { return self._s[108]! } + public var Map_OpenInGoogleMaps: String { return self._s[109]! } public func Time_PreciseDate_m12(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[109]!, self._r[109]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[110]!, self._r[110]!, [_1, _2, _3]) } public func Channel_AdminLog_MessageKickedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[110]!, self._r[110]!, [_1, _2]) + return formatWithArgumentRanges(self._s[111]!, self._r[111]!, [_1, _2]) } - public var Call_StatusRinging: String { return self._s[111]! } - public var SettingsSearch_Synonyms_EditProfile_Username: String { return self._s[112]! } - public var Group_Username_InvalidStartsWithNumber: String { return self._s[113]! } - public var UserInfo_NotificationsEnabled: String { return self._s[114]! } - public var Map_Search: String { return self._s[115]! } - public var Login_TermsOfServiceHeader: String { return self._s[117]! } + public var Call_StatusRinging: String { return self._s[112]! } + public var SettingsSearch_Synonyms_EditProfile_Username: String { return self._s[113]! } + public var Group_Username_InvalidStartsWithNumber: String { return self._s[114]! } + public var UserInfo_NotificationsEnabled: String { return self._s[115]! } + public var Map_Search: String { return self._s[116]! } + public var Login_TermsOfServiceHeader: String { return self._s[118]! } public func Notification_PinnedVideoMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[118]!, self._r[118]!, [_0]) - } - public func Channel_AdminLog_MessageToggleSignaturesOn(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[119]!, self._r[119]!, [_0]) } - public var TwoStepAuth_SetupPasswordConfirmPassword: String { return self._s[120]! } - public var Weekday_Today: String { return self._s[121]! } + public func Channel_AdminLog_MessageToggleSignaturesOn(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[120]!, self._r[120]!, [_0]) + } + public var TwoStepAuth_SetupPasswordConfirmPassword: String { return self._s[121]! } + public var Weekday_Today: String { return self._s[122]! } public func InstantPage_AuthorAndDateTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[123]!, self._r[123]!, [_1, _2]) + return formatWithArgumentRanges(self._s[124]!, self._r[124]!, [_1, _2]) } public func Conversation_MessageDialogRetryAll(_ _1: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[124]!, self._r[124]!, ["\(_1)"]) + return formatWithArgumentRanges(self._s[125]!, self._r[125]!, ["\(_1)"]) } - public var Notification_PassportValuePersonalDetails: String { return self._s[126]! } - public var Channel_AdminLog_MessagePreviousLink: String { return self._s[127]! } - public var ChangePhoneNumberNumber_NewNumber: String { return self._s[128]! } - public var ApplyLanguage_LanguageNotSupportedError: String { return self._s[129]! } - public var TwoStepAuth_ChangePasswordDescription: String { return self._s[130]! } - public var PhotoEditor_BlurToolLinear: String { return self._s[131]! } - public var Contacts_PermissionsAllowInSettings: String { return self._s[132]! } - public var Weekday_ShortMonday: String { return self._s[133]! } - public var Cache_KeepMedia: String { return self._s[134]! } - public var Passport_FieldIdentitySelfieHelp: String { return self._s[135]! } + public var Notification_PassportValuePersonalDetails: String { return self._s[127]! } + public var Channel_AdminLog_MessagePreviousLink: String { return self._s[128]! } + public var ChangePhoneNumberNumber_NewNumber: String { return self._s[129]! } + public var ApplyLanguage_LanguageNotSupportedError: String { return self._s[130]! } + public var TwoStepAuth_ChangePasswordDescription: String { return self._s[131]! } + public var PhotoEditor_BlurToolLinear: String { return self._s[132]! } + public var Contacts_PermissionsAllowInSettings: String { return self._s[133]! } + public var Weekday_ShortMonday: String { return self._s[134]! } + public var Cache_KeepMedia: String { return self._s[135]! } + public var Passport_FieldIdentitySelfieHelp: String { return self._s[136]! } public func PUSH_PINNED_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[136]!, self._r[136]!, [_1, _2]) + return formatWithArgumentRanges(self._s[137]!, self._r[137]!, [_1, _2]) } - public var Conversation_ClousStorageInfo_Description4: String { return self._s[137]! } - public var Passport_Language_ru: String { return self._s[138]! } + public var Conversation_ClousStorageInfo_Description4: String { return self._s[138]! } + public var Passport_Language_ru: String { return self._s[139]! } public func Notification_CreatedChatWithTitle(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[139]!, self._r[139]!, [_0, _1]) + return formatWithArgumentRanges(self._s[140]!, self._r[140]!, [_0, _1]) } - public var WallpaperPreview_PatternIntensity: String { return self._s[140]! } - public var TwoStepAuth_RecoveryUnavailable: String { return self._s[141]! } - public var EnterPasscode_TouchId: String { return self._s[142]! } - public var PhotoEditor_QualityVeryHigh: String { return self._s[145]! } - public var Checkout_NewCard_SaveInfo: String { return self._s[147]! } - public var Gif_NoGifsPlaceholder: String { return self._s[149]! } - public var Conversation_OpenBotLinkTitle: String { return self._s[151]! } - public var ChatSettings_AutoDownloadEnabled: String { return self._s[152]! } - public var NetworkUsageSettings_BytesSent: String { return self._s[153]! } - public var Checkout_PasswordEntry_Pay: String { return self._s[154]! } - public var AuthSessions_TerminateSession: String { return self._s[155]! } - public var Message_File: String { return self._s[156]! } - public var MediaPicker_VideoMuteDescription: String { return self._s[157]! } - public var SocksProxySetup_ProxyStatusConnected: String { return self._s[158]! } - public var TwoStepAuth_RecoveryCode: String { return self._s[159]! } - public var EnterPasscode_EnterCurrentPasscode: String { return self._s[160]! } + public var WallpaperPreview_PatternIntensity: String { return self._s[141]! } + public var TwoStepAuth_RecoveryUnavailable: String { return self._s[142]! } + public var EnterPasscode_TouchId: String { return self._s[143]! } + public var PhotoEditor_QualityVeryHigh: String { return self._s[146]! } + public var Checkout_NewCard_SaveInfo: String { return self._s[148]! } + public var Gif_NoGifsPlaceholder: String { return self._s[150]! } + public var Conversation_OpenBotLinkTitle: String { return self._s[152]! } + public var ChatSettings_AutoDownloadEnabled: String { return self._s[153]! } + public var NetworkUsageSettings_BytesSent: String { return self._s[154]! } + public var Checkout_PasswordEntry_Pay: String { return self._s[155]! } + public var AuthSessions_TerminateSession: String { return self._s[156]! } + public var Message_File: String { return self._s[157]! } + public var MediaPicker_VideoMuteDescription: String { return self._s[158]! } + public var SocksProxySetup_ProxyStatusConnected: String { return self._s[159]! } + public var TwoStepAuth_RecoveryCode: String { return self._s[160]! } + public var EnterPasscode_EnterCurrentPasscode: String { return self._s[161]! } public func TwoStepAuth_EnterPasswordHint(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[161]!, self._r[161]!, [_0]) + return formatWithArgumentRanges(self._s[162]!, self._r[162]!, [_0]) } - public var Conversation_Moderate_Report: String { return self._s[163]! } - public var TwoStepAuth_EmailInvalid: String { return self._s[164]! } - public var Passport_Language_ms: String { return self._s[165]! } - public var Channel_Edit_AboutItem: String { return self._s[167]! } - public var DialogList_SearchSectionGlobal: String { return self._s[171]! } - public var AttachmentMenu_WebSearch: String { return self._s[172]! } - public var PasscodeSettings_TurnPasscodeOn: String { return self._s[173]! } - public var Channel_BanUser_Title: String { return self._s[174]! } - public var WallpaperPreview_SwipeTopText: String { return self._s[175]! } - public var ArchivedChats_IntroText2: String { return self._s[176]! } - public var Notification_Exceptions_DeleteAll: String { return self._s[177]! } + public var Conversation_Moderate_Report: String { return self._s[164]! } + public var TwoStepAuth_EmailInvalid: String { return self._s[165]! } + public var Passport_Language_ms: String { return self._s[166]! } + public var Channel_Edit_AboutItem: String { return self._s[168]! } + public var DialogList_SearchSectionGlobal: String { return self._s[172]! } + public var AttachmentMenu_WebSearch: String { return self._s[173]! } + public var PasscodeSettings_TurnPasscodeOn: String { return self._s[174]! } + public var Channel_BanUser_Title: String { return self._s[175]! } + public var WallpaperPreview_SwipeTopText: String { return self._s[176]! } + public var ArchivedChats_IntroText2: String { return self._s[177]! } + public var Notification_Exceptions_DeleteAll: String { return self._s[178]! } public func Channel_AdminLog_MessageTransferedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[178]!, self._r[178]!, [_1, _2]) + return formatWithArgumentRanges(self._s[179]!, self._r[179]!, [_1, _2]) } - public var ChatSearch_SearchPlaceholder: String { return self._s[180]! } - public var Passport_FieldAddressTranslationHelp: String { return self._s[181]! } - public var NotificationsSound_Aurora: String { return self._s[182]! } + public var ChatSearch_SearchPlaceholder: String { return self._s[181]! } + public var Passport_FieldAddressTranslationHelp: String { return self._s[182]! } + public var NotificationsSound_Aurora: String { return self._s[183]! } public func FileSize_GB(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[183]!, self._r[183]!, [_0]) + return formatWithArgumentRanges(self._s[184]!, self._r[184]!, [_0]) } - public var AuthSessions_LoggedInWithTelegram: String { return self._s[186]! } + public var AuthSessions_LoggedInWithTelegram: String { return self._s[187]! } public func Privacy_GroupsAndChannels_InviteToGroupError(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[187]!, self._r[187]!, [_0, _1]) + return formatWithArgumentRanges(self._s[188]!, self._r[188]!, [_0, _1]) } - public var Passport_PasswordNext: String { return self._s[188]! } - public var Bot_GroupStatusReadsHistory: String { return self._s[189]! } - public var EmptyGroupInfo_Line2: String { return self._s[190]! } - public var Settings_FAQ_Intro: String { return self._s[192]! } - public var PrivacySettings_PasscodeAndTouchId: String { return self._s[194]! } - public var FeaturedStickerPacks_Title: String { return self._s[195]! } - public var TwoStepAuth_PasswordRemoveConfirmation: String { return self._s[196]! } - public var Username_Title: String { return self._s[197]! } + public var Passport_PasswordNext: String { return self._s[189]! } + public var Bot_GroupStatusReadsHistory: String { return self._s[190]! } + public var EmptyGroupInfo_Line2: String { return self._s[191]! } + public var Settings_FAQ_Intro: String { return self._s[193]! } + public var PrivacySettings_PasscodeAndTouchId: String { return self._s[195]! } + public var FeaturedStickerPacks_Title: String { return self._s[196]! } + public var TwoStepAuth_PasswordRemoveConfirmation: String { return self._s[197]! } + public var Username_Title: String { return self._s[198]! } public func Message_StickerText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[198]!, self._r[198]!, [_0]) + return formatWithArgumentRanges(self._s[199]!, self._r[199]!, [_0]) } - public var PasscodeSettings_AlphanumericCode: String { return self._s[199]! } - public var Localization_LanguageOther: String { return self._s[200]! } - public var Stickers_SuggestStickers: String { return self._s[201]! } + public var PasscodeSettings_AlphanumericCode: String { return self._s[200]! } + public var Localization_LanguageOther: String { return self._s[201]! } + public var Stickers_SuggestStickers: String { return self._s[202]! } public func Channel_AdminLog_MessageRemovedGroupUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[202]!, self._r[202]!, [_0]) + return formatWithArgumentRanges(self._s[203]!, self._r[203]!, [_0]) } - public var NotificationSettings_ShowNotificationsFromAccountsSection: String { return self._s[203]! } - public var Channel_AdminLogFilter_EventsAdmins: String { return self._s[204]! } - public var Conversation_DefaultRestrictedStickers: String { return self._s[205]! } + public var NotificationSettings_ShowNotificationsFromAccountsSection: String { return self._s[204]! } + public var Channel_AdminLogFilter_EventsAdmins: String { return self._s[205]! } + public var Conversation_DefaultRestrictedStickers: String { return self._s[206]! } public func Notification_PinnedDeletedMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[206]!, self._r[206]!, [_0]) + return formatWithArgumentRanges(self._s[207]!, self._r[207]!, [_0]) } - public var Group_UpgradeConfirmation: String { return self._s[208]! } - public var DialogList_Unpin: String { return self._s[209]! } - public var Passport_Identity_DateOfBirth: String { return self._s[210]! } - public var Month_ShortOctober: String { return self._s[211]! } - public var SettingsSearch_Synonyms_Privacy_Data_ContactsSync: String { return self._s[212]! } - public var Notification_CallCanceledShort: String { return self._s[213]! } - public var Passport_Phone_Help: String { return self._s[214]! } - public var Passport_Language_az: String { return self._s[216]! } - public var CreatePoll_TextPlaceholder: String { return self._s[218]! } - public var Passport_Identity_DocumentNumber: String { return self._s[219]! } - public var PhotoEditor_CurvesRed: String { return self._s[220]! } - public var PhoneNumberHelp_Alert: String { return self._s[222]! } - public var SocksProxySetup_Port: String { return self._s[223]! } - public var Checkout_PayNone: String { return self._s[224]! } - public var AutoDownloadSettings_WiFi: String { return self._s[225]! } - public var GroupInfo_GroupType: String { return self._s[226]! } - public var StickerSettings_ContextHide: String { return self._s[227]! } - public var Passport_Address_OneOfTypeTemporaryRegistration: String { return self._s[228]! } - public var Group_Setup_HistoryTitle: String { return self._s[230]! } - public var Passport_Identity_FilesUploadNew: String { return self._s[231]! } - public var PasscodeSettings_AutoLock: String { return self._s[232]! } - public var Passport_Title: String { return self._s[233]! } - public var Channel_AdminLogFilter_EventsNewSubscribers: String { return self._s[234]! } - public var GroupPermission_NoSendGifs: String { return self._s[235]! } - public var PrivacySettings_PasscodeOn: String { return self._s[236]! } - public var State_WaitingForNetwork: String { return self._s[238]! } + public var Group_UpgradeConfirmation: String { return self._s[209]! } + public var DialogList_Unpin: String { return self._s[210]! } + public var Passport_Identity_DateOfBirth: String { return self._s[211]! } + public var Month_ShortOctober: String { return self._s[212]! } + public var SettingsSearch_Synonyms_Privacy_Data_ContactsSync: String { return self._s[213]! } + public var Notification_CallCanceledShort: String { return self._s[214]! } + public var Passport_Phone_Help: String { return self._s[215]! } + public var Passport_Language_az: String { return self._s[217]! } + public var CreatePoll_TextPlaceholder: String { return self._s[219]! } + public var Passport_Identity_DocumentNumber: String { return self._s[220]! } + public var PhotoEditor_CurvesRed: String { return self._s[221]! } + public var PhoneNumberHelp_Alert: String { return self._s[223]! } + public var SocksProxySetup_Port: String { return self._s[224]! } + public var Checkout_PayNone: String { return self._s[225]! } + public var AutoDownloadSettings_WiFi: String { return self._s[226]! } + public var GroupInfo_GroupType: String { return self._s[227]! } + public var StickerSettings_ContextHide: String { return self._s[228]! } + public var Passport_Address_OneOfTypeTemporaryRegistration: String { return self._s[229]! } + public var Group_Setup_HistoryTitle: String { return self._s[231]! } + public var Passport_Identity_FilesUploadNew: String { return self._s[232]! } + public var PasscodeSettings_AutoLock: String { return self._s[233]! } + public var Passport_Title: String { return self._s[234]! } + public var Channel_AdminLogFilter_EventsNewSubscribers: String { return self._s[235]! } + public var GroupPermission_NoSendGifs: String { return self._s[236]! } + public var PrivacySettings_PasscodeOn: String { return self._s[237]! } + public var State_WaitingForNetwork: String { return self._s[239]! } public func Notification_Invited(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[239]!, self._r[239]!, [_0, _1]) + return formatWithArgumentRanges(self._s[240]!, self._r[240]!, [_0, _1]) } - public var Calls_NotNow: String { return self._s[241]! } + public var Calls_NotNow: String { return self._s[242]! } public func Channel_DiscussionGroup_HeaderSet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[242]!, self._r[242]!, [_0]) + return formatWithArgumentRanges(self._s[243]!, self._r[243]!, [_0]) } - public var UserInfo_SendMessage: String { return self._s[243]! } - public var TwoStepAuth_PasswordSet: String { return self._s[244]! } - public var Passport_DeleteDocument: String { return self._s[245]! } - public var SocksProxySetup_AddProxyTitle: String { return self._s[246]! } + public var UserInfo_SendMessage: String { return self._s[244]! } + public var TwoStepAuth_PasswordSet: String { return self._s[245]! } + public var Passport_DeleteDocument: String { return self._s[246]! } + public var SocksProxySetup_AddProxyTitle: String { return self._s[247]! } public func PUSH_MESSAGE_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[247]!, self._r[247]!, [_1]) + return formatWithArgumentRanges(self._s[248]!, self._r[248]!, [_1]) } - public var GroupRemoved_Remove: String { return self._s[248]! } - public var Passport_FieldIdentity: String { return self._s[249]! } - public var Group_Setup_TypePrivateHelp: String { return self._s[250]! } - public var Conversation_Processing: String { return self._s[252]! } - public var ChatSettings_AutoPlayAnimations: String { return self._s[254]! } - public var AuthSessions_LogOutApplicationsHelp: String { return self._s[257]! } - public var Month_GenFebruary: String { return self._s[258]! } + public var GroupRemoved_Remove: String { return self._s[249]! } + public var Passport_FieldIdentity: String { return self._s[250]! } + public var Group_Setup_TypePrivateHelp: String { return self._s[251]! } + public var Conversation_Processing: String { return self._s[253]! } + public var ChatSettings_AutoPlayAnimations: String { return self._s[255]! } + public var AuthSessions_LogOutApplicationsHelp: String { return self._s[258]! } + public var Month_GenFebruary: String { return self._s[259]! } public func Login_InvalidPhoneEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[260]!, self._r[260]!, [_1, _2, _3, _4, _5]) + return formatWithArgumentRanges(self._s[261]!, self._r[261]!, [_1, _2, _3, _4, _5]) } - public var Passport_Identity_TypeIdentityCard: String { return self._s[261]! } - public var AutoDownloadSettings_DataUsageMedium: String { return self._s[263]! } - public var GroupInfo_AddParticipant: String { return self._s[264]! } - public var KeyCommand_SendMessage: String { return self._s[265]! } - public var Map_LiveLocationShowAll: String { return self._s[267]! } - public var WallpaperSearch_ColorOrange: String { return self._s[269]! } - public var Appearance_AppIconDefaultX: String { return self._s[270]! } - public var Checkout_Receipt_Title: String { return self._s[271]! } - public var Group_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[272]! } - public var WallpaperPreview_PreviewTopText: String { return self._s[273]! } - public var Message_Contact: String { return self._s[274]! } - public var Call_StatusIncoming: String { return self._s[275]! } + public var Passport_Identity_TypeIdentityCard: String { return self._s[262]! } + public var AutoDownloadSettings_DataUsageMedium: String { return self._s[264]! } + public var GroupInfo_AddParticipant: String { return self._s[265]! } + public var KeyCommand_SendMessage: String { return self._s[266]! } + public var Map_LiveLocationShowAll: String { return self._s[268]! } + public var WallpaperSearch_ColorOrange: String { return self._s[270]! } + public var Appearance_AppIconDefaultX: String { return self._s[271]! } + public var Checkout_Receipt_Title: String { return self._s[272]! } + public var Group_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[273]! } + public var WallpaperPreview_PreviewTopText: String { return self._s[274]! } + public var Message_Contact: String { return self._s[275]! } + public var Call_StatusIncoming: String { return self._s[276]! } public func Channel_AdminLog_MessageKickedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[276]!, self._r[276]!, [_1]) + return formatWithArgumentRanges(self._s[277]!, self._r[277]!, [_1]) } public func PUSH_ENCRYPTED_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[278]!, self._r[278]!, [_1]) + return formatWithArgumentRanges(self._s[279]!, self._r[279]!, [_1]) } - public var Passport_FieldIdentityDetailsHelp: String { return self._s[279]! } - public var Conversation_ViewChannel: String { return self._s[280]! } + public var Passport_FieldIdentityDetailsHelp: String { return self._s[280]! } + public var Conversation_ViewChannel: String { return self._s[281]! } public func Time_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[281]!, self._r[281]!, [_0]) + return formatWithArgumentRanges(self._s[282]!, self._r[282]!, [_0]) } - public var Passport_Language_nl: String { return self._s[283]! } - public var Camera_Retake: String { return self._s[284]! } + public var Passport_Language_nl: String { return self._s[284]! } + public var Camera_Retake: String { return self._s[285]! } public func UserInfo_BlockActionTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[285]!, self._r[285]!, [_0]) + return formatWithArgumentRanges(self._s[286]!, self._r[286]!, [_0]) } - public var AuthSessions_LogOutApplications: String { return self._s[286]! } - public var ApplyLanguage_ApplySuccess: String { return self._s[287]! } - public var Tour_Title6: String { return self._s[288]! } - public var Map_ChooseAPlace: String { return self._s[289]! } - public var CallSettings_Never: String { return self._s[291]! } + public var AuthSessions_LogOutApplications: String { return self._s[287]! } + public var ApplyLanguage_ApplySuccess: String { return self._s[288]! } + public var Tour_Title6: String { return self._s[289]! } + public var Map_ChooseAPlace: String { return self._s[290]! } + public var CallSettings_Never: String { return self._s[292]! } public func Notification_ChangedGroupPhoto(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[292]!, self._r[292]!, [_0]) + return formatWithArgumentRanges(self._s[293]!, self._r[293]!, [_0]) } - public var ChannelRemoved_RemoveInfo: String { return self._s[293]! } + public var ChannelRemoved_RemoveInfo: String { return self._s[294]! } public func AutoDownloadSettings_PreloadVideoInfo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[294]!, self._r[294]!, [_0]) + return formatWithArgumentRanges(self._s[295]!, self._r[295]!, [_0]) } - public var SettingsSearch_Synonyms_Notifications_MessageNotificationsExceptions: String { return self._s[295]! } + public var SettingsSearch_Synonyms_Notifications_MessageNotificationsExceptions: String { return self._s[296]! } public func Conversation_ClearChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[296]!, self._r[296]!, [_0]) + return formatWithArgumentRanges(self._s[297]!, self._r[297]!, [_0]) } - public var GroupInfo_InviteLink_Title: String { return self._s[297]! } + public var GroupInfo_InviteLink_Title: String { return self._s[298]! } public func Channel_AdminLog_MessageUnkickedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[298]!, self._r[298]!, [_1, _2]) + return formatWithArgumentRanges(self._s[299]!, self._r[299]!, [_1, _2]) } - public var KeyCommand_ScrollUp: String { return self._s[299]! } - public var ContactInfo_URLLabelHomepage: String { return self._s[300]! } - public var Channel_OwnershipTransfer_ChangeOwner: String { return self._s[301]! } + public var KeyCommand_ScrollUp: String { return self._s[300]! } + public var ContactInfo_URLLabelHomepage: String { return self._s[301]! } + public var Channel_OwnershipTransfer_ChangeOwner: String { return self._s[302]! } public func Conversation_EncryptedPlaceholderTitleOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[302]!, self._r[302]!, [_0]) + return formatWithArgumentRanges(self._s[303]!, self._r[303]!, [_0]) } - public var CallFeedback_ReasonDistortedSpeech: String { return self._s[303]! } - public var Watch_LastSeen_WithinAWeek: String { return self._s[304]! } - public var Weekday_Tuesday: String { return self._s[306]! } - public var UserInfo_StartSecretChat: String { return self._s[308]! } - public var Passport_Identity_FilesTitle: String { return self._s[309]! } - public var Permissions_NotificationsAllow_v0: String { return self._s[310]! } - public var DialogList_DeleteConversationConfirmation: String { return self._s[312]! } - public var ChatList_UndoArchiveRevealedTitle: String { return self._s[313]! } - public var AuthSessions_Sessions: String { return self._s[314]! } + public var CallFeedback_ReasonDistortedSpeech: String { return self._s[304]! } + public var Watch_LastSeen_WithinAWeek: String { return self._s[305]! } + public var Weekday_Tuesday: String { return self._s[307]! } + public var UserInfo_StartSecretChat: String { return self._s[309]! } + public var Passport_Identity_FilesTitle: String { return self._s[310]! } + public var Permissions_NotificationsAllow_v0: String { return self._s[311]! } + public var DialogList_DeleteConversationConfirmation: String { return self._s[313]! } + public var ChatList_UndoArchiveRevealedTitle: String { return self._s[314]! } + public var AuthSessions_Sessions: String { return self._s[315]! } public func Settings_KeepPhoneNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[316]!, self._r[316]!, [_0]) + return formatWithArgumentRanges(self._s[317]!, self._r[317]!, [_0]) } - public var TwoStepAuth_RecoveryEmailChangeDescription: String { return self._s[317]! } - public var Call_StatusWaiting: String { return self._s[318]! } - public var CreateGroup_SoftUserLimitAlert: String { return self._s[319]! } - public var FastTwoStepSetup_HintHelp: String { return self._s[320]! } - public var WallpaperPreview_CustomColorBottomText: String { return self._s[321]! } - public var LogoutOptions_AddAccountText: String { return self._s[322]! } - public var PasscodeSettings_6DigitCode: String { return self._s[323]! } - public var Settings_LogoutConfirmationText: String { return self._s[324]! } - public var Passport_Identity_TypePassport: String { return self._s[326]! } + public var TwoStepAuth_RecoveryEmailChangeDescription: String { return self._s[318]! } + public var Call_StatusWaiting: String { return self._s[319]! } + public var CreateGroup_SoftUserLimitAlert: String { return self._s[320]! } + public var FastTwoStepSetup_HintHelp: String { return self._s[321]! } + public var WallpaperPreview_CustomColorBottomText: String { return self._s[322]! } + public var LogoutOptions_AddAccountText: String { return self._s[323]! } + public var PasscodeSettings_6DigitCode: String { return self._s[324]! } + public var Settings_LogoutConfirmationText: String { return self._s[325]! } + public var Passport_Identity_TypePassport: String { return self._s[327]! } public func PUSH_MESSAGE_VIDEOS(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[329]!, self._r[329]!, [_1, _2]) + return formatWithArgumentRanges(self._s[330]!, self._r[330]!, [_1, _2]) } - public var SocksProxySetup_SaveProxy: String { return self._s[330]! } - public var AccessDenied_SaveMedia: String { return self._s[331]! } - public var Checkout_ErrorInvoiceAlreadyPaid: String { return self._s[333]! } - public var Settings_Title: String { return self._s[335]! } - public var Contacts_InviteSearchLabel: String { return self._s[337]! } - public var ConvertToSupergroup_Title: String { return self._s[338]! } + public var SocksProxySetup_SaveProxy: String { return self._s[331]! } + public var AccessDenied_SaveMedia: String { return self._s[332]! } + public var Checkout_ErrorInvoiceAlreadyPaid: String { return self._s[334]! } + public var Settings_Title: String { return self._s[336]! } + public var Contacts_InviteSearchLabel: String { return self._s[338]! } + public var ConvertToSupergroup_Title: String { return self._s[339]! } public func Channel_AdminLog_CaptionEdited(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[339]!, self._r[339]!, [_0]) + return formatWithArgumentRanges(self._s[340]!, self._r[340]!, [_0]) } - public var InfoPlist_NSSiriUsageDescription: String { return self._s[340]! } + public var InfoPlist_NSSiriUsageDescription: String { return self._s[341]! } public func PUSH_MESSAGE_CHANNEL_MESSAGE_GAME_SCORE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[341]!, self._r[341]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[342]!, self._r[342]!, [_1, _2, _3]) } - public var ChatSettings_AutomaticPhotoDownload: String { return self._s[342]! } - public var UserInfo_BotHelp: String { return self._s[343]! } - public var PrivacySettings_LastSeenEverybody: String { return self._s[344]! } - public var Checkout_Name: String { return self._s[345]! } - public var AutoDownloadSettings_DataUsage: String { return self._s[346]! } - public var Channel_BanUser_BlockFor: String { return self._s[347]! } - public var Checkout_ShippingAddress: String { return self._s[348]! } - public var AutoDownloadSettings_MaxVideoSize: String { return self._s[349]! } - public var Privacy_PaymentsClearInfoDoneHelp: String { return self._s[350]! } - public var Privacy_Forwards: String { return self._s[351]! } - public var Channel_BanUser_PermissionSendPolls: String { return self._s[352]! } + public var ChatSettings_AutomaticPhotoDownload: String { return self._s[343]! } + public var UserInfo_BotHelp: String { return self._s[344]! } + public var PrivacySettings_LastSeenEverybody: String { return self._s[345]! } + public var Checkout_Name: String { return self._s[346]! } + public var AutoDownloadSettings_DataUsage: String { return self._s[347]! } + public var Channel_BanUser_BlockFor: String { return self._s[348]! } + public var Checkout_ShippingAddress: String { return self._s[349]! } + public var AutoDownloadSettings_MaxVideoSize: String { return self._s[350]! } + public var Privacy_PaymentsClearInfoDoneHelp: String { return self._s[351]! } + public var Privacy_Forwards: String { return self._s[352]! } + public var Channel_BanUser_PermissionSendPolls: String { return self._s[353]! } public func SecretVideo_NotViewedYet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[355]!, self._r[355]!, [_0]) + return formatWithArgumentRanges(self._s[356]!, self._r[356]!, [_0]) } - public var Contacts_SortedByName: String { return self._s[356]! } - public var Group_OwnershipTransfer_Title: String { return self._s[357]! } - public var Group_LeaveGroup: String { return self._s[358]! } - public var Settings_UsernameEmpty: String { return self._s[359]! } + public var Contacts_SortedByName: String { return self._s[357]! } + public var Group_OwnershipTransfer_Title: String { return self._s[358]! } + public var Group_LeaveGroup: String { return self._s[359]! } + public var Settings_UsernameEmpty: String { return self._s[360]! } public func Notification_PinnedPollMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[360]!, self._r[360]!, [_0]) + return formatWithArgumentRanges(self._s[361]!, self._r[361]!, [_0]) } public func TwoStepAuth_ConfirmEmailDescription(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[361]!, self._r[361]!, [_1]) + return formatWithArgumentRanges(self._s[362]!, self._r[362]!, [_1]) } public func Channel_OwnershipTransfer_DescriptionInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[362]!, self._r[362]!, [_1, _2]) + return formatWithArgumentRanges(self._s[363]!, self._r[363]!, [_1, _2]) } - public var Message_ImageExpired: String { return self._s[363]! } - public var TwoStepAuth_RecoveryFailed: String { return self._s[365]! } - public var UserInfo_AddToExisting: String { return self._s[366]! } - public var TwoStepAuth_EnabledSuccess: String { return self._s[367]! } - public var SettingsSearch_Synonyms_Appearance_ChatBackground_SetColor: String { return self._s[368]! } + public var Message_ImageExpired: String { return self._s[364]! } + public var TwoStepAuth_RecoveryFailed: String { return self._s[366]! } + public var UserInfo_AddToExisting: String { return self._s[367]! } + public var TwoStepAuth_EnabledSuccess: String { return self._s[368]! } + public var SettingsSearch_Synonyms_Appearance_ChatBackground_SetColor: String { return self._s[369]! } public func PUSH_CHANNEL_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[369]!, self._r[369]!, [_1]) + return formatWithArgumentRanges(self._s[370]!, self._r[370]!, [_1]) } - public var Notifications_GroupNotificationsAlert: String { return self._s[370]! } - public var Passport_Language_km: String { return self._s[371]! } - public var SocksProxySetup_AdNoticeHelp: String { return self._s[373]! } - public var Notification_CallMissedShort: String { return self._s[374]! } - public var ReportPeer_ReasonOther_Send: String { return self._s[375]! } - public var Watch_Compose_Send: String { return self._s[376]! } - public var Passport_Identity_TypeInternalPassportUploadScan: String { return self._s[379]! } - public var Conversation_HoldForVideo: String { return self._s[380]! } - public var CheckoutInfo_ErrorCityInvalid: String { return self._s[382]! } - public var Appearance_AutoNightThemeDisabled: String { return self._s[384]! } - public var Channel_LinkItem: String { return self._s[385]! } + public var Notifications_GroupNotificationsAlert: String { return self._s[371]! } + public var Passport_Language_km: String { return self._s[372]! } + public var SocksProxySetup_AdNoticeHelp: String { return self._s[374]! } + public var Notification_CallMissedShort: String { return self._s[375]! } + public var ReportPeer_ReasonOther_Send: String { return self._s[376]! } + public var Watch_Compose_Send: String { return self._s[377]! } + public var Passport_Identity_TypeInternalPassportUploadScan: String { return self._s[380]! } + public var Conversation_HoldForVideo: String { return self._s[381]! } + public var CheckoutInfo_ErrorCityInvalid: String { return self._s[383]! } + public var Appearance_AutoNightThemeDisabled: String { return self._s[385]! } + public var Channel_LinkItem: String { return self._s[386]! } public func PrivacySettings_LastSeenContactsMinusPlus(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[386]!, self._r[386]!, [_0, _1]) + return formatWithArgumentRanges(self._s[387]!, self._r[387]!, [_0, _1]) } public func Passport_Identity_NativeNameTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[389]!, self._r[389]!, [_0]) + return formatWithArgumentRanges(self._s[390]!, self._r[390]!, [_0]) } - public var Passport_Language_dv: String { return self._s[390]! } - public var Undo_LeftChannel: String { return self._s[391]! } - public var Notifications_ExceptionsMuted: String { return self._s[392]! } - public var ChatList_UnhideAction: String { return self._s[393]! } - public var Conversation_ContextMenuShare: String { return self._s[394]! } - public var Conversation_ContextMenuStickerPackInfo: String { return self._s[395]! } - public var ShareFileTip_Title: String { return self._s[396]! } - public var NotificationsSound_Chord: String { return self._s[397]! } + public var Passport_Language_dv: String { return self._s[391]! } + public var Undo_LeftChannel: String { return self._s[392]! } + public var Notifications_ExceptionsMuted: String { return self._s[393]! } + public var ChatList_UnhideAction: String { return self._s[394]! } + public var Conversation_ContextMenuShare: String { return self._s[395]! } + public var Conversation_ContextMenuStickerPackInfo: String { return self._s[396]! } + public var ShareFileTip_Title: String { return self._s[397]! } + public var NotificationsSound_Chord: String { return self._s[398]! } public func PUSH_CHAT_RETURNED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[398]!, self._r[398]!, [_1, _2]) + return formatWithArgumentRanges(self._s[399]!, self._r[399]!, [_1, _2]) } - public var Passport_Address_EditTemporaryRegistration: String { return self._s[399]! } + public var Passport_Address_EditTemporaryRegistration: String { return self._s[400]! } public func Notification_Joined(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[400]!, self._r[400]!, [_0]) + return formatWithArgumentRanges(self._s[401]!, self._r[401]!, [_0]) } - public var Notification_CallOutgoingShort: String { return self._s[402]! } + public var Notification_CallOutgoingShort: String { return self._s[403]! } public func Watch_Time_ShortFullAt(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[403]!, self._r[403]!, [_1, _2]) + return formatWithArgumentRanges(self._s[404]!, self._r[404]!, [_1, _2]) } - public var Passport_Address_TypeUtilityBill: String { return self._s[404]! } - public var Privacy_Forwards_LinkIfAllowed: String { return self._s[405]! } - public var ReportPeer_Report: String { return self._s[406]! } - public var SettingsSearch_Synonyms_Proxy_Title: String { return self._s[407]! } - public var GroupInfo_DeactivatedStatus: String { return self._s[408]! } - public var StickerPack_Send: String { return self._s[409]! } - public var Login_CodeSentInternal: String { return self._s[410]! } - public var GroupInfo_InviteLink_LinkSection: String { return self._s[411]! } + public var Passport_Address_TypeUtilityBill: String { return self._s[405]! } + public var Privacy_Forwards_LinkIfAllowed: String { return self._s[406]! } + public var ReportPeer_Report: String { return self._s[407]! } + public var SettingsSearch_Synonyms_Proxy_Title: String { return self._s[408]! } + public var GroupInfo_DeactivatedStatus: String { return self._s[409]! } + public var StickerPack_Send: String { return self._s[410]! } + public var Login_CodeSentInternal: String { return self._s[411]! } + public var GroupInfo_InviteLink_LinkSection: String { return self._s[412]! } public func Channel_AdminLog_MessageDeleted(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[412]!, self._r[412]!, [_0]) + return formatWithArgumentRanges(self._s[413]!, self._r[413]!, [_0]) } public func Conversation_EncryptionWaiting(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[414]!, self._r[414]!, [_0]) + return formatWithArgumentRanges(self._s[415]!, self._r[415]!, [_0]) } - public var Channel_BanUser_PermissionSendStickersAndGifs: String { return self._s[415]! } + public var Channel_BanUser_PermissionSendStickersAndGifs: String { return self._s[416]! } public func PUSH_PINNED_GAME(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[416]!, self._r[416]!, [_1]) + return formatWithArgumentRanges(self._s[417]!, self._r[417]!, [_1]) } - public var ReportPeer_ReasonViolence: String { return self._s[418]! } - public var Map_Locating: String { return self._s[419]! } - public var AutoDownloadSettings_GroupChats: String { return self._s[421]! } - public var CheckoutInfo_SaveInfo: String { return self._s[422]! } - public var SharedMedia_EmptyLinksText: String { return self._s[424]! } - public var Passport_Address_CityPlaceholder: String { return self._s[425]! } - public var CheckoutInfo_ErrorStateInvalid: String { return self._s[426]! } - public var Privacy_ProfilePhoto_CustomHelp: String { return self._s[427]! } - public var Channel_AdminLog_CanAddAdmins: String { return self._s[429]! } + public var ReportPeer_ReasonViolence: String { return self._s[419]! } + public var Map_Locating: String { return self._s[420]! } + public var AutoDownloadSettings_GroupChats: String { return self._s[422]! } + public var CheckoutInfo_SaveInfo: String { return self._s[423]! } + public var SharedMedia_EmptyLinksText: String { return self._s[425]! } + public var Passport_Address_CityPlaceholder: String { return self._s[426]! } + public var CheckoutInfo_ErrorStateInvalid: String { return self._s[427]! } + public var Privacy_ProfilePhoto_CustomHelp: String { return self._s[428]! } + public var Channel_AdminLog_CanAddAdmins: String { return self._s[430]! } public func PUSH_CHANNEL_MESSAGE_FWD(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[430]!, self._r[430]!, [_1]) + return formatWithArgumentRanges(self._s[431]!, self._r[431]!, [_1]) } public func Time_MonthOfYear_m8(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[431]!, self._r[431]!, [_0]) + return formatWithArgumentRanges(self._s[432]!, self._r[432]!, [_0]) } - public var InfoPlist_NSLocationWhenInUseUsageDescription: String { return self._s[432]! } - public var GroupInfo_InviteLink_RevokeAlert_Success: String { return self._s[433]! } - public var ChangePhoneNumberCode_Code: String { return self._s[434]! } + public var InfoPlist_NSLocationWhenInUseUsageDescription: String { return self._s[433]! } + public var GroupInfo_InviteLink_RevokeAlert_Success: String { return self._s[434]! } + public var ChangePhoneNumberCode_Code: String { return self._s[435]! } public func UserInfo_NotificationsDefaultSound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[435]!, self._r[435]!, [_0]) + return formatWithArgumentRanges(self._s[436]!, self._r[436]!, [_0]) } - public var TwoStepAuth_SetupEmail: String { return self._s[436]! } - public var HashtagSearch_AllChats: String { return self._s[437]! } - public var SettingsSearch_Synonyms_Data_AutoDownloadUsingCellular: String { return self._s[439]! } + public var TwoStepAuth_SetupEmail: String { return self._s[437]! } + public var HashtagSearch_AllChats: String { return self._s[438]! } + public var SettingsSearch_Synonyms_Data_AutoDownloadUsingCellular: String { return self._s[440]! } public func ChatList_DeleteForEveryone(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[440]!, self._r[440]!, [_0]) + return formatWithArgumentRanges(self._s[441]!, self._r[441]!, [_0]) } - public var PhotoEditor_QualityHigh: String { return self._s[442]! } + public var PhotoEditor_QualityHigh: String { return self._s[443]! } public func Passport_Phone_UseTelegramNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[443]!, self._r[443]!, [_0]) + return formatWithArgumentRanges(self._s[444]!, self._r[444]!, [_0]) } - public var ApplyLanguage_ApplyLanguageAction: String { return self._s[444]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsPreview: String { return self._s[445]! } - public var Message_LiveLocation: String { return self._s[446]! } - public var Cache_LowDiskSpaceText: String { return self._s[447]! } - public var Conversation_SendMessage: String { return self._s[448]! } - public var AuthSessions_EmptyTitle: String { return self._s[449]! } - public var Privacy_PhoneNumber: String { return self._s[450]! } - public var PeopleNearby_CreateGroup: String { return self._s[451]! } - public var CallSettings_UseLessData: String { return self._s[452]! } - public var NetworkUsageSettings_MediaDocumentDataSection: String { return self._s[453]! } - public var Stickers_AddToFavorites: String { return self._s[454]! } - public var PhotoEditor_QualityLow: String { return self._s[455]! } - public var Watch_UserInfo_Unblock: String { return self._s[456]! } - public var Settings_Logout: String { return self._s[457]! } + public var ApplyLanguage_ApplyLanguageAction: String { return self._s[445]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsPreview: String { return self._s[446]! } + public var Message_LiveLocation: String { return self._s[447]! } + public var Cache_LowDiskSpaceText: String { return self._s[448]! } + public var Conversation_SendMessage: String { return self._s[449]! } + public var AuthSessions_EmptyTitle: String { return self._s[450]! } + public var Privacy_PhoneNumber: String { return self._s[451]! } + public var PeopleNearby_CreateGroup: String { return self._s[452]! } + public var CallSettings_UseLessData: String { return self._s[453]! } + public var NetworkUsageSettings_MediaDocumentDataSection: String { return self._s[454]! } + public var Stickers_AddToFavorites: String { return self._s[455]! } + public var PhotoEditor_QualityLow: String { return self._s[456]! } + public var Watch_UserInfo_Unblock: String { return self._s[457]! } + public var Settings_Logout: String { return self._s[458]! } public func PUSH_MESSAGE_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[458]!, self._r[458]!, [_1]) + return formatWithArgumentRanges(self._s[459]!, self._r[459]!, [_1]) } - public var ContactInfo_PhoneLabelWork: String { return self._s[459]! } - public var ChannelInfo_Stats: String { return self._s[460]! } - public var TextFormat_Link: String { return self._s[461]! } + public var ContactInfo_PhoneLabelWork: String { return self._s[460]! } + public var ChannelInfo_Stats: String { return self._s[461]! } + public var TextFormat_Link: String { return self._s[462]! } public func Date_ChatDateHeader(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[462]!, self._r[462]!, [_1, _2]) + return formatWithArgumentRanges(self._s[463]!, self._r[463]!, [_1, _2]) } public func Message_ForwardedMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[463]!, self._r[463]!, [_0]) + return formatWithArgumentRanges(self._s[464]!, self._r[464]!, [_0]) } - public var Watch_Notification_Joined: String { return self._s[464]! } - public var Group_Setup_TypePublicHelp: String { return self._s[465]! } - public var Passport_Scans_UploadNew: String { return self._s[466]! } - public var Checkout_LiabilityAlertTitle: String { return self._s[467]! } - public var DialogList_Title: String { return self._s[470]! } - public var NotificationSettings_ContactJoined: String { return self._s[471]! } - public var GroupInfo_LabelAdmin: String { return self._s[472]! } - public var KeyCommand_ChatInfo: String { return self._s[473]! } - public var Conversation_EditingCaptionPanelTitle: String { return self._s[474]! } - public var Call_ReportIncludeLog: String { return self._s[475]! } + public var Watch_Notification_Joined: String { return self._s[465]! } + public var Group_Setup_TypePublicHelp: String { return self._s[466]! } + public var Passport_Scans_UploadNew: String { return self._s[467]! } + public var Checkout_LiabilityAlertTitle: String { return self._s[468]! } + public var DialogList_Title: String { return self._s[471]! } + public var NotificationSettings_ContactJoined: String { return self._s[472]! } + public var GroupInfo_LabelAdmin: String { return self._s[473]! } + public var KeyCommand_ChatInfo: String { return self._s[474]! } + public var Conversation_EditingCaptionPanelTitle: String { return self._s[475]! } + public var Call_ReportIncludeLog: String { return self._s[476]! } public func Notifications_ExceptionsChangeSound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[478]!, self._r[478]!, [_0]) + return formatWithArgumentRanges(self._s[479]!, self._r[479]!, [_0]) } - public var LocalGroup_IrrelevantWarning: String { return self._s[479]! } - public var ChatAdmins_AllMembersAreAdmins: String { return self._s[480]! } - public var Conversation_DefaultRestrictedInline: String { return self._s[481]! } - public var Message_Sticker: String { return self._s[482]! } - public var LastSeen_JustNow: String { return self._s[484]! } - public var Passport_Email_EmailPlaceholder: String { return self._s[486]! } - public var SettingsSearch_Synonyms_AppLanguage: String { return self._s[487]! } - public var Channel_AdminLogFilter_EventsEditedMessages: String { return self._s[488]! } - public var Channel_EditAdmin_PermissionsHeader: String { return self._s[489]! } - public var TwoStepAuth_Email: String { return self._s[490]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsSound: String { return self._s[491]! } - public var PhotoEditor_BlurToolOff: String { return self._s[492]! } - public var Message_PinnedStickerMessage: String { return self._s[493]! } - public var ContactInfo_PhoneLabelPager: String { return self._s[494]! } - public var SettingsSearch_Synonyms_Appearance_TextSize: String { return self._s[495]! } - public var Passport_DiscardMessageTitle: String { return self._s[496]! } - public var Privacy_PaymentsTitle: String { return self._s[497]! } - public var Channel_DiscussionGroup_Header: String { return self._s[499]! } - public var Appearance_ColorTheme: String { return self._s[500]! } - public var UserInfo_ShareContact: String { return self._s[501]! } - public var Passport_Address_TypePassportRegistration: String { return self._s[502]! } - public var Common_More: String { return self._s[503]! } - public var Watch_Message_Call: String { return self._s[504]! } - public var Profile_EncryptionKey: String { return self._s[507]! } - public var Privacy_TopPeers: String { return self._s[508]! } - public var Conversation_StopPollConfirmation: String { return self._s[509]! } - public var Privacy_TopPeersWarning: String { return self._s[511]! } - public var SettingsSearch_Synonyms_Data_DownloadInBackground: String { return self._s[512]! } - public var SettingsSearch_Synonyms_Data_Storage_KeepMedia: String { return self._s[513]! } - public var DialogList_SearchSectionMessages: String { return self._s[516]! } - public var Notifications_ChannelNotifications: String { return self._s[517]! } - public var CheckoutInfo_ShippingInfoAddress1Placeholder: String { return self._s[518]! } - public var Passport_Language_sk: String { return self._s[519]! } - public var Notification_MessageLifetime1h: String { return self._s[520]! } - public var Wallpaper_ResetWallpapersInfo: String { return self._s[521]! } - public var Call_ReportSkip: String { return self._s[523]! } - public var Cache_ServiceFiles: String { return self._s[524]! } - public var Group_ErrorAddTooMuchAdmins: String { return self._s[525]! } - public var Map_Hybrid: String { return self._s[526]! } - public var Contacts_SearchUsersAndGroupsLabel: String { return self._s[528]! } - public var ChatSettings_AutoDownloadVideos: String { return self._s[530]! } - public var Channel_BanUser_PermissionEmbedLinks: String { return self._s[531]! } - public var InfoPlist_NSLocationAlwaysAndWhenInUseUsageDescription: String { return self._s[532]! } - public var SocksProxySetup_ProxyTelegram: String { return self._s[535]! } + public var LocalGroup_IrrelevantWarning: String { return self._s[480]! } + public var ChatAdmins_AllMembersAreAdmins: String { return self._s[481]! } + public var Conversation_DefaultRestrictedInline: String { return self._s[482]! } + public var Message_Sticker: String { return self._s[483]! } + public var LastSeen_JustNow: String { return self._s[485]! } + public var Passport_Email_EmailPlaceholder: String { return self._s[487]! } + public var SettingsSearch_Synonyms_AppLanguage: String { return self._s[488]! } + public var Channel_AdminLogFilter_EventsEditedMessages: String { return self._s[489]! } + public var Channel_EditAdmin_PermissionsHeader: String { return self._s[490]! } + public var TwoStepAuth_Email: String { return self._s[491]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsSound: String { return self._s[492]! } + public var PhotoEditor_BlurToolOff: String { return self._s[493]! } + public var Message_PinnedStickerMessage: String { return self._s[494]! } + public var ContactInfo_PhoneLabelPager: String { return self._s[495]! } + public var SettingsSearch_Synonyms_Appearance_TextSize: String { return self._s[496]! } + public var Passport_DiscardMessageTitle: String { return self._s[497]! } + public var Privacy_PaymentsTitle: String { return self._s[498]! } + public var Channel_DiscussionGroup_Header: String { return self._s[500]! } + public var Appearance_ColorTheme: String { return self._s[501]! } + public var UserInfo_ShareContact: String { return self._s[502]! } + public var Passport_Address_TypePassportRegistration: String { return self._s[503]! } + public var Common_More: String { return self._s[504]! } + public var Watch_Message_Call: String { return self._s[505]! } + public var Profile_EncryptionKey: String { return self._s[508]! } + public var Privacy_TopPeers: String { return self._s[509]! } + public var Conversation_StopPollConfirmation: String { return self._s[510]! } + public var Privacy_TopPeersWarning: String { return self._s[512]! } + public var SettingsSearch_Synonyms_Data_DownloadInBackground: String { return self._s[513]! } + public var SettingsSearch_Synonyms_Data_Storage_KeepMedia: String { return self._s[514]! } + public var DialogList_SearchSectionMessages: String { return self._s[517]! } + public var Notifications_ChannelNotifications: String { return self._s[518]! } + public var CheckoutInfo_ShippingInfoAddress1Placeholder: String { return self._s[519]! } + public var Passport_Language_sk: String { return self._s[520]! } + public var Notification_MessageLifetime1h: String { return self._s[521]! } + public var Wallpaper_ResetWallpapersInfo: String { return self._s[522]! } + public var Call_ReportSkip: String { return self._s[524]! } + public var Cache_ServiceFiles: String { return self._s[525]! } + public var Group_ErrorAddTooMuchAdmins: String { return self._s[526]! } + public var Map_Hybrid: String { return self._s[527]! } + public var Contacts_SearchUsersAndGroupsLabel: String { return self._s[529]! } + public var ChatSettings_AutoDownloadVideos: String { return self._s[531]! } + public var Channel_BanUser_PermissionEmbedLinks: String { return self._s[532]! } + public var InfoPlist_NSLocationAlwaysAndWhenInUseUsageDescription: String { return self._s[533]! } + public var SocksProxySetup_ProxyTelegram: String { return self._s[536]! } public func PUSH_MESSAGE_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[536]!, self._r[536]!, [_1]) + return formatWithArgumentRanges(self._s[537]!, self._r[537]!, [_1]) } - public var Channel_Username_CreatePrivateLinkHelp: String { return self._s[538]! } + public var Channel_Username_CreatePrivateLinkHelp: String { return self._s[539]! } public func PUSH_CHAT_TITLE_EDITED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[539]!, self._r[539]!, [_1, _2]) + return formatWithArgumentRanges(self._s[540]!, self._r[540]!, [_1, _2]) } - public var Conversation_LiveLocationYou: String { return self._s[540]! } - public var SettingsSearch_Synonyms_Privacy_Calls: String { return self._s[541]! } - public var SettingsSearch_Synonyms_Notifications_MessageNotificationsPreview: String { return self._s[542]! } - public var UserInfo_ShareBot: String { return self._s[545]! } + public var Conversation_LiveLocationYou: String { return self._s[541]! } + public var SettingsSearch_Synonyms_Privacy_Calls: String { return self._s[542]! } + public var SettingsSearch_Synonyms_Notifications_MessageNotificationsPreview: String { return self._s[543]! } + public var UserInfo_ShareBot: String { return self._s[546]! } public func PUSH_AUTH_REGION(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[546]!, self._r[546]!, [_1, _2]) + return formatWithArgumentRanges(self._s[547]!, self._r[547]!, [_1, _2]) } - public var PhotoEditor_ShadowsTint: String { return self._s[547]! } - public var Message_Audio: String { return self._s[548]! } - public var Passport_Language_lt: String { return self._s[549]! } + public var PhotoEditor_ShadowsTint: String { return self._s[548]! } + public var Message_Audio: String { return self._s[549]! } + public var Passport_Language_lt: String { return self._s[550]! } public func Message_PinnedTextMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[550]!, self._r[550]!, [_0]) + return formatWithArgumentRanges(self._s[551]!, self._r[551]!, [_0]) } - public var Permissions_SiriText_v0: String { return self._s[551]! } - public var Conversation_FileICloudDrive: String { return self._s[552]! } - public var Notifications_Badge_IncludeMutedChats: String { return self._s[553]! } + public var Permissions_SiriText_v0: String { return self._s[552]! } + public var Conversation_FileICloudDrive: String { return self._s[553]! } + public var Notifications_Badge_IncludeMutedChats: String { return self._s[554]! } public func Notification_NewAuthDetected(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String, _ _6: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[554]!, self._r[554]!, [_1, _2, _3, _4, _5, _6]) + return formatWithArgumentRanges(self._s[555]!, self._r[555]!, [_1, _2, _3, _4, _5, _6]) } - public var DialogList_ProxyConnectionIssuesTooltip: String { return self._s[555]! } + public var DialogList_ProxyConnectionIssuesTooltip: String { return self._s[556]! } public func Time_MonthOfYear_m5(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[556]!, self._r[556]!, [_0]) + return formatWithArgumentRanges(self._s[557]!, self._r[557]!, [_0]) } - public var Channel_SignMessages: String { return self._s[557]! } + public var Channel_SignMessages: String { return self._s[558]! } public func PUSH_MESSAGE_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[558]!, self._r[558]!, [_1]) + return formatWithArgumentRanges(self._s[559]!, self._r[559]!, [_1]) } - public var Compose_ChannelTokenListPlaceholder: String { return self._s[559]! } - public var Passport_ScanPassport: String { return self._s[560]! } - public var Watch_Suggestion_Thanks: String { return self._s[561]! } - public var BlockedUsers_AddNew: String { return self._s[562]! } + public var Compose_ChannelTokenListPlaceholder: String { return self._s[560]! } + public var Passport_ScanPassport: String { return self._s[561]! } + public var Watch_Suggestion_Thanks: String { return self._s[562]! } + public var BlockedUsers_AddNew: String { return self._s[563]! } public func PUSH_CHAT_MESSAGE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[563]!, self._r[563]!, [_1, _2]) + return formatWithArgumentRanges(self._s[564]!, self._r[564]!, [_1, _2]) } - public var Watch_Message_Invoice: String { return self._s[564]! } - public var SettingsSearch_Synonyms_Privacy_LastSeen: String { return self._s[565]! } - public var Month_GenJuly: String { return self._s[566]! } - public var SocksProxySetup_ProxySocks5: String { return self._s[567]! } - public var Notification_Exceptions_DeleteAllConfirmation: String { return self._s[569]! } - public var Notification_ChannelInviterSelf: String { return self._s[570]! } - public var CheckoutInfo_ReceiverInfoEmail: String { return self._s[571]! } + public var Watch_Message_Invoice: String { return self._s[565]! } + public var SettingsSearch_Synonyms_Privacy_LastSeen: String { return self._s[566]! } + public var Month_GenJuly: String { return self._s[567]! } + public var SocksProxySetup_ProxySocks5: String { return self._s[568]! } + public var Notification_Exceptions_DeleteAllConfirmation: String { return self._s[570]! } + public var Notification_ChannelInviterSelf: String { return self._s[571]! } + public var CheckoutInfo_ReceiverInfoEmail: String { return self._s[572]! } public func ApplyLanguage_ChangeLanguageUnofficialText(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[572]!, self._r[572]!, [_1, _2]) + return formatWithArgumentRanges(self._s[573]!, self._r[573]!, [_1, _2]) } - public var CheckoutInfo_Title: String { return self._s[573]! } - public var Watch_Stickers_RecentPlaceholder: String { return self._s[574]! } + public var CheckoutInfo_Title: String { return self._s[574]! } + public var Watch_Stickers_RecentPlaceholder: String { return self._s[575]! } public func Map_DistanceAway(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[575]!, self._r[575]!, [_0]) + return formatWithArgumentRanges(self._s[576]!, self._r[576]!, [_0]) } - public var Passport_Identity_MainPage: String { return self._s[576]! } - public var TwoStepAuth_ConfirmEmailResendCode: String { return self._s[577]! } - public var Passport_Language_de: String { return self._s[578]! } - public var Update_Title: String { return self._s[579]! } - public var ContactInfo_PhoneLabelWorkFax: String { return self._s[580]! } - public var Channel_AdminLog_BanEmbedLinks: String { return self._s[581]! } - public var Passport_Email_UseTelegramEmailHelp: String { return self._s[582]! } - public var Notifications_ChannelNotificationsPreview: String { return self._s[583]! } - public var NotificationsSound_Telegraph: String { return self._s[584]! } - public var Watch_LastSeen_ALongTimeAgo: String { return self._s[585]! } - public var ChannelMembers_WhoCanAddMembers: String { return self._s[586]! } + public var Passport_Identity_MainPage: String { return self._s[577]! } + public var TwoStepAuth_ConfirmEmailResendCode: String { return self._s[578]! } + public var Passport_Language_de: String { return self._s[579]! } + public var Update_Title: String { return self._s[580]! } + public var ContactInfo_PhoneLabelWorkFax: String { return self._s[581]! } + public var Channel_AdminLog_BanEmbedLinks: String { return self._s[582]! } + public var Passport_Email_UseTelegramEmailHelp: String { return self._s[583]! } + public var Notifications_ChannelNotificationsPreview: String { return self._s[584]! } + public var NotificationsSound_Telegraph: String { return self._s[585]! } + public var Watch_LastSeen_ALongTimeAgo: String { return self._s[586]! } + public var ChannelMembers_WhoCanAddMembers: String { return self._s[587]! } public func AutoDownloadSettings_UpTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[587]!, self._r[587]!, [_0]) + return formatWithArgumentRanges(self._s[588]!, self._r[588]!, [_0]) } - public var Stickers_SuggestAll: String { return self._s[588]! } - public var Conversation_ForwardTitle: String { return self._s[589]! } + public var Stickers_SuggestAll: String { return self._s[589]! } + public var Conversation_ForwardTitle: String { return self._s[590]! } public func Notification_JoinedChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[590]!, self._r[590]!, [_0]) + return formatWithArgumentRanges(self._s[591]!, self._r[591]!, [_0]) } - public var Calls_NewCall: String { return self._s[591]! } - public var Call_StatusEnded: String { return self._s[592]! } - public var AutoDownloadSettings_DataUsageLow: String { return self._s[593]! } - public var Settings_ProxyConnected: String { return self._s[594]! } - public var Channel_AdminLogFilter_EventsPinned: String { return self._s[595]! } - public var PhotoEditor_QualityVeryLow: String { return self._s[596]! } - public var Channel_AdminLogFilter_EventsDeletedMessages: String { return self._s[597]! } - public var Passport_PasswordPlaceholder: String { return self._s[598]! } - public var Message_PinnedInvoice: String { return self._s[599]! } - public var Passport_Identity_IssueDate: String { return self._s[600]! } - public var Passport_Language_pl: String { return self._s[601]! } + public var Calls_NewCall: String { return self._s[592]! } + public var Call_StatusEnded: String { return self._s[593]! } + public var AutoDownloadSettings_DataUsageLow: String { return self._s[594]! } + public var Settings_ProxyConnected: String { return self._s[595]! } + public var Channel_AdminLogFilter_EventsPinned: String { return self._s[596]! } + public var PhotoEditor_QualityVeryLow: String { return self._s[597]! } + public var Channel_AdminLogFilter_EventsDeletedMessages: String { return self._s[598]! } + public var Passport_PasswordPlaceholder: String { return self._s[599]! } + public var Message_PinnedInvoice: String { return self._s[600]! } + public var Passport_Identity_IssueDate: String { return self._s[601]! } + public var Passport_Language_pl: String { return self._s[602]! } public func ChannelInfo_ChannelForbidden(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[602]!, self._r[602]!, [_0]) + return formatWithArgumentRanges(self._s[603]!, self._r[603]!, [_0]) } - public var SocksProxySetup_PasteFromClipboard: String { return self._s[603]! } - public var Call_StatusConnecting: String { return self._s[604]! } + public var SocksProxySetup_PasteFromClipboard: String { return self._s[604]! } + public var Call_StatusConnecting: String { return self._s[605]! } public func Username_UsernameIsAvailable(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[605]!, self._r[605]!, [_0]) + return formatWithArgumentRanges(self._s[606]!, self._r[606]!, [_0]) } - public var ChatSettings_ConnectionType_UseProxy: String { return self._s[607]! } - public var Common_Edit: String { return self._s[608]! } - public var PrivacySettings_LastSeenNobody: String { return self._s[609]! } + public var ChatSettings_ConnectionType_UseProxy: String { return self._s[608]! } + public var Common_Edit: String { return self._s[609]! } + public var PrivacySettings_LastSeenNobody: String { return self._s[610]! } public func Notification_LeftChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[610]!, self._r[610]!, [_0]) + return formatWithArgumentRanges(self._s[611]!, self._r[611]!, [_0]) } - public var GroupInfo_ChatAdmins: String { return self._s[611]! } - public var PrivateDataSettings_Title: String { return self._s[612]! } - public var Login_CancelPhoneVerificationStop: String { return self._s[613]! } - public var ChatList_Read: String { return self._s[614]! } - public var Undo_ChatClearedForBothSides: String { return self._s[615]! } - public var GroupPermission_SectionTitle: String { return self._s[616]! } + public var GroupInfo_ChatAdmins: String { return self._s[612]! } + public var PrivateDataSettings_Title: String { return self._s[613]! } + public var Login_CancelPhoneVerificationStop: String { return self._s[614]! } + public var ChatList_Read: String { return self._s[615]! } + public var Undo_ChatClearedForBothSides: String { return self._s[616]! } + public var GroupPermission_SectionTitle: String { return self._s[617]! } public func PUSH_CHAT_LEFT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[618]!, self._r[618]!, [_1, _2]) + return formatWithArgumentRanges(self._s[619]!, self._r[619]!, [_1, _2]) } - public var Checkout_ErrorPaymentFailed: String { return self._s[619]! } - public var Update_UpdateApp: String { return self._s[620]! } - public var Group_Username_RevokeExistingUsernamesInfo: String { return self._s[621]! } - public var Settings_Appearance: String { return self._s[622]! } - public var SettingsSearch_Synonyms_Stickers_SuggestStickers: String { return self._s[624]! } - public var Watch_Location_Access: String { return self._s[625]! } - public var ShareMenu_CopyShareLink: String { return self._s[627]! } - public var TwoStepAuth_SetupHintTitle: String { return self._s[628]! } + public var Checkout_ErrorPaymentFailed: String { return self._s[620]! } + public var Update_UpdateApp: String { return self._s[621]! } + public var Group_Username_RevokeExistingUsernamesInfo: String { return self._s[622]! } + public var Settings_Appearance: String { return self._s[623]! } + public var SettingsSearch_Synonyms_Stickers_SuggestStickers: String { return self._s[625]! } + public var Watch_Location_Access: String { return self._s[626]! } + public var ShareMenu_CopyShareLink: String { return self._s[628]! } + public var TwoStepAuth_SetupHintTitle: String { return self._s[629]! } public func DialogList_SingleRecordingVideoMessageSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[630]!, self._r[630]!, [_0]) + return formatWithArgumentRanges(self._s[631]!, self._r[631]!, [_0]) } - public var Notifications_ClassicTones: String { return self._s[631]! } - public var Weekday_ShortWednesday: String { return self._s[632]! } - public var WallpaperPreview_SwipeColorsBottomText: String { return self._s[633]! } - public var Undo_LeftGroup: String { return self._s[636]! } - public var Conversation_LinkDialogCopy: String { return self._s[637]! } - public var KeyCommand_FocusOnInputField: String { return self._s[639]! } - public var Contacts_SelectAll: String { return self._s[640]! } - public var Preview_SaveToCameraRoll: String { return self._s[641]! } - public var PrivacySettings_PasscodeOff: String { return self._s[642]! } - public var Wallpaper_Title: String { return self._s[643]! } - public var Conversation_FilePhotoOrVideo: String { return self._s[644]! } - public var AccessDenied_Camera: String { return self._s[645]! } - public var Watch_Compose_CurrentLocation: String { return self._s[646]! } - public var Channel_DiscussionGroup_MakeHistoryPublicProceed: String { return self._s[648]! } + public var Notifications_ClassicTones: String { return self._s[632]! } + public var Weekday_ShortWednesday: String { return self._s[633]! } + public var WallpaperPreview_SwipeColorsBottomText: String { return self._s[634]! } + public var Undo_LeftGroup: String { return self._s[637]! } + public var Conversation_LinkDialogCopy: String { return self._s[638]! } + public var KeyCommand_FocusOnInputField: String { return self._s[640]! } + public var Contacts_SelectAll: String { return self._s[641]! } + public var Preview_SaveToCameraRoll: String { return self._s[642]! } + public var PrivacySettings_PasscodeOff: String { return self._s[643]! } + public var Wallpaper_Title: String { return self._s[644]! } + public var Conversation_FilePhotoOrVideo: String { return self._s[645]! } + public var AccessDenied_Camera: String { return self._s[646]! } + public var Watch_Compose_CurrentLocation: String { return self._s[647]! } + public var Channel_DiscussionGroup_MakeHistoryPublicProceed: String { return self._s[649]! } public func SecretImage_NotViewedYet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[649]!, self._r[649]!, [_0]) + return formatWithArgumentRanges(self._s[650]!, self._r[650]!, [_0]) } - public var GroupInfo_InvitationLinkDoesNotExist: String { return self._s[650]! } - public var Passport_Language_ro: String { return self._s[651]! } - public var CheckoutInfo_SaveInfoHelp: String { return self._s[652]! } + public var GroupInfo_InvitationLinkDoesNotExist: String { return self._s[651]! } + public var Passport_Language_ro: String { return self._s[652]! } + public var CheckoutInfo_SaveInfoHelp: String { return self._s[653]! } public func Notification_SecretChatMessageScreenshot(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[653]!, self._r[653]!, [_0]) + return formatWithArgumentRanges(self._s[654]!, self._r[654]!, [_0]) } - public var Login_CancelPhoneVerification: String { return self._s[654]! } - public var State_ConnectingToProxy: String { return self._s[655]! } - public var Calls_RatingTitle: String { return self._s[656]! } - public var Generic_ErrorMoreInfo: String { return self._s[657]! } - public var Appearance_PreviewReplyText: String { return self._s[658]! } - public var CheckoutInfo_ShippingInfoPostcodePlaceholder: String { return self._s[659]! } - public var SharedMedia_CategoryLinks: String { return self._s[660]! } - public var Calls_Missed: String { return self._s[661]! } - public var Cache_Photos: String { return self._s[665]! } - public var GroupPermission_NoAddMembers: String { return self._s[666]! } + public var Login_CancelPhoneVerification: String { return self._s[655]! } + public var State_ConnectingToProxy: String { return self._s[656]! } + public var Calls_RatingTitle: String { return self._s[657]! } + public var Generic_ErrorMoreInfo: String { return self._s[658]! } + public var Appearance_PreviewReplyText: String { return self._s[659]! } + public var CheckoutInfo_ShippingInfoPostcodePlaceholder: String { return self._s[660]! } + public var SharedMedia_CategoryLinks: String { return self._s[661]! } + public var Calls_Missed: String { return self._s[662]! } + public var Cache_Photos: String { return self._s[666]! } + public var GroupPermission_NoAddMembers: String { return self._s[667]! } public func Channel_AdminLog_MessageUnpinned(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[667]!, self._r[667]!, [_0]) + return formatWithArgumentRanges(self._s[668]!, self._r[668]!, [_0]) } - public var Conversation_ShareBotLocationConfirmationTitle: String { return self._s[668]! } - public var Settings_ProxyDisabled: String { return self._s[669]! } + public var Conversation_ShareBotLocationConfirmationTitle: String { return self._s[669]! } + public var Settings_ProxyDisabled: String { return self._s[670]! } public func Settings_ApplyProxyAlertCredentials(_ _1: String, _ _2: String, _ _3: String, _ _4: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[670]!, self._r[670]!, [_1, _2, _3, _4]) + return formatWithArgumentRanges(self._s[671]!, self._r[671]!, [_1, _2, _3, _4]) } public func Conversation_RestrictedMediaTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[671]!, self._r[671]!, [_0]) + return formatWithArgumentRanges(self._s[672]!, self._r[672]!, [_0]) } - public var Appearance_Title: String { return self._s[672]! } + public var Appearance_Title: String { return self._s[673]! } public func Time_MonthOfYear_m2(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[674]!, self._r[674]!, [_0]) + return formatWithArgumentRanges(self._s[675]!, self._r[675]!, [_0]) } - public var StickerPacksSettings_ShowStickersButtonHelp: String { return self._s[675]! } - public var Channel_EditMessageErrorGeneric: String { return self._s[676]! } - public var Privacy_Calls_IntegrationHelp: String { return self._s[677]! } - public var Preview_DeletePhoto: String { return self._s[678]! } - public var Appearance_AppIconFilledX: String { return self._s[679]! } - public var PrivacySettings_PrivacyTitle: String { return self._s[680]! } + public var StickerPacksSettings_ShowStickersButtonHelp: String { return self._s[676]! } + public var Channel_EditMessageErrorGeneric: String { return self._s[677]! } + public var Privacy_Calls_IntegrationHelp: String { return self._s[678]! } + public var Preview_DeletePhoto: String { return self._s[679]! } + public var Appearance_AppIconFilledX: String { return self._s[680]! } + public var PrivacySettings_PrivacyTitle: String { return self._s[681]! } public func Conversation_BotInteractiveUrlAlert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[681]!, self._r[681]!, [_0]) + return formatWithArgumentRanges(self._s[682]!, self._r[682]!, [_0]) } - public var Coub_TapForSound: String { return self._s[683]! } - public var Map_LocatingError: String { return self._s[684]! } - public var TwoStepAuth_EmailChangeSuccess: String { return self._s[686]! } - public var Passport_ForgottenPassword: String { return self._s[687]! } - public var GroupInfo_InviteLink_RevokeLink: String { return self._s[688]! } - public var StickerPacksSettings_ArchivedPacks: String { return self._s[689]! } - public var Login_TermsOfServiceSignupDecline: String { return self._s[691]! } - public var Channel_Moderator_AccessLevelRevoke: String { return self._s[692]! } - public var Message_Location: String { return self._s[693]! } - public var Passport_Identity_NamePlaceholder: String { return self._s[694]! } - public var Channel_Management_Title: String { return self._s[695]! } - public var DialogList_SearchSectionDialogs: String { return self._s[697]! } - public var Compose_NewChannel_Members: String { return self._s[698]! } + public var Coub_TapForSound: String { return self._s[684]! } + public var Map_LocatingError: String { return self._s[685]! } + public var TwoStepAuth_EmailChangeSuccess: String { return self._s[687]! } + public var Passport_ForgottenPassword: String { return self._s[688]! } + public var GroupInfo_InviteLink_RevokeLink: String { return self._s[689]! } + public var StickerPacksSettings_ArchivedPacks: String { return self._s[690]! } + public var Login_TermsOfServiceSignupDecline: String { return self._s[692]! } + public var Channel_Moderator_AccessLevelRevoke: String { return self._s[693]! } + public var Message_Location: String { return self._s[694]! } + public var Passport_Identity_NamePlaceholder: String { return self._s[695]! } + public var Channel_Management_Title: String { return self._s[696]! } + public var DialogList_SearchSectionDialogs: String { return self._s[698]! } + public var Compose_NewChannel_Members: String { return self._s[699]! } public func DialogList_SingleUploadingFileSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[699]!, self._r[699]!, [_0]) + return formatWithArgumentRanges(self._s[700]!, self._r[700]!, [_0]) } - public var GroupInfo_Location: String { return self._s[700]! } - public var AutoNightTheme_ScheduledFrom: String { return self._s[701]! } - public var PhotoEditor_WarmthTool: String { return self._s[702]! } - public var Passport_Language_tr: String { return self._s[703]! } + public var GroupInfo_Location: String { return self._s[701]! } + public var AutoNightTheme_ScheduledFrom: String { return self._s[702]! } + public var PhotoEditor_WarmthTool: String { return self._s[703]! } + public var Passport_Language_tr: String { return self._s[704]! } public func PUSH_MESSAGE_GAME_SCORE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[704]!, self._r[704]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[705]!, self._r[705]!, [_1, _2, _3]) } - public var Login_ResetAccountProtected_Reset: String { return self._s[706]! } - public var Watch_PhotoView_Title: String { return self._s[707]! } - public var Passport_Phone_Delete: String { return self._s[708]! } - public var Undo_ChatDeletedForBothSides: String { return self._s[709]! } - public var Conversation_EditingMessageMediaEditCurrentPhoto: String { return self._s[710]! } - public var GroupInfo_Permissions: String { return self._s[711]! } - public var PasscodeSettings_TurnPasscodeOff: String { return self._s[712]! } - public var Profile_ShareContactButton: String { return self._s[713]! } - public var ChatSettings_Other: String { return self._s[714]! } - public var UserInfo_NotificationsDisabled: String { return self._s[715]! } - public var CheckoutInfo_ShippingInfoCity: String { return self._s[716]! } - public var LastSeen_WithinAMonth: String { return self._s[717]! } - public var Conversation_ReportGroupLocation: String { return self._s[718]! } - public var Conversation_EncryptionCanceled: String { return self._s[719]! } - public var MediaPicker_GroupDescription: String { return self._s[720]! } - public var WebSearch_Images: String { return self._s[721]! } + public var Login_ResetAccountProtected_Reset: String { return self._s[707]! } + public var Watch_PhotoView_Title: String { return self._s[708]! } + public var Passport_Phone_Delete: String { return self._s[709]! } + public var Undo_ChatDeletedForBothSides: String { return self._s[710]! } + public var Conversation_EditingMessageMediaEditCurrentPhoto: String { return self._s[711]! } + public var GroupInfo_Permissions: String { return self._s[712]! } + public var PasscodeSettings_TurnPasscodeOff: String { return self._s[713]! } + public var Profile_ShareContactButton: String { return self._s[714]! } + public var ChatSettings_Other: String { return self._s[715]! } + public var UserInfo_NotificationsDisabled: String { return self._s[716]! } + public var CheckoutInfo_ShippingInfoCity: String { return self._s[717]! } + public var LastSeen_WithinAMonth: String { return self._s[718]! } + public var Conversation_ReportGroupLocation: String { return self._s[719]! } + public var Conversation_EncryptionCanceled: String { return self._s[720]! } + public var MediaPicker_GroupDescription: String { return self._s[721]! } + public var WebSearch_Images: String { return self._s[722]! } public func Channel_Management_PromotedBy(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[722]!, self._r[722]!, [_0]) + return formatWithArgumentRanges(self._s[723]!, self._r[723]!, [_0]) } - public var Message_Photo: String { return self._s[723]! } - public var PasscodeSettings_HelpBottom: String { return self._s[724]! } - public var AutoDownloadSettings_VideosTitle: String { return self._s[725]! } - public var Passport_Identity_AddDriversLicense: String { return self._s[726]! } - public var TwoStepAuth_EnterPasswordPassword: String { return self._s[727]! } - public var NotificationsSound_Calypso: String { return self._s[728]! } - public var Map_Map: String { return self._s[729]! } - public var CheckoutInfo_ReceiverInfoTitle: String { return self._s[731]! } - public var ChatSettings_TextSizeUnits: String { return self._s[732]! } - public var Common_of: String { return self._s[733]! } - public var Conversation_ForwardContacts: String { return self._s[735]! } + public var Message_Photo: String { return self._s[724]! } + public var PasscodeSettings_HelpBottom: String { return self._s[725]! } + public var AutoDownloadSettings_VideosTitle: String { return self._s[726]! } + public var Passport_Identity_AddDriversLicense: String { return self._s[727]! } + public var TwoStepAuth_EnterPasswordPassword: String { return self._s[728]! } + public var NotificationsSound_Calypso: String { return self._s[729]! } + public var Map_Map: String { return self._s[730]! } + public var CheckoutInfo_ReceiverInfoTitle: String { return self._s[732]! } + public var ChatSettings_TextSizeUnits: String { return self._s[733]! } + public var Common_of: String { return self._s[734]! } + public var Conversation_ForwardContacts: String { return self._s[736]! } public func Call_AnsweringWithAccount(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[737]!, self._r[737]!, [_0]) + return formatWithArgumentRanges(self._s[738]!, self._r[738]!, [_0]) } - public var Passport_Language_hy: String { return self._s[738]! } - public var Notifications_MessageNotificationsHelp: String { return self._s[739]! } - public var AutoDownloadSettings_Reset: String { return self._s[740]! } - public var Paint_ClearConfirm: String { return self._s[741]! } - public var Camera_VideoMode: String { return self._s[742]! } + public var Passport_Language_hy: String { return self._s[739]! } + public var Notifications_MessageNotificationsHelp: String { return self._s[740]! } + public var AutoDownloadSettings_Reset: String { return self._s[741]! } + public var Paint_ClearConfirm: String { return self._s[742]! } + public var Camera_VideoMode: String { return self._s[743]! } public func Conversation_RestrictedStickersTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[743]!, self._r[743]!, [_0]) + return formatWithArgumentRanges(self._s[744]!, self._r[744]!, [_0]) } - public var Privacy_Calls_AlwaysAllow_Placeholder: String { return self._s[744]! } - public var Conversation_ViewBackground: String { return self._s[745]! } - public var Passport_Language_el: String { return self._s[746]! } - public var PhotoEditor_Original: String { return self._s[747]! } - public var Settings_FAQ_Button: String { return self._s[749]! } - public var Channel_Setup_PublicNoLink: String { return self._s[751]! } - public var Conversation_UnsupportedMedia: String { return self._s[752]! } - public var Conversation_SlideToCancel: String { return self._s[753]! } - public var Passport_Identity_OneOfTypeInternalPassport: String { return self._s[754]! } - public var CheckoutInfo_ShippingInfoPostcode: String { return self._s[755]! } - public var Conversation_ReportSpamChannelConfirmation: String { return self._s[756]! } - public var AutoNightTheme_NotAvailable: String { return self._s[757]! } - public var Common_Create: String { return self._s[758]! } - public var Settings_ApplyProxyAlertEnable: String { return self._s[759]! } - public var Localization_ChooseLanguage: String { return self._s[761]! } - public var Settings_Proxy: String { return self._s[764]! } - public var Privacy_TopPeersHelp: String { return self._s[765]! } - public var CheckoutInfo_ShippingInfoCountryPlaceholder: String { return self._s[766]! } - public var Chat_UnsendMyMessages: String { return self._s[767]! } - public var TwoStepAuth_ConfirmationAbort: String { return self._s[768]! } + public var Privacy_Calls_AlwaysAllow_Placeholder: String { return self._s[745]! } + public var Conversation_ViewBackground: String { return self._s[746]! } + public var Passport_Language_el: String { return self._s[747]! } + public var PhotoEditor_Original: String { return self._s[748]! } + public var Settings_FAQ_Button: String { return self._s[750]! } + public var Channel_Setup_PublicNoLink: String { return self._s[752]! } + public var Conversation_UnsupportedMedia: String { return self._s[753]! } + public var Conversation_SlideToCancel: String { return self._s[754]! } + public var Passport_Identity_OneOfTypeInternalPassport: String { return self._s[755]! } + public var CheckoutInfo_ShippingInfoPostcode: String { return self._s[756]! } + public var Conversation_ReportSpamChannelConfirmation: String { return self._s[757]! } + public var AutoNightTheme_NotAvailable: String { return self._s[758]! } + public var Common_Create: String { return self._s[759]! } + public var Settings_ApplyProxyAlertEnable: String { return self._s[760]! } + public var Localization_ChooseLanguage: String { return self._s[762]! } + public var Settings_Proxy: String { return self._s[765]! } + public var Privacy_TopPeersHelp: String { return self._s[766]! } + public var CheckoutInfo_ShippingInfoCountryPlaceholder: String { return self._s[767]! } + public var Chat_UnsendMyMessages: String { return self._s[768]! } + public var TwoStepAuth_ConfirmationAbort: String { return self._s[769]! } public func Contacts_AccessDeniedHelpPortrait(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[770]!, self._r[770]!, [_0]) + return formatWithArgumentRanges(self._s[771]!, self._r[771]!, [_0]) } - public var Contacts_SortedByPresence: String { return self._s[771]! } - public var Passport_Identity_SurnamePlaceholder: String { return self._s[772]! } - public var Cache_Title: String { return self._s[773]! } + public var Contacts_SortedByPresence: String { return self._s[772]! } + public var Passport_Identity_SurnamePlaceholder: String { return self._s[773]! } + public var Cache_Title: String { return self._s[774]! } public func Login_PhoneBannedEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[774]!, self._r[774]!, [_0]) + return formatWithArgumentRanges(self._s[775]!, self._r[775]!, [_0]) } - public var TwoStepAuth_EmailCodeExpired: String { return self._s[775]! } - public var Channel_Moderator_Title: String { return self._s[776]! } - public var InstantPage_AutoNightTheme: String { return self._s[778]! } + public var TwoStepAuth_EmailCodeExpired: String { return self._s[776]! } + public var Channel_Moderator_Title: String { return self._s[777]! } + public var InstantPage_AutoNightTheme: String { return self._s[779]! } public func PUSH_MESSAGE_POLL(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[781]!, self._r[781]!, [_1]) + return formatWithArgumentRanges(self._s[782]!, self._r[782]!, [_1]) } - public var Passport_Scans_Upload: String { return self._s[782]! } - public var Undo_Undo: String { return self._s[784]! } - public var Contacts_AccessDeniedHelpON: String { return self._s[785]! } - public var TwoStepAuth_RemovePassword: String { return self._s[786]! } - public var Common_Delete: String { return self._s[787]! } - public var Contacts_AddPeopleNearby: String { return self._s[789]! } - public var Conversation_ContextMenuDelete: String { return self._s[790]! } - public var SocksProxySetup_Credentials: String { return self._s[791]! } - public var PasscodeSettings_AutoLock_Disabled: String { return self._s[793]! } - public var Passport_Address_OneOfTypeRentalAgreement: String { return self._s[796]! } - public var Conversation_ShareBotContactConfirmationTitle: String { return self._s[797]! } - public var Passport_Language_id: String { return self._s[799]! } - public var WallpaperSearch_ColorTeal: String { return self._s[800]! } - public var ChannelIntro_Title: String { return self._s[801]! } + public var Passport_Scans_Upload: String { return self._s[783]! } + public var Undo_Undo: String { return self._s[785]! } + public var Contacts_AccessDeniedHelpON: String { return self._s[786]! } + public var TwoStepAuth_RemovePassword: String { return self._s[787]! } + public var Common_Delete: String { return self._s[788]! } + public var Contacts_AddPeopleNearby: String { return self._s[790]! } + public var Conversation_ContextMenuDelete: String { return self._s[791]! } + public var SocksProxySetup_Credentials: String { return self._s[792]! } + public var PasscodeSettings_AutoLock_Disabled: String { return self._s[794]! } + public var Passport_Address_OneOfTypeRentalAgreement: String { return self._s[797]! } + public var Conversation_ShareBotContactConfirmationTitle: String { return self._s[798]! } + public var Passport_Language_id: String { return self._s[800]! } + public var WallpaperSearch_ColorTeal: String { return self._s[801]! } + public var ChannelIntro_Title: String { return self._s[802]! } public func Channel_AdminLog_MessageToggleSignaturesOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[802]!, self._r[802]!, [_0]) + return formatWithArgumentRanges(self._s[803]!, self._r[803]!, [_0]) } - public var Channel_Info_Description: String { return self._s[804]! } - public var Stickers_FavoriteStickers: String { return self._s[805]! } - public var Channel_BanUser_PermissionAddMembers: String { return self._s[806]! } - public var Notifications_DisplayNamesOnLockScreen: String { return self._s[807]! } - public var Calls_NoMissedCallsPlacehoder: String { return self._s[808]! } - public var Group_PublicLink_Placeholder: String { return self._s[809]! } - public var Notifications_ExceptionsDefaultSound: String { return self._s[810]! } + public var Channel_Info_Description: String { return self._s[805]! } + public var Stickers_FavoriteStickers: String { return self._s[806]! } + public var Channel_BanUser_PermissionAddMembers: String { return self._s[807]! } + public var Notifications_DisplayNamesOnLockScreen: String { return self._s[808]! } + public var Calls_NoMissedCallsPlacehoder: String { return self._s[809]! } + public var Group_PublicLink_Placeholder: String { return self._s[810]! } + public var Notifications_ExceptionsDefaultSound: String { return self._s[811]! } public func PUSH_CHANNEL_MESSAGE_POLL(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[811]!, self._r[811]!, [_1]) + return formatWithArgumentRanges(self._s[812]!, self._r[812]!, [_1]) } - public var TextFormat_Underline: String { return self._s[812]! } + public var TextFormat_Underline: String { return self._s[813]! } public func DialogList_SearchSubtitleFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[813]!, self._r[813]!, [_1, _2]) + return formatWithArgumentRanges(self._s[814]!, self._r[814]!, [_1, _2]) } public func Channel_AdminLog_MessageRemovedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[814]!, self._r[814]!, [_0]) + return formatWithArgumentRanges(self._s[815]!, self._r[815]!, [_0]) } public func Channel_OwnershipTransfer_TransferCompleted(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[815]!, self._r[815]!, [_1, _2]) + return formatWithArgumentRanges(self._s[816]!, self._r[816]!, [_1, _2]) } - public var GroupPermission_Delete: String { return self._s[816]! } - public var Passport_Language_uk: String { return self._s[817]! } - public var StickerPack_HideStickers: String { return self._s[819]! } - public var ChangePhoneNumberNumber_NumberPlaceholder: String { return self._s[820]! } + public var GroupPermission_Delete: String { return self._s[817]! } + public var Passport_Language_uk: String { return self._s[818]! } + public var StickerPack_HideStickers: String { return self._s[820]! } + public var ChangePhoneNumberNumber_NumberPlaceholder: String { return self._s[821]! } public func PUSH_CHAT_MESSAGE_PHOTO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[821]!, self._r[821]!, [_1, _2]) + return formatWithArgumentRanges(self._s[822]!, self._r[822]!, [_1, _2]) } - public var Activity_UploadingVideoMessage: String { return self._s[822]! } + public var Activity_UploadingVideoMessage: String { return self._s[823]! } public func GroupPermission_ApplyAlertText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[823]!, self._r[823]!, [_0]) + return formatWithArgumentRanges(self._s[824]!, self._r[824]!, [_0]) } - public var Channel_TitleInfo: String { return self._s[824]! } - public var StickerPacksSettings_ArchivedPacks_Info: String { return self._s[825]! } - public var Settings_CallSettings: String { return self._s[826]! } - public var Camera_SquareMode: String { return self._s[827]! } - public var GroupInfo_SharedMediaNone: String { return self._s[828]! } + public var Channel_TitleInfo: String { return self._s[825]! } + public var StickerPacksSettings_ArchivedPacks_Info: String { return self._s[826]! } + public var Settings_CallSettings: String { return self._s[827]! } + public var Camera_SquareMode: String { return self._s[828]! } + public var GroupInfo_SharedMediaNone: String { return self._s[829]! } public func PUSH_MESSAGE_VIDEO_SECRET(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[829]!, self._r[829]!, [_1]) + return formatWithArgumentRanges(self._s[830]!, self._r[830]!, [_1]) } - public var Bot_GenericBotStatus: String { return self._s[830]! } - public var Application_Update: String { return self._s[832]! } - public var Month_ShortJanuary: String { return self._s[833]! } - public var Contacts_PermissionsKeepDisabled: String { return self._s[834]! } - public var Channel_AdminLog_BanReadMessages: String { return self._s[835]! } - public var Settings_AppLanguage_Unofficial: String { return self._s[836]! } - public var Passport_Address_Street2Placeholder: String { return self._s[837]! } + public var Bot_GenericBotStatus: String { return self._s[831]! } + public var Application_Update: String { return self._s[833]! } + public var Month_ShortJanuary: String { return self._s[834]! } + public var Contacts_PermissionsKeepDisabled: String { return self._s[835]! } + public var Channel_AdminLog_BanReadMessages: String { return self._s[836]! } + public var Settings_AppLanguage_Unofficial: String { return self._s[837]! } + public var Passport_Address_Street2Placeholder: String { return self._s[838]! } public func Map_LiveLocationShortHour(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[838]!, self._r[838]!, [_0]) + return formatWithArgumentRanges(self._s[839]!, self._r[839]!, [_0]) } - public var NetworkUsageSettings_Cellular: String { return self._s[839]! } - public var Appearance_PreviewOutgoingText: String { return self._s[840]! } - public var Notifications_PermissionsAllowInSettings: String { return self._s[841]! } - public var AutoDownloadSettings_OnForAll: String { return self._s[843]! } - public var Map_Directions: String { return self._s[844]! } - public var Passport_FieldIdentityTranslationHelp: String { return self._s[846]! } - public var Appearance_ThemeDay: String { return self._s[847]! } - public var LogoutOptions_LogOut: String { return self._s[848]! } - public var Group_PublicLink_Title: String { return self._s[850]! } - public var Channel_AddBotErrorNoRights: String { return self._s[851]! } - public var Passport_Identity_AddPassport: String { return self._s[852]! } - public var LocalGroup_ButtonTitle: String { return self._s[853]! } - public var Call_Message: String { return self._s[854]! } - public var PhotoEditor_ExposureTool: String { return self._s[855]! } - public var Passport_FieldOneOf_Delimeter: String { return self._s[857]! } - public var Channel_AdminLog_CanBanUsers: String { return self._s[859]! } - public var Appearance_Preview: String { return self._s[860]! } - public var Compose_ChannelMembers: String { return self._s[861]! } - public var Conversation_DeleteManyMessages: String { return self._s[862]! } - public var ReportPeer_ReasonOther_Title: String { return self._s[863]! } - public var Checkout_ErrorProviderAccountTimeout: String { return self._s[864]! } - public var TwoStepAuth_ResetAccountConfirmation: String { return self._s[865]! } - public var Channel_Stickers_CreateYourOwn: String { return self._s[868]! } - public var Conversation_UpdateTelegram: String { return self._s[869]! } + public var NetworkUsageSettings_Cellular: String { return self._s[840]! } + public var Appearance_PreviewOutgoingText: String { return self._s[841]! } + public var Notifications_PermissionsAllowInSettings: String { return self._s[842]! } + public var AutoDownloadSettings_OnForAll: String { return self._s[844]! } + public var Map_Directions: String { return self._s[845]! } + public var Passport_FieldIdentityTranslationHelp: String { return self._s[847]! } + public var Appearance_ThemeDay: String { return self._s[848]! } + public var LogoutOptions_LogOut: String { return self._s[849]! } + public var Group_PublicLink_Title: String { return self._s[851]! } + public var Channel_AddBotErrorNoRights: String { return self._s[852]! } + public var Passport_Identity_AddPassport: String { return self._s[853]! } + public var LocalGroup_ButtonTitle: String { return self._s[854]! } + public var Call_Message: String { return self._s[855]! } + public var PhotoEditor_ExposureTool: String { return self._s[856]! } + public var Passport_FieldOneOf_Delimeter: String { return self._s[858]! } + public var Channel_AdminLog_CanBanUsers: String { return self._s[860]! } + public var Appearance_Preview: String { return self._s[861]! } + public var Compose_ChannelMembers: String { return self._s[862]! } + public var Conversation_DeleteManyMessages: String { return self._s[863]! } + public var ReportPeer_ReasonOther_Title: String { return self._s[864]! } + public var Checkout_ErrorProviderAccountTimeout: String { return self._s[865]! } + public var TwoStepAuth_ResetAccountConfirmation: String { return self._s[866]! } + public var Channel_Stickers_CreateYourOwn: String { return self._s[869]! } + public var Conversation_UpdateTelegram: String { return self._s[870]! } public func Notification_PinnedPhotoMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[870]!, self._r[870]!, [_0]) + return formatWithArgumentRanges(self._s[871]!, self._r[871]!, [_0]) } public func PUSH_PINNED_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[871]!, self._r[871]!, [_1]) + return formatWithArgumentRanges(self._s[872]!, self._r[872]!, [_1]) } - public var GroupInfo_Administrators_Title: String { return self._s[872]! } - public var Privacy_Forwards_PreviewMessageText: String { return self._s[873]! } + public var GroupInfo_Administrators_Title: String { return self._s[873]! } + public var Privacy_Forwards_PreviewMessageText: String { return self._s[874]! } public func PrivacySettings_LastSeenNobodyPlus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[874]!, self._r[874]!, [_0]) + return formatWithArgumentRanges(self._s[875]!, self._r[875]!, [_0]) } - public var Tour_Title3: String { return self._s[875]! } - public var Channel_EditAdmin_PermissionInviteSubscribers: String { return self._s[876]! } - public var Clipboard_SendPhoto: String { return self._s[880]! } - public var MediaPicker_Videos: String { return self._s[881]! } - public var Passport_Email_Title: String { return self._s[882]! } + public var Tour_Title3: String { return self._s[876]! } + public var Channel_EditAdmin_PermissionInviteSubscribers: String { return self._s[877]! } + public var Clipboard_SendPhoto: String { return self._s[881]! } + public var MediaPicker_Videos: String { return self._s[882]! } + public var Passport_Email_Title: String { return self._s[883]! } public func PrivacySettings_LastSeenEverybodyMinus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[883]!, self._r[883]!, [_0]) + return formatWithArgumentRanges(self._s[884]!, self._r[884]!, [_0]) } - public var StickerPacksSettings_Title: String { return self._s[884]! } - public var Conversation_MessageDialogDelete: String { return self._s[885]! } - public var Privacy_Calls_CustomHelp: String { return self._s[887]! } - public var Message_Wallpaper: String { return self._s[888]! } - public var MemberSearch_BotSection: String { return self._s[889]! } - public var GroupInfo_SetSound: String { return self._s[890]! } - public var Core_ServiceUserStatus: String { return self._s[891]! } - public var LiveLocationUpdated_JustNow: String { return self._s[892]! } - public var Call_StatusFailed: String { return self._s[893]! } - public var TwoStepAuth_SetupPasswordDescription: String { return self._s[894]! } - public var TwoStepAuth_SetPassword: String { return self._s[895]! } - public var Permissions_PeopleNearbyText_v0: String { return self._s[896]! } + public var StickerPacksSettings_Title: String { return self._s[885]! } + public var Conversation_MessageDialogDelete: String { return self._s[886]! } + public var Privacy_Calls_CustomHelp: String { return self._s[888]! } + public var Message_Wallpaper: String { return self._s[889]! } + public var MemberSearch_BotSection: String { return self._s[890]! } + public var GroupInfo_SetSound: String { return self._s[891]! } + public var Core_ServiceUserStatus: String { return self._s[892]! } + public var LiveLocationUpdated_JustNow: String { return self._s[893]! } + public var Call_StatusFailed: String { return self._s[894]! } + public var TwoStepAuth_SetupPasswordDescription: String { return self._s[895]! } + public var TwoStepAuth_SetPassword: String { return self._s[896]! } + public var Permissions_PeopleNearbyText_v0: String { return self._s[897]! } public func SocksProxySetup_ProxyStatusPing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[898]!, self._r[898]!, [_0]) + return formatWithArgumentRanges(self._s[899]!, self._r[899]!, [_0]) } - public var Calls_SubmitRating: String { return self._s[899]! } - public var Profile_Username: String { return self._s[900]! } - public var Bot_DescriptionTitle: String { return self._s[901]! } - public var MaskStickerSettings_Title: String { return self._s[902]! } - public var SharedMedia_CategoryOther: String { return self._s[903]! } - public var GroupInfo_SetGroupPhoto: String { return self._s[904]! } - public var Common_NotNow: String { return self._s[905]! } - public var CallFeedback_IncludeLogsInfo: String { return self._s[906]! } - public var Conversation_ShareMyPhoneNumber: String { return self._s[907]! } - public var Map_Location: String { return self._s[908]! } - public var Invitation_JoinGroup: String { return self._s[909]! } - public var AutoDownloadSettings_Title: String { return self._s[911]! } - public var Conversation_DiscardVoiceMessageDescription: String { return self._s[912]! } - public var Channel_ErrorAddBlocked: String { return self._s[913]! } - public var Conversation_UnblockUser: String { return self._s[914]! } - public var Watch_Bot_Restart: String { return self._s[915]! } - public var TwoStepAuth_Title: String { return self._s[916]! } - public var Channel_AdminLog_BanSendMessages: String { return self._s[917]! } - public var Checkout_ShippingMethod: String { return self._s[918]! } - public var Passport_Identity_OneOfTypeIdentityCard: String { return self._s[919]! } + public var Calls_SubmitRating: String { return self._s[900]! } + public var Profile_Username: String { return self._s[901]! } + public var Bot_DescriptionTitle: String { return self._s[902]! } + public var MaskStickerSettings_Title: String { return self._s[903]! } + public var SharedMedia_CategoryOther: String { return self._s[904]! } + public var GroupInfo_SetGroupPhoto: String { return self._s[905]! } + public var Common_NotNow: String { return self._s[906]! } + public var CallFeedback_IncludeLogsInfo: String { return self._s[907]! } + public var Conversation_ShareMyPhoneNumber: String { return self._s[908]! } + public var Map_Location: String { return self._s[909]! } + public var Invitation_JoinGroup: String { return self._s[910]! } + public var AutoDownloadSettings_Title: String { return self._s[912]! } + public var Conversation_DiscardVoiceMessageDescription: String { return self._s[913]! } + public var Channel_ErrorAddBlocked: String { return self._s[914]! } + public var Conversation_UnblockUser: String { return self._s[915]! } + public var Watch_Bot_Restart: String { return self._s[916]! } + public var TwoStepAuth_Title: String { return self._s[917]! } + public var Channel_AdminLog_BanSendMessages: String { return self._s[918]! } + public var Checkout_ShippingMethod: String { return self._s[919]! } + public var Passport_Identity_OneOfTypeIdentityCard: String { return self._s[920]! } public func PUSH_CHAT_MESSAGE_STICKER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[920]!, self._r[920]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[921]!, self._r[921]!, [_1, _2, _3]) } public func Chat_UnsendMyMessagesAlertTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[922]!, self._r[922]!, [_0]) - } - public func Channel_Username_LinkHint(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[923]!, self._r[923]!, [_0]) } - public var SettingsSearch_Synonyms_Data_AutoplayGifs: String { return self._s[924]! } - public var AuthSessions_TerminateOtherSessions: String { return self._s[925]! } - public var Contacts_FailedToSendInvitesMessage: String { return self._s[926]! } - public var PrivacySettings_TwoStepAuth: String { return self._s[927]! } - public var Notification_Exceptions_PreviewAlwaysOn: String { return self._s[928]! } - public var SettingsSearch_Synonyms_Privacy_Passcode: String { return self._s[929]! } - public var Conversation_EditingMessagePanelMedia: String { return self._s[930]! } - public var Checkout_PaymentMethod_Title: String { return self._s[931]! } - public var SocksProxySetup_Connection: String { return self._s[932]! } - public var Group_MessagePhotoRemoved: String { return self._s[933]! } - public var Channel_Stickers_NotFound: String { return self._s[935]! } - public var Group_About_Help: String { return self._s[936]! } - public var Notification_PassportValueProofOfIdentity: String { return self._s[937]! } - public var PeopleNearby_Title: String { return self._s[939]! } - public func ApplyLanguage_ChangeLanguageOfficialText(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[940]!, self._r[940]!, [_1]) + public func Channel_Username_LinkHint(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[924]!, self._r[924]!, [_0]) } - public var CheckoutInfo_ShippingInfoStatePlaceholder: String { return self._s[942]! } - public var Notifications_GroupNotificationsExceptionsHelp: String { return self._s[943]! } - public var SocksProxySetup_Password: String { return self._s[944]! } - public var Notifications_PermissionsEnable: String { return self._s[945]! } - public var TwoStepAuth_ChangeEmail: String { return self._s[947]! } + public var SettingsSearch_Synonyms_Data_AutoplayGifs: String { return self._s[925]! } + public var AuthSessions_TerminateOtherSessions: String { return self._s[926]! } + public var Contacts_FailedToSendInvitesMessage: String { return self._s[927]! } + public var PrivacySettings_TwoStepAuth: String { return self._s[928]! } + public var Notification_Exceptions_PreviewAlwaysOn: String { return self._s[929]! } + public var SettingsSearch_Synonyms_Privacy_Passcode: String { return self._s[930]! } + public var Conversation_EditingMessagePanelMedia: String { return self._s[931]! } + public var Checkout_PaymentMethod_Title: String { return self._s[932]! } + public var SocksProxySetup_Connection: String { return self._s[933]! } + public var Group_MessagePhotoRemoved: String { return self._s[934]! } + public var Channel_Stickers_NotFound: String { return self._s[936]! } + public var Group_About_Help: String { return self._s[937]! } + public var Notification_PassportValueProofOfIdentity: String { return self._s[938]! } + public var PeopleNearby_Title: String { return self._s[940]! } + public func ApplyLanguage_ChangeLanguageOfficialText(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[941]!, self._r[941]!, [_1]) + } + public var CheckoutInfo_ShippingInfoStatePlaceholder: String { return self._s[943]! } + public var Notifications_GroupNotificationsExceptionsHelp: String { return self._s[944]! } + public var SocksProxySetup_Password: String { return self._s[945]! } + public var Notifications_PermissionsEnable: String { return self._s[946]! } + public var TwoStepAuth_ChangeEmail: String { return self._s[948]! } public func Channel_AdminLog_MessageInvitedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[948]!, self._r[948]!, [_1]) + return formatWithArgumentRanges(self._s[949]!, self._r[949]!, [_1]) } public func Time_MonthOfYear_m10(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[950]!, self._r[950]!, [_0]) + return formatWithArgumentRanges(self._s[951]!, self._r[951]!, [_0]) } - public var Passport_Identity_TypeDriversLicense: String { return self._s[951]! } - public var ArchivedPacksAlert_Title: String { return self._s[952]! } + public var Passport_Identity_TypeDriversLicense: String { return self._s[952]! } + public var ArchivedPacksAlert_Title: String { return self._s[953]! } public func Time_PreciseDate_m7(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[953]!, self._r[953]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[954]!, self._r[954]!, [_1, _2, _3]) } - public var PrivacyLastSeenSettings_GroupsAndChannelsHelp: String { return self._s[954]! } - public var Privacy_Calls_NeverAllow_Placeholder: String { return self._s[956]! } - public var Conversation_StatusTyping: String { return self._s[957]! } - public var Broadcast_AdminLog_EmptyText: String { return self._s[958]! } - public var Notification_PassportValueProofOfAddress: String { return self._s[959]! } - public var UserInfo_CreateNewContact: String { return self._s[960]! } - public var Passport_Identity_FrontSide: String { return self._s[961]! } - public var Login_PhoneNumberAlreadyAuthorizedSwitch: String { return self._s[962]! } - public var Calls_CallTabTitle: String { return self._s[963]! } - public var Channel_AdminLog_ChannelEmptyText: String { return self._s[964]! } + public var PrivacyLastSeenSettings_GroupsAndChannelsHelp: String { return self._s[955]! } + public var Privacy_Calls_NeverAllow_Placeholder: String { return self._s[957]! } + public var Conversation_StatusTyping: String { return self._s[958]! } + public var Broadcast_AdminLog_EmptyText: String { return self._s[959]! } + public var Notification_PassportValueProofOfAddress: String { return self._s[960]! } + public var UserInfo_CreateNewContact: String { return self._s[961]! } + public var Passport_Identity_FrontSide: String { return self._s[962]! } + public var Login_PhoneNumberAlreadyAuthorizedSwitch: String { return self._s[963]! } + public var Calls_CallTabTitle: String { return self._s[964]! } + public var Channel_AdminLog_ChannelEmptyText: String { return self._s[965]! } public func Login_BannedPhoneBody(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[965]!, self._r[965]!, [_0]) + return formatWithArgumentRanges(self._s[966]!, self._r[966]!, [_0]) } - public var Watch_UserInfo_MuteTitle: String { return self._s[966]! } - public var SharedMedia_EmptyMusicText: String { return self._s[967]! } - public var PasscodeSettings_AutoLock_IfAwayFor_1minute: String { return self._s[968]! } - public var Paint_Stickers: String { return self._s[969]! } - public var Privacy_GroupsAndChannels: String { return self._s[970]! } - public var UserInfo_AddContact: String { return self._s[972]! } + public var Watch_UserInfo_MuteTitle: String { return self._s[967]! } + public var SharedMedia_EmptyMusicText: String { return self._s[968]! } + public var PasscodeSettings_AutoLock_IfAwayFor_1minute: String { return self._s[969]! } + public var Paint_Stickers: String { return self._s[970]! } + public var Privacy_GroupsAndChannels: String { return self._s[971]! } + public var UserInfo_AddContact: String { return self._s[973]! } public func Conversation_MessageViaUser(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[973]!, self._r[973]!, [_0]) + return formatWithArgumentRanges(self._s[974]!, self._r[974]!, [_0]) } - public var PhoneNumberHelp_ChangeNumber: String { return self._s[975]! } + public var PhoneNumberHelp_ChangeNumber: String { return self._s[976]! } public func ChatList_ClearChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[977]!, self._r[977]!, [_0]) + return formatWithArgumentRanges(self._s[978]!, self._r[978]!, [_0]) } - public var DialogList_NoMessagesTitle: String { return self._s[978]! } - public var EditProfile_NameAndPhotoHelp: String { return self._s[979]! } - public var BlockedUsers_BlockUser: String { return self._s[980]! } - public var Notifications_PermissionsOpenSettings: String { return self._s[981]! } - public var MediaPicker_UngroupDescription: String { return self._s[982]! } - public var Watch_NoConnection: String { return self._s[983]! } - public var Month_GenSeptember: String { return self._s[984]! } - public var Conversation_ViewGroup: String { return self._s[985]! } - public var Channel_AdminLogFilter_EventsLeavingSubscribers: String { return self._s[988]! } - public var Privacy_Forwards_AlwaysLink: String { return self._s[989]! } - public var Channel_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[990]! } - public var Passport_FieldOneOf_FinalDelimeter: String { return self._s[991]! } - public var MediaPicker_CameraRoll: String { return self._s[993]! } - public var Month_GenAugust: String { return self._s[994]! } - public var AccessDenied_VideoMessageMicrophone: String { return self._s[995]! } - public var SharedMedia_EmptyText: String { return self._s[996]! } - public var Map_ShareLiveLocation: String { return self._s[997]! } - public var Calls_All: String { return self._s[998]! } - public var Appearance_ThemeNight: String { return self._s[1001]! } - public var Conversation_HoldForAudio: String { return self._s[1002]! } - public var SettingsSearch_Synonyms_Support: String { return self._s[1005]! } - public var GroupInfo_GroupHistoryHidden: String { return self._s[1006]! } - public var SocksProxySetup_Secret: String { return self._s[1007]! } + public var DialogList_NoMessagesTitle: String { return self._s[979]! } + public var EditProfile_NameAndPhotoHelp: String { return self._s[980]! } + public var BlockedUsers_BlockUser: String { return self._s[981]! } + public var Notifications_PermissionsOpenSettings: String { return self._s[982]! } + public var MediaPicker_UngroupDescription: String { return self._s[983]! } + public var Watch_NoConnection: String { return self._s[984]! } + public var Month_GenSeptember: String { return self._s[985]! } + public var Conversation_ViewGroup: String { return self._s[986]! } + public var Channel_AdminLogFilter_EventsLeavingSubscribers: String { return self._s[989]! } + public var Privacy_Forwards_AlwaysLink: String { return self._s[990]! } + public var Channel_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[991]! } + public var Passport_FieldOneOf_FinalDelimeter: String { return self._s[992]! } + public var MediaPicker_CameraRoll: String { return self._s[994]! } + public var Month_GenAugust: String { return self._s[995]! } + public var AccessDenied_VideoMessageMicrophone: String { return self._s[996]! } + public var SharedMedia_EmptyText: String { return self._s[997]! } + public var Map_ShareLiveLocation: String { return self._s[998]! } + public var Calls_All: String { return self._s[999]! } + public var Appearance_ThemeNight: String { return self._s[1002]! } + public var Conversation_HoldForAudio: String { return self._s[1003]! } + public var SettingsSearch_Synonyms_Support: String { return self._s[1006]! } + public var GroupInfo_GroupHistoryHidden: String { return self._s[1007]! } + public var SocksProxySetup_Secret: String { return self._s[1008]! } public func Activity_RemindAboutChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1008]!, self._r[1008]!, [_0]) + return formatWithArgumentRanges(self._s[1009]!, self._r[1009]!, [_0]) } - public var Channel_BanList_RestrictedTitle: String { return self._s[1010]! } - public var Conversation_Location: String { return self._s[1011]! } + public var Channel_BanList_RestrictedTitle: String { return self._s[1011]! } + public var Conversation_Location: String { return self._s[1012]! } public func AutoDownloadSettings_UpToFor(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1012]!, self._r[1012]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1013]!, self._r[1013]!, [_1, _2]) } - public var ChatSettings_AutoDownloadPhotos: String { return self._s[1014]! } - public var SettingsSearch_Synonyms_Privacy_Title: String { return self._s[1015]! } - public var Notifications_PermissionsText: String { return self._s[1016]! } - public var SettingsSearch_Synonyms_Data_SaveIncomingPhotos: String { return self._s[1017]! } - public var Call_Flip: String { return self._s[1018]! } - public var SocksProxySetup_ProxyStatusConnecting: String { return self._s[1019]! } - public var Channel_EditAdmin_PermissionPinMessages: String { return self._s[1021]! } - public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[1023]! } - public var Channel_TooMuchBots: String { return self._s[1025]! } - public var Passport_DeletePassportConfirmation: String { return self._s[1026]! } - public var Login_InvalidCodeError: String { return self._s[1027]! } - public var StickerPacksSettings_FeaturedPacks: String { return self._s[1028]! } + public var ChatSettings_AutoDownloadPhotos: String { return self._s[1015]! } + public var SettingsSearch_Synonyms_Privacy_Title: String { return self._s[1016]! } + public var Notifications_PermissionsText: String { return self._s[1017]! } + public var SettingsSearch_Synonyms_Data_SaveIncomingPhotos: String { return self._s[1018]! } + public var Call_Flip: String { return self._s[1019]! } + public var SocksProxySetup_ProxyStatusConnecting: String { return self._s[1020]! } + public var Channel_EditAdmin_PermissionPinMessages: String { return self._s[1022]! } + public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[1024]! } + public var Channel_TooMuchBots: String { return self._s[1026]! } + public var Passport_DeletePassportConfirmation: String { return self._s[1027]! } + public var Login_InvalidCodeError: String { return self._s[1028]! } + public var StickerPacksSettings_FeaturedPacks: String { return self._s[1029]! } public func ChatList_DeleteSecretChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1029]!, self._r[1029]!, [_0]) - } - public func GroupInfo_InvitationLinkAcceptChannel(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1030]!, self._r[1030]!, [_0]) } - public var Call_CallInProgressTitle: String { return self._s[1031]! } - public var Month_ShortSeptember: String { return self._s[1032]! } - public var Watch_ChannelInfo_Title: String { return self._s[1033]! } - public var ChatList_DeleteSavedMessagesConfirmation: String { return self._s[1036]! } - public var DialogList_PasscodeLockHelp: String { return self._s[1037]! } - public var Notifications_Badge_IncludePublicGroups: String { return self._s[1038]! } - public var Channel_AdminLogFilter_EventsTitle: String { return self._s[1039]! } - public var PhotoEditor_CropReset: String { return self._s[1040]! } - public var Group_Username_CreatePrivateLinkHelp: String { return self._s[1042]! } - public var Channel_Management_LabelEditor: String { return self._s[1043]! } - public var Passport_Identity_LatinNameHelp: String { return self._s[1045]! } - public var PhotoEditor_HighlightsTool: String { return self._s[1046]! } - public var UserInfo_Title: String { return self._s[1047]! } - public var ChatList_HideAction: String { return self._s[1048]! } - public var AccessDenied_Title: String { return self._s[1049]! } - public var DialogList_SearchLabel: String { return self._s[1050]! } - public var Group_Setup_HistoryHidden: String { return self._s[1051]! } - public var TwoStepAuth_PasswordChangeSuccess: String { return self._s[1052]! } - public var State_Updating: String { return self._s[1054]! } - public var Contacts_TabTitle: String { return self._s[1055]! } - public var Notifications_Badge_CountUnreadMessages: String { return self._s[1057]! } - public var GroupInfo_GroupHistory: String { return self._s[1058]! } - public var Conversation_UnsupportedMediaPlaceholder: String { return self._s[1059]! } - public var Wallpaper_SetColor: String { return self._s[1060]! } - public var CheckoutInfo_ShippingInfoCountry: String { return self._s[1061]! } - public var SettingsSearch_Synonyms_SavedMessages: String { return self._s[1062]! } - public var Passport_Identity_OneOfTypeDriversLicense: String { return self._s[1063]! } - public var Contacts_NotRegisteredSection: String { return self._s[1064]! } + public func GroupInfo_InvitationLinkAcceptChannel(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1031]!, self._r[1031]!, [_0]) + } + public var Call_CallInProgressTitle: String { return self._s[1032]! } + public var Month_ShortSeptember: String { return self._s[1033]! } + public var Watch_ChannelInfo_Title: String { return self._s[1034]! } + public var ChatList_DeleteSavedMessagesConfirmation: String { return self._s[1037]! } + public var DialogList_PasscodeLockHelp: String { return self._s[1038]! } + public var Notifications_Badge_IncludePublicGroups: String { return self._s[1039]! } + public var Channel_AdminLogFilter_EventsTitle: String { return self._s[1040]! } + public var PhotoEditor_CropReset: String { return self._s[1041]! } + public var Group_Username_CreatePrivateLinkHelp: String { return self._s[1043]! } + public var Channel_Management_LabelEditor: String { return self._s[1044]! } + public var Passport_Identity_LatinNameHelp: String { return self._s[1046]! } + public var PhotoEditor_HighlightsTool: String { return self._s[1047]! } + public var UserInfo_Title: String { return self._s[1048]! } + public var ChatList_HideAction: String { return self._s[1049]! } + public var AccessDenied_Title: String { return self._s[1050]! } + public var DialogList_SearchLabel: String { return self._s[1051]! } + public var Group_Setup_HistoryHidden: String { return self._s[1052]! } + public var TwoStepAuth_PasswordChangeSuccess: String { return self._s[1053]! } + public var State_Updating: String { return self._s[1055]! } + public var Contacts_TabTitle: String { return self._s[1056]! } + public var Notifications_Badge_CountUnreadMessages: String { return self._s[1058]! } + public var GroupInfo_GroupHistory: String { return self._s[1059]! } + public var Conversation_UnsupportedMediaPlaceholder: String { return self._s[1060]! } + public var Wallpaper_SetColor: String { return self._s[1061]! } + public var CheckoutInfo_ShippingInfoCountry: String { return self._s[1062]! } + public var SettingsSearch_Synonyms_SavedMessages: String { return self._s[1063]! } + public var Passport_Identity_OneOfTypeDriversLicense: String { return self._s[1064]! } + public var Contacts_NotRegisteredSection: String { return self._s[1065]! } public func Time_PreciseDate_m4(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1065]!, self._r[1065]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1066]!, self._r[1066]!, [_1, _2, _3]) } - public var Paint_Clear: String { return self._s[1066]! } - public var StickerPacksSettings_ArchivedMasks: String { return self._s[1067]! } - public var SocksProxySetup_Connecting: String { return self._s[1068]! } - public var ExplicitContent_AlertChannel: String { return self._s[1069]! } - public var CreatePoll_AllOptionsAdded: String { return self._s[1070]! } - public var Conversation_Contact: String { return self._s[1071]! } - public var Login_CodeExpired: String { return self._s[1072]! } - public var Passport_DiscardMessageAction: String { return self._s[1073]! } - public var Channel_AdminLog_MessagePreviousDescription: String { return self._s[1074]! } - public var Channel_AdminLog_EmptyMessageText: String { return self._s[1075]! } - public var SettingsSearch_Synonyms_Data_NetworkUsage: String { return self._s[1076]! } - public var Month_ShortApril: String { return self._s[1077]! } - public var AuthSessions_CurrentSession: String { return self._s[1078]! } - public var WallpaperPreview_CropTopText: String { return self._s[1082]! } - public var PrivacySettings_DeleteAccountIfAwayFor: String { return self._s[1083]! } - public var CheckoutInfo_ShippingInfoTitle: String { return self._s[1084]! } - public var Channel_Setup_TypePrivate: String { return self._s[1086]! } - public var Forward_ChannelReadOnly: String { return self._s[1089]! } - public var PhotoEditor_CurvesBlue: String { return self._s[1090]! } - public var AddContact_SharedContactException: String { return self._s[1091]! } - public var UserInfo_BotPrivacy: String { return self._s[1092]! } - public var Notification_PassportValueEmail: String { return self._s[1093]! } - public var EmptyGroupInfo_Subtitle: String { return self._s[1094]! } - public var GroupPermission_NewTitle: String { return self._s[1095]! } - public var CallFeedback_ReasonDropped: String { return self._s[1096]! } - public var GroupInfo_Permissions_AddException: String { return self._s[1097]! } - public var Channel_SignMessages_Help: String { return self._s[1099]! } - public var Undo_ChatDeleted: String { return self._s[1101]! } - public var Conversation_ChatBackground: String { return self._s[1102]! } - public var ChannelMembers_WhoCanAddMembers_Admins: String { return self._s[1103]! } - public var FastTwoStepSetup_EmailPlaceholder: String { return self._s[1104]! } - public var Passport_Language_pt: String { return self._s[1105]! } - public var NotificationsSound_Popcorn: String { return self._s[1108]! } - public var AutoNightTheme_Disabled: String { return self._s[1109]! } - public var BlockedUsers_LeavePrefix: String { return self._s[1110]! } - public var WallpaperPreview_CustomColorTopText: String { return self._s[1111]! } - public var Contacts_PermissionsSuppressWarningText: String { return self._s[1112]! } - public var WallpaperSearch_ColorBlue: String { return self._s[1113]! } + public var Paint_Clear: String { return self._s[1067]! } + public var StickerPacksSettings_ArchivedMasks: String { return self._s[1068]! } + public var SocksProxySetup_Connecting: String { return self._s[1069]! } + public var ExplicitContent_AlertChannel: String { return self._s[1070]! } + public var CreatePoll_AllOptionsAdded: String { return self._s[1071]! } + public var Conversation_Contact: String { return self._s[1072]! } + public var Login_CodeExpired: String { return self._s[1073]! } + public var Passport_DiscardMessageAction: String { return self._s[1074]! } + public var Channel_AdminLog_MessagePreviousDescription: String { return self._s[1075]! } + public var Channel_AdminLog_EmptyMessageText: String { return self._s[1076]! } + public var SettingsSearch_Synonyms_Data_NetworkUsage: String { return self._s[1077]! } + public var Month_ShortApril: String { return self._s[1078]! } + public var AuthSessions_CurrentSession: String { return self._s[1079]! } + public var WallpaperPreview_CropTopText: String { return self._s[1083]! } + public var PrivacySettings_DeleteAccountIfAwayFor: String { return self._s[1084]! } + public var CheckoutInfo_ShippingInfoTitle: String { return self._s[1085]! } + public var Channel_Setup_TypePrivate: String { return self._s[1087]! } + public var Forward_ChannelReadOnly: String { return self._s[1090]! } + public var PhotoEditor_CurvesBlue: String { return self._s[1091]! } + public var AddContact_SharedContactException: String { return self._s[1092]! } + public var UserInfo_BotPrivacy: String { return self._s[1093]! } + public var Notification_PassportValueEmail: String { return self._s[1094]! } + public var EmptyGroupInfo_Subtitle: String { return self._s[1095]! } + public var GroupPermission_NewTitle: String { return self._s[1096]! } + public var CallFeedback_ReasonDropped: String { return self._s[1097]! } + public var GroupInfo_Permissions_AddException: String { return self._s[1098]! } + public var Channel_SignMessages_Help: String { return self._s[1100]! } + public var Undo_ChatDeleted: String { return self._s[1102]! } + public var Conversation_ChatBackground: String { return self._s[1103]! } + public var ChannelMembers_WhoCanAddMembers_Admins: String { return self._s[1104]! } + public var FastTwoStepSetup_EmailPlaceholder: String { return self._s[1105]! } + public var Passport_Language_pt: String { return self._s[1106]! } + public var NotificationsSound_Popcorn: String { return self._s[1109]! } + public var AutoNightTheme_Disabled: String { return self._s[1110]! } + public var BlockedUsers_LeavePrefix: String { return self._s[1111]! } + public var WallpaperPreview_CustomColorTopText: String { return self._s[1112]! } + public var Contacts_PermissionsSuppressWarningText: String { return self._s[1113]! } + public var WallpaperSearch_ColorBlue: String { return self._s[1114]! } public func CancelResetAccount_TextSMS(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1114]!, self._r[1114]!, [_0]) + return formatWithArgumentRanges(self._s[1115]!, self._r[1115]!, [_0]) } - public var CheckoutInfo_ErrorNameInvalid: String { return self._s[1115]! } - public var SocksProxySetup_UseForCalls: String { return self._s[1116]! } - public var Passport_DeleteDocumentConfirmation: String { return self._s[1118]! } + public var CheckoutInfo_ErrorNameInvalid: String { return self._s[1116]! } + public var SocksProxySetup_UseForCalls: String { return self._s[1117]! } + public var Passport_DeleteDocumentConfirmation: String { return self._s[1119]! } public func Conversation_Megabytes(_ _0: Float) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1119]!, self._r[1119]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[1120]!, self._r[1120]!, ["\(_0)"]) } - public var SocksProxySetup_Hostname: String { return self._s[1122]! } - public var ChatSettings_AutoDownloadSettings_OffForAll: String { return self._s[1123]! } - public var Compose_NewEncryptedChat: String { return self._s[1124]! } - public var Login_CodeFloodError: String { return self._s[1125]! } - public var Calls_TabTitle: String { return self._s[1126]! } - public var Privacy_ProfilePhoto: String { return self._s[1127]! } - public var Passport_Language_he: String { return self._s[1128]! } - public var GroupPermission_Title: String { return self._s[1129]! } + public var SocksProxySetup_Hostname: String { return self._s[1123]! } + public var ChatSettings_AutoDownloadSettings_OffForAll: String { return self._s[1124]! } + public var Compose_NewEncryptedChat: String { return self._s[1125]! } + public var Login_CodeFloodError: String { return self._s[1126]! } + public var Calls_TabTitle: String { return self._s[1127]! } + public var Privacy_ProfilePhoto: String { return self._s[1128]! } + public var Passport_Language_he: String { return self._s[1129]! } + public var GroupPermission_Title: String { return self._s[1130]! } public func Channel_AdminLog_MessageGroupPreHistoryHidden(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1130]!, self._r[1130]!, [_0]) + return formatWithArgumentRanges(self._s[1131]!, self._r[1131]!, [_0]) } - public var GroupPermission_NoChangeInfo: String { return self._s[1131]! } - public var ChatList_DeleteForCurrentUser: String { return self._s[1132]! } - public var Tour_Text1: String { return self._s[1133]! } - public var Channel_EditAdmin_TransferOwnership: String { return self._s[1134]! } - public var Month_ShortFebruary: String { return self._s[1135]! } - public var TwoStepAuth_EmailSkip: String { return self._s[1136]! } - public var NotificationsSound_Glass: String { return self._s[1137]! } - public var Appearance_ThemeNightBlue: String { return self._s[1138]! } - public var CheckoutInfo_Pay: String { return self._s[1139]! } - public var Invite_LargeRecipientsCountWarning: String { return self._s[1141]! } - public var Call_CallAgain: String { return self._s[1143]! } - public var AttachmentMenu_SendAsFile: String { return self._s[1144]! } - public var AccessDenied_MicrophoneRestricted: String { return self._s[1145]! } - public var Passport_InvalidPasswordError: String { return self._s[1146]! } - public var Watch_Message_Game: String { return self._s[1147]! } - public var Stickers_Install: String { return self._s[1148]! } - public var PrivacyLastSeenSettings_NeverShareWith: String { return self._s[1149]! } - public var Passport_Identity_ResidenceCountry: String { return self._s[1151]! } - public var Notifications_GroupNotificationsHelp: String { return self._s[1152]! } - public var AuthSessions_OtherSessions: String { return self._s[1153]! } - public var Channel_Username_Help: String { return self._s[1154]! } - public var Camera_Title: String { return self._s[1155]! } - public var GroupInfo_SetGroupPhotoDelete: String { return self._s[1157]! } - public var Privacy_ProfilePhoto_NeverShareWith_Title: String { return self._s[1158]! } - public var Channel_AdminLog_SendPolls: String { return self._s[1159]! } - public var Channel_AdminLog_TitleAllEvents: String { return self._s[1160]! } - public var Channel_EditAdmin_PermissionInviteMembers: String { return self._s[1161]! } - public var Contacts_MemberSearchSectionTitleGroup: String { return self._s[1162]! } - public var Conversation_RestrictedStickers: String { return self._s[1163]! } - public var Notifications_ExceptionsResetToDefaults: String { return self._s[1165]! } - public var UserInfo_TelegramCall: String { return self._s[1167]! } - public var TwoStepAuth_SetupResendEmailCode: String { return self._s[1168]! } - public var CreatePoll_OptionsHeader: String { return self._s[1169]! } - public var SettingsSearch_Synonyms_Data_CallsUseLessData: String { return self._s[1170]! } - public var ArchivedChats_IntroTitle1: String { return self._s[1171]! } - public var Privacy_GroupsAndChannels_AlwaysAllow_Title: String { return self._s[1172]! } - public var Passport_Identity_EditPersonalDetails: String { return self._s[1173]! } + public var GroupPermission_NoChangeInfo: String { return self._s[1132]! } + public var ChatList_DeleteForCurrentUser: String { return self._s[1133]! } + public var Tour_Text1: String { return self._s[1134]! } + public var Channel_EditAdmin_TransferOwnership: String { return self._s[1135]! } + public var Month_ShortFebruary: String { return self._s[1136]! } + public var TwoStepAuth_EmailSkip: String { return self._s[1137]! } + public var NotificationsSound_Glass: String { return self._s[1138]! } + public var Appearance_ThemeNightBlue: String { return self._s[1139]! } + public var CheckoutInfo_Pay: String { return self._s[1140]! } + public var Invite_LargeRecipientsCountWarning: String { return self._s[1142]! } + public var Call_CallAgain: String { return self._s[1144]! } + public var AttachmentMenu_SendAsFile: String { return self._s[1145]! } + public var AccessDenied_MicrophoneRestricted: String { return self._s[1146]! } + public var Passport_InvalidPasswordError: String { return self._s[1147]! } + public var Watch_Message_Game: String { return self._s[1148]! } + public var Stickers_Install: String { return self._s[1149]! } + public var PrivacyLastSeenSettings_NeverShareWith: String { return self._s[1150]! } + public var Passport_Identity_ResidenceCountry: String { return self._s[1152]! } + public var Notifications_GroupNotificationsHelp: String { return self._s[1153]! } + public var AuthSessions_OtherSessions: String { return self._s[1154]! } + public var Channel_Username_Help: String { return self._s[1155]! } + public var Camera_Title: String { return self._s[1156]! } + public var GroupInfo_SetGroupPhotoDelete: String { return self._s[1158]! } + public var Privacy_ProfilePhoto_NeverShareWith_Title: String { return self._s[1159]! } + public var Channel_AdminLog_SendPolls: String { return self._s[1160]! } + public var Channel_AdminLog_TitleAllEvents: String { return self._s[1161]! } + public var Channel_EditAdmin_PermissionInviteMembers: String { return self._s[1162]! } + public var Contacts_MemberSearchSectionTitleGroup: String { return self._s[1163]! } + public var Conversation_RestrictedStickers: String { return self._s[1164]! } + public var Notifications_ExceptionsResetToDefaults: String { return self._s[1166]! } + public var UserInfo_TelegramCall: String { return self._s[1168]! } + public var TwoStepAuth_SetupResendEmailCode: String { return self._s[1169]! } + public var CreatePoll_OptionsHeader: String { return self._s[1170]! } + public var SettingsSearch_Synonyms_Data_CallsUseLessData: String { return self._s[1171]! } + public var ArchivedChats_IntroTitle1: String { return self._s[1172]! } + public var Privacy_GroupsAndChannels_AlwaysAllow_Title: String { return self._s[1173]! } + public var Passport_Identity_EditPersonalDetails: String { return self._s[1174]! } public func Time_PreciseDate_m1(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1174]!, self._r[1174]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1175]!, self._r[1175]!, [_1, _2, _3]) } - public var Settings_SaveEditedPhotos: String { return self._s[1175]! } - public var TwoStepAuth_ConfirmationTitle: String { return self._s[1176]! } - public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[1177]! } - public var Conversation_MessageDialogRetry: String { return self._s[1178]! } - public var Conversation_DiscardVoiceMessageAction: String { return self._s[1179]! } - public var Permissions_PeopleNearbyTitle_v0: String { return self._s[1180]! } - public var Group_Setup_TypeHeader: String { return self._s[1181]! } - public var Paint_RecentStickers: String { return self._s[1182]! } - public var PhotoEditor_GrainTool: String { return self._s[1183]! } - public var CheckoutInfo_ShippingInfoState: String { return self._s[1184]! } - public var EmptyGroupInfo_Line4: String { return self._s[1185]! } - public var Watch_AuthRequired: String { return self._s[1187]! } + public var Settings_SaveEditedPhotos: String { return self._s[1176]! } + public var TwoStepAuth_ConfirmationTitle: String { return self._s[1177]! } + public var Privacy_GroupsAndChannels_NeverAllow_Title: String { return self._s[1178]! } + public var Conversation_MessageDialogRetry: String { return self._s[1179]! } + public var Conversation_DiscardVoiceMessageAction: String { return self._s[1180]! } + public var Permissions_PeopleNearbyTitle_v0: String { return self._s[1181]! } + public var Group_Setup_TypeHeader: String { return self._s[1182]! } + public var Paint_RecentStickers: String { return self._s[1183]! } + public var PhotoEditor_GrainTool: String { return self._s[1184]! } + public var CheckoutInfo_ShippingInfoState: String { return self._s[1185]! } + public var EmptyGroupInfo_Line4: String { return self._s[1186]! } + public var Watch_AuthRequired: String { return self._s[1188]! } public func Passport_Email_UseTelegramEmail(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1188]!, self._r[1188]!, [_0]) + return formatWithArgumentRanges(self._s[1189]!, self._r[1189]!, [_0]) } - public var Conversation_EncryptedDescriptionTitle: String { return self._s[1189]! } - public var ChannelIntro_Text: String { return self._s[1190]! } - public var DialogList_DeleteBotConfirmation: String { return self._s[1191]! } - public var GroupPermission_NoSendMedia: String { return self._s[1192]! } - public var Calls_AddTab: String { return self._s[1193]! } - public var Message_ReplyActionButtonShowReceipt: String { return self._s[1194]! } - public var Channel_AdminLog_EmptyFilterText: String { return self._s[1195]! } - public var Notification_MessageLifetime1d: String { return self._s[1196]! } - public var Notifications_ChannelNotificationsExceptionsHelp: String { return self._s[1197]! } - public var Channel_BanUser_PermissionsHeader: String { return self._s[1198]! } - public var Passport_Identity_GenderFemale: String { return self._s[1199]! } - public var BlockedUsers_BlockTitle: String { return self._s[1200]! } + public var Conversation_EncryptedDescriptionTitle: String { return self._s[1190]! } + public var ChannelIntro_Text: String { return self._s[1191]! } + public var DialogList_DeleteBotConfirmation: String { return self._s[1192]! } + public var GroupPermission_NoSendMedia: String { return self._s[1193]! } + public var Calls_AddTab: String { return self._s[1194]! } + public var Message_ReplyActionButtonShowReceipt: String { return self._s[1195]! } + public var Channel_AdminLog_EmptyFilterText: String { return self._s[1196]! } + public var Notification_MessageLifetime1d: String { return self._s[1197]! } + public var Notifications_ChannelNotificationsExceptionsHelp: String { return self._s[1198]! } + public var Channel_BanUser_PermissionsHeader: String { return self._s[1199]! } + public var Passport_Identity_GenderFemale: String { return self._s[1200]! } + public var BlockedUsers_BlockTitle: String { return self._s[1201]! } public func PUSH_CHANNEL_MESSAGE_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1201]!, self._r[1201]!, [_1]) + return formatWithArgumentRanges(self._s[1202]!, self._r[1202]!, [_1]) } - public var Weekday_Yesterday: String { return self._s[1202]! } - public var WallpaperSearch_ColorBlack: String { return self._s[1203]! } - public var ChatList_ArchiveAction: String { return self._s[1204]! } - public var AutoNightTheme_Scheduled: String { return self._s[1205]! } + public var Weekday_Yesterday: String { return self._s[1203]! } + public var WallpaperSearch_ColorBlack: String { return self._s[1204]! } + public var ChatList_ArchiveAction: String { return self._s[1205]! } + public var AutoNightTheme_Scheduled: String { return self._s[1206]! } public func Login_PhoneGenericEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String, _ _6: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1206]!, self._r[1206]!, [_1, _2, _3, _4, _5, _6]) + return formatWithArgumentRanges(self._s[1207]!, self._r[1207]!, [_1, _2, _3, _4, _5, _6]) } - public var PrivacyPolicy_DeclineDeleteNow: String { return self._s[1207]! } + public var PrivacyPolicy_DeclineDeleteNow: String { return self._s[1208]! } public func PUSH_CHAT_JOINED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1208]!, self._r[1208]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1209]!, self._r[1209]!, [_1, _2]) } - public var CreatePoll_Create: String { return self._s[1209]! } - public var Channel_Members_AddBannedErrorAdmin: String { return self._s[1210]! } + public var CreatePoll_Create: String { return self._s[1210]! } + public var Channel_Members_AddBannedErrorAdmin: String { return self._s[1211]! } public func Notification_CallFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1211]!, self._r[1211]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1212]!, self._r[1212]!, [_1, _2]) } - public var Checkout_ErrorProviderAccountInvalid: String { return self._s[1212]! } - public var Notifications_InAppNotificationsSounds: String { return self._s[1214]! } + public var Checkout_ErrorProviderAccountInvalid: String { return self._s[1213]! } + public var Notifications_InAppNotificationsSounds: String { return self._s[1215]! } public func PUSH_PINNED_GAME_SCORE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1215]!, self._r[1215]!, [_1]) + return formatWithArgumentRanges(self._s[1216]!, self._r[1216]!, [_1]) } - public var Preview_OpenInInstagram: String { return self._s[1216]! } - public var Notification_MessageLifetimeRemovedOutgoing: String { return self._s[1217]! } + public var Preview_OpenInInstagram: String { return self._s[1217]! } + public var Notification_MessageLifetimeRemovedOutgoing: String { return self._s[1218]! } public func PUSH_CHAT_ADD_MEMBER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1218]!, self._r[1218]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1219]!, self._r[1219]!, [_1, _2, _3]) } public func Passport_PrivacyPolicy(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1219]!, self._r[1219]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1220]!, self._r[1220]!, [_1, _2]) } - public var Channel_AdminLog_InfoPanelAlertTitle: String { return self._s[1220]! } - public var ArchivedChats_IntroText3: String { return self._s[1221]! } - public var ChatList_UndoArchiveHiddenText: String { return self._s[1222]! } - public var NetworkUsageSettings_TotalSection: String { return self._s[1223]! } - public var Channel_Setup_TypePrivateHelp: String { return self._s[1224]! } + public var Channel_AdminLog_InfoPanelAlertTitle: String { return self._s[1221]! } + public var ArchivedChats_IntroText3: String { return self._s[1222]! } + public var ChatList_UndoArchiveHiddenText: String { return self._s[1223]! } + public var NetworkUsageSettings_TotalSection: String { return self._s[1224]! } + public var Channel_Setup_TypePrivateHelp: String { return self._s[1225]! } public func PUSH_CHAT_MESSAGE_POLL(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1225]!, self._r[1225]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1226]!, self._r[1226]!, [_1, _2, _3]) } - public var Privacy_GroupsAndChannels_NeverAllow_Placeholder: String { return self._s[1227]! } - public var FastTwoStepSetup_HintSection: String { return self._s[1228]! } - public var Wallpaper_PhotoLibrary: String { return self._s[1229]! } - public var TwoStepAuth_SetupResendEmailCodeAlert: String { return self._s[1230]! } - public var Gif_NoGifsFound: String { return self._s[1231]! } - public var Watch_LastSeen_WithinAMonth: String { return self._s[1232]! } - public var GroupInfo_ActionPromote: String { return self._s[1233]! } - public var PasscodeSettings_SimplePasscode: String { return self._s[1234]! } - public var GroupInfo_Permissions_Title: String { return self._s[1235]! } - public var Permissions_ContactsText_v0: String { return self._s[1236]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedPublicGroups: String { return self._s[1237]! } - public var PrivacySettings_DataSettingsHelp: String { return self._s[1240]! } - public var Passport_FieldEmailHelp: String { return self._s[1241]! } + public var Privacy_GroupsAndChannels_NeverAllow_Placeholder: String { return self._s[1228]! } + public var FastTwoStepSetup_HintSection: String { return self._s[1229]! } + public var Wallpaper_PhotoLibrary: String { return self._s[1230]! } + public var TwoStepAuth_SetupResendEmailCodeAlert: String { return self._s[1231]! } + public var Gif_NoGifsFound: String { return self._s[1232]! } + public var Watch_LastSeen_WithinAMonth: String { return self._s[1233]! } + public var GroupInfo_ActionPromote: String { return self._s[1234]! } + public var PasscodeSettings_SimplePasscode: String { return self._s[1235]! } + public var GroupInfo_Permissions_Title: String { return self._s[1236]! } + public var Permissions_ContactsText_v0: String { return self._s[1237]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedPublicGroups: String { return self._s[1238]! } + public var PrivacySettings_DataSettingsHelp: String { return self._s[1241]! } + public var Passport_FieldEmailHelp: String { return self._s[1242]! } public func Activity_RemindAboutUser(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1242]!, self._r[1242]!, [_0]) + return formatWithArgumentRanges(self._s[1243]!, self._r[1243]!, [_0]) } - public var Passport_Identity_GenderPlaceholder: String { return self._s[1243]! } - public var Weekday_ShortSaturday: String { return self._s[1244]! } - public var ContactInfo_PhoneLabelMain: String { return self._s[1245]! } - public var Watch_Conversation_UserInfo: String { return self._s[1246]! } - public var CheckoutInfo_ShippingInfoCityPlaceholder: String { return self._s[1247]! } - public var PrivacyLastSeenSettings_Title: String { return self._s[1248]! } - public var Conversation_ShareBotLocationConfirmation: String { return self._s[1249]! } - public var PhotoEditor_VignetteTool: String { return self._s[1250]! } - public var Passport_Address_Street1Placeholder: String { return self._s[1251]! } - public var Passport_Language_et: String { return self._s[1252]! } - public var AppUpgrade_Running: String { return self._s[1253]! } - public var Channel_DiscussionGroup_Info: String { return self._s[1255]! } - public var Passport_Language_bg: String { return self._s[1256]! } - public var Stickers_NoStickersFound: String { return self._s[1258]! } + public var Passport_Identity_GenderPlaceholder: String { return self._s[1244]! } + public var Weekday_ShortSaturday: String { return self._s[1245]! } + public var ContactInfo_PhoneLabelMain: String { return self._s[1246]! } + public var Watch_Conversation_UserInfo: String { return self._s[1247]! } + public var CheckoutInfo_ShippingInfoCityPlaceholder: String { return self._s[1248]! } + public var PrivacyLastSeenSettings_Title: String { return self._s[1249]! } + public var Conversation_ShareBotLocationConfirmation: String { return self._s[1250]! } + public var PhotoEditor_VignetteTool: String { return self._s[1251]! } + public var Passport_Address_Street1Placeholder: String { return self._s[1252]! } + public var Passport_Language_et: String { return self._s[1253]! } + public var AppUpgrade_Running: String { return self._s[1254]! } + public var Channel_DiscussionGroup_Info: String { return self._s[1256]! } + public var Passport_Language_bg: String { return self._s[1257]! } + public var Stickers_NoStickersFound: String { return self._s[1259]! } public func PUSH_CHANNEL_MESSAGE_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1260]!, self._r[1260]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1261]!, self._r[1261]!, [_1, _2]) } - public var Settings_About: String { return self._s[1261]! } + public var Settings_About: String { return self._s[1262]! } public func Channel_AdminLog_MessageRestricted(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1262]!, self._r[1262]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[1263]!, self._r[1263]!, [_0, _1, _2]) } - public var KeyCommand_NewMessage: String { return self._s[1264]! } - public var Group_ErrorAddBlocked: String { return self._s[1265]! } + public var KeyCommand_NewMessage: String { return self._s[1265]! } + public var Group_ErrorAddBlocked: String { return self._s[1266]! } public func Message_PaymentSent(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1266]!, self._r[1266]!, [_0]) + return formatWithArgumentRanges(self._s[1267]!, self._r[1267]!, [_0]) } - public var Map_LocationTitle: String { return self._s[1267]! } - public var ReportGroupLocation_Title: String { return self._s[1268]! } - public var CallSettings_UseLessDataLongDescription: String { return self._s[1269]! } - public var Cache_ClearProgress: String { return self._s[1270]! } + public var Map_LocationTitle: String { return self._s[1268]! } + public var ReportGroupLocation_Title: String { return self._s[1269]! } + public var CallSettings_UseLessDataLongDescription: String { return self._s[1270]! } + public var Cache_ClearProgress: String { return self._s[1271]! } public func Channel_Management_ErrorNotMember(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1271]!, self._r[1271]!, [_0]) + return formatWithArgumentRanges(self._s[1272]!, self._r[1272]!, [_0]) } - public var GroupRemoved_AddToGroup: String { return self._s[1272]! } - public var Passport_UpdateRequiredError: String { return self._s[1273]! } + public var GroupRemoved_AddToGroup: String { return self._s[1273]! } + public var Passport_UpdateRequiredError: String { return self._s[1274]! } public func PUSH_MESSAGE_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1274]!, self._r[1274]!, [_1]) + return formatWithArgumentRanges(self._s[1275]!, self._r[1275]!, [_1]) } - public var Notifications_PermissionsSuppressWarningText: String { return self._s[1276]! } - public var Passport_Identity_MainPageHelp: String { return self._s[1277]! } - public var Conversation_StatusKickedFromGroup: String { return self._s[1278]! } - public var Passport_Language_ka: String { return self._s[1279]! } - public var Call_Decline: String { return self._s[1280]! } - public var SocksProxySetup_ProxyEnabled: String { return self._s[1281]! } + public var Notifications_PermissionsSuppressWarningText: String { return self._s[1277]! } + public var Passport_Identity_MainPageHelp: String { return self._s[1278]! } + public var Conversation_StatusKickedFromGroup: String { return self._s[1279]! } + public var Passport_Language_ka: String { return self._s[1280]! } + public var Call_Decline: String { return self._s[1281]! } + public var SocksProxySetup_ProxyEnabled: String { return self._s[1282]! } public func AuthCode_Alert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1284]!, self._r[1284]!, [_0]) + return formatWithArgumentRanges(self._s[1285]!, self._r[1285]!, [_0]) } - public var CallFeedback_Send: String { return self._s[1285]! } + public var CallFeedback_Send: String { return self._s[1286]! } public func Channel_AdminLog_MessagePromotedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1286]!, self._r[1286]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1287]!, self._r[1287]!, [_1, _2]) } - public var Passport_Phone_UseTelegramNumberHelp: String { return self._s[1287]! } - public var SettingsSearch_Synonyms_Data_Title: String { return self._s[1289]! } - public var Passport_DeletePassport: String { return self._s[1290]! } - public var Appearance_AppIconFilled: String { return self._s[1291]! } - public var Privacy_Calls_P2PAlways: String { return self._s[1292]! } - public var Month_ShortDecember: String { return self._s[1293]! } - public var Channel_AdminLog_CanEditMessages: String { return self._s[1295]! } + public var Passport_Phone_UseTelegramNumberHelp: String { return self._s[1288]! } + public var SettingsSearch_Synonyms_Data_Title: String { return self._s[1290]! } + public var Passport_DeletePassport: String { return self._s[1291]! } + public var Appearance_AppIconFilled: String { return self._s[1292]! } + public var Privacy_Calls_P2PAlways: String { return self._s[1293]! } + public var Month_ShortDecember: String { return self._s[1294]! } + public var Channel_AdminLog_CanEditMessages: String { return self._s[1296]! } public func Contacts_AccessDeniedHelpLandscape(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1296]!, self._r[1296]!, [_0]) + return formatWithArgumentRanges(self._s[1297]!, self._r[1297]!, [_0]) } - public var Channel_Stickers_Searching: String { return self._s[1297]! } - public var Conversation_EncryptedDescription1: String { return self._s[1298]! } - public var Conversation_EncryptedDescription2: String { return self._s[1299]! } - public var PasscodeSettings_PasscodeOptions: String { return self._s[1300]! } - public var Conversation_EncryptedDescription3: String { return self._s[1301]! } - public var PhotoEditor_SharpenTool: String { return self._s[1302]! } + public var Channel_Stickers_Searching: String { return self._s[1298]! } + public var Conversation_EncryptedDescription1: String { return self._s[1299]! } + public var Conversation_EncryptedDescription2: String { return self._s[1300]! } + public var PasscodeSettings_PasscodeOptions: String { return self._s[1301]! } + public var Conversation_EncryptedDescription3: String { return self._s[1302]! } + public var PhotoEditor_SharpenTool: String { return self._s[1303]! } public func Conversation_AddNameToContacts(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1303]!, self._r[1303]!, [_0]) + return formatWithArgumentRanges(self._s[1304]!, self._r[1304]!, [_0]) } - public var Conversation_EncryptedDescription4: String { return self._s[1305]! } - public var Channel_Members_AddMembers: String { return self._s[1306]! } - public var Wallpaper_Search: String { return self._s[1307]! } - public var Weekday_Friday: String { return self._s[1308]! } - public var Privacy_ContactsSync: String { return self._s[1309]! } - public var SettingsSearch_Synonyms_Privacy_Data_ContactsReset: String { return self._s[1310]! } - public var ApplyLanguage_ChangeLanguageAction: String { return self._s[1311]! } + public var Conversation_EncryptedDescription4: String { return self._s[1306]! } + public var Channel_Members_AddMembers: String { return self._s[1307]! } + public var Wallpaper_Search: String { return self._s[1308]! } + public var Weekday_Friday: String { return self._s[1309]! } + public var Privacy_ContactsSync: String { return self._s[1310]! } + public var SettingsSearch_Synonyms_Privacy_Data_ContactsReset: String { return self._s[1311]! } + public var ApplyLanguage_ChangeLanguageAction: String { return self._s[1312]! } public func Channel_Management_RestrictedBy(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1312]!, self._r[1312]!, [_0]) + return formatWithArgumentRanges(self._s[1313]!, self._r[1313]!, [_0]) } - public var GroupInfo_Permissions_Removed: String { return self._s[1313]! } - public var Passport_Identity_GenderMale: String { return self._s[1314]! } + public var GroupInfo_Permissions_Removed: String { return self._s[1314]! } + public var Passport_Identity_GenderMale: String { return self._s[1315]! } public func Call_StatusBar(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1315]!, self._r[1315]!, [_0]) + return formatWithArgumentRanges(self._s[1316]!, self._r[1316]!, [_0]) } - public var Notifications_PermissionsKeepDisabled: String { return self._s[1316]! } - public var Conversation_JumpToDate: String { return self._s[1317]! } - public var Contacts_GlobalSearch: String { return self._s[1318]! } - public var AutoDownloadSettings_ResetHelp: String { return self._s[1319]! } - public var SettingsSearch_Synonyms_FAQ: String { return self._s[1320]! } - public var Profile_MessageLifetime1d: String { return self._s[1321]! } + public var Notifications_PermissionsKeepDisabled: String { return self._s[1317]! } + public var Conversation_JumpToDate: String { return self._s[1318]! } + public var Contacts_GlobalSearch: String { return self._s[1319]! } + public var AutoDownloadSettings_ResetHelp: String { return self._s[1320]! } + public var SettingsSearch_Synonyms_FAQ: String { return self._s[1321]! } + public var Profile_MessageLifetime1d: String { return self._s[1322]! } public func MESSAGE_INVOICE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1322]!, self._r[1322]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1323]!, self._r[1323]!, [_1, _2]) } - public var StickerPack_BuiltinPackName: String { return self._s[1325]! } + public var StickerPack_BuiltinPackName: String { return self._s[1326]! } public func PUSH_CHAT_MESSAGE_AUDIO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1326]!, self._r[1326]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1327]!, self._r[1327]!, [_1, _2]) } - public var Passport_InfoTitle: String { return self._s[1328]! } - public var Notifications_PermissionsUnreachableText: String { return self._s[1329]! } + public var Passport_InfoTitle: String { return self._s[1329]! } + public var Notifications_PermissionsUnreachableText: String { return self._s[1330]! } public func NetworkUsageSettings_CellularUsageSince(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1333]!, self._r[1333]!, [_0]) + return formatWithArgumentRanges(self._s[1334]!, self._r[1334]!, [_0]) } public func PUSH_CHAT_MESSAGE_GEO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1334]!, self._r[1334]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1335]!, self._r[1335]!, [_1, _2]) } - public var Passport_Address_TypePassportRegistrationUploadScan: String { return self._s[1335]! } - public var Profile_BotInfo: String { return self._s[1336]! } - public var Watch_Compose_CreateMessage: String { return self._s[1337]! } - public var AutoDownloadSettings_VoiceMessagesInfo: String { return self._s[1338]! } - public var Month_ShortNovember: String { return self._s[1339]! } - public var Conversation_ScamWarning: String { return self._s[1340]! } - public var Wallpaper_SetCustomBackground: String { return self._s[1341]! } - public var Passport_Identity_TranslationsHelp: String { return self._s[1342]! } - public var NotificationsSound_Chime: String { return self._s[1343]! } - public var Passport_Language_ko: String { return self._s[1345]! } - public var InviteText_URL: String { return self._s[1346]! } - public var TextFormat_Monospace: String { return self._s[1347]! } + public var Passport_Address_TypePassportRegistrationUploadScan: String { return self._s[1336]! } + public var Profile_BotInfo: String { return self._s[1337]! } + public var Watch_Compose_CreateMessage: String { return self._s[1338]! } + public var AutoDownloadSettings_VoiceMessagesInfo: String { return self._s[1339]! } + public var Month_ShortNovember: String { return self._s[1340]! } + public var Conversation_ScamWarning: String { return self._s[1341]! } + public var Wallpaper_SetCustomBackground: String { return self._s[1342]! } + public var Passport_Identity_TranslationsHelp: String { return self._s[1343]! } + public var NotificationsSound_Chime: String { return self._s[1344]! } + public var Passport_Language_ko: String { return self._s[1346]! } + public var InviteText_URL: String { return self._s[1347]! } + public var TextFormat_Monospace: String { return self._s[1348]! } public func Time_PreciseDate_m11(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1348]!, self._r[1348]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1349]!, self._r[1349]!, [_1, _2, _3]) } public func Login_WillSendSms(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1349]!, self._r[1349]!, [_0]) + return formatWithArgumentRanges(self._s[1350]!, self._r[1350]!, [_0]) } public func Watch_Time_ShortWeekdayAt(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1350]!, self._r[1350]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1351]!, self._r[1351]!, [_1, _2]) } - public var Passport_InfoLearnMore: String { return self._s[1352]! } - public var TwoStepAuth_EmailPlaceholder: String { return self._s[1353]! } - public var Passport_Identity_AddIdentityCard: String { return self._s[1354]! } - public var Your_card_has_expired: String { return self._s[1355]! } - public var StickerPacksSettings_StickerPacksSection: String { return self._s[1356]! } - public var GroupInfo_InviteLink_Help: String { return self._s[1357]! } - public var Conversation_Report: String { return self._s[1361]! } - public var Notifications_MessageNotificationsSound: String { return self._s[1362]! } - public var Notification_MessageLifetime1m: String { return self._s[1363]! } - public var Privacy_ContactsTitle: String { return self._s[1364]! } - public var Conversation_ShareMyContactInfo: String { return self._s[1365]! } - public var ChannelMembers_WhoCanAddMembersAdminsHelp: String { return self._s[1366]! } - public var Channel_Members_Title: String { return self._s[1367]! } - public var Map_OpenInWaze: String { return self._s[1368]! } - public var Login_PhoneBannedError: String { return self._s[1369]! } + public var Passport_InfoLearnMore: String { return self._s[1353]! } + public var TwoStepAuth_EmailPlaceholder: String { return self._s[1354]! } + public var Passport_Identity_AddIdentityCard: String { return self._s[1355]! } + public var Your_card_has_expired: String { return self._s[1356]! } + public var StickerPacksSettings_StickerPacksSection: String { return self._s[1357]! } + public var GroupInfo_InviteLink_Help: String { return self._s[1358]! } + public var Conversation_Report: String { return self._s[1362]! } + public var Notifications_MessageNotificationsSound: String { return self._s[1363]! } + public var Notification_MessageLifetime1m: String { return self._s[1364]! } + public var Privacy_ContactsTitle: String { return self._s[1365]! } + public var Conversation_ShareMyContactInfo: String { return self._s[1366]! } + public var ChannelMembers_WhoCanAddMembersAdminsHelp: String { return self._s[1367]! } + public var Channel_Members_Title: String { return self._s[1368]! } + public var Map_OpenInWaze: String { return self._s[1369]! } + public var Login_PhoneBannedError: String { return self._s[1370]! } public func LiveLocationUpdated_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1370]!, self._r[1370]!, [_0]) + return formatWithArgumentRanges(self._s[1371]!, self._r[1371]!, [_0]) } - public var Group_Management_AddModeratorHelp: String { return self._s[1371]! } - public var AutoDownloadSettings_WifiTitle: String { return self._s[1372]! } - public var Common_OK: String { return self._s[1373]! } - public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[1374]! } - public var Cache_Music: String { return self._s[1375]! } - public var SettingsSearch_Synonyms_EditProfile_PhoneNumber: String { return self._s[1376]! } - public var PasscodeSettings_UnlockWithTouchId: String { return self._s[1377]! } - public var TwoStepAuth_HintPlaceholder: String { return self._s[1378]! } + public var Group_Management_AddModeratorHelp: String { return self._s[1372]! } + public var AutoDownloadSettings_WifiTitle: String { return self._s[1373]! } + public var Common_OK: String { return self._s[1374]! } + public var Passport_Address_TypeBankStatementUploadScan: String { return self._s[1375]! } + public var Cache_Music: String { return self._s[1376]! } + public var SettingsSearch_Synonyms_EditProfile_PhoneNumber: String { return self._s[1377]! } + public var PasscodeSettings_UnlockWithTouchId: String { return self._s[1378]! } + public var TwoStepAuth_HintPlaceholder: String { return self._s[1379]! } public func PUSH_PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1379]!, self._r[1379]!, [_1]) + return formatWithArgumentRanges(self._s[1380]!, self._r[1380]!, [_1]) } public func Passport_RequestHeader(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1380]!, self._r[1380]!, [_0]) + return formatWithArgumentRanges(self._s[1381]!, self._r[1381]!, [_0]) } - public var Watch_MessageView_ViewOnPhone: String { return self._s[1382]! } - public var Privacy_Calls_CustomShareHelp: String { return self._s[1383]! } - public var ChangePhoneNumberNumber_Title: String { return self._s[1385]! } - public var State_ConnectingToProxyInfo: String { return self._s[1386]! } - public var Message_VideoMessage: String { return self._s[1388]! } - public var ChannelInfo_DeleteChannel: String { return self._s[1389]! } - public var ContactInfo_PhoneLabelOther: String { return self._s[1390]! } - public var Channel_EditAdmin_CannotEdit: String { return self._s[1391]! } - public var Passport_DeleteAddressConfirmation: String { return self._s[1392]! } - public var WallpaperPreview_SwipeBottomText: String { return self._s[1393]! } - public var Activity_RecordingAudio: String { return self._s[1394]! } - public var SettingsSearch_Synonyms_Watch: String { return self._s[1395]! } - public var PasscodeSettings_TryAgainIn1Minute: String { return self._s[1396]! } + public var Watch_MessageView_ViewOnPhone: String { return self._s[1383]! } + public var Privacy_Calls_CustomShareHelp: String { return self._s[1384]! } + public var ChangePhoneNumberNumber_Title: String { return self._s[1386]! } + public var State_ConnectingToProxyInfo: String { return self._s[1387]! } + public var Message_VideoMessage: String { return self._s[1389]! } + public var ChannelInfo_DeleteChannel: String { return self._s[1390]! } + public var ContactInfo_PhoneLabelOther: String { return self._s[1391]! } + public var Channel_EditAdmin_CannotEdit: String { return self._s[1392]! } + public var Passport_DeleteAddressConfirmation: String { return self._s[1393]! } + public var WallpaperPreview_SwipeBottomText: String { return self._s[1394]! } + public var Activity_RecordingAudio: String { return self._s[1395]! } + public var SettingsSearch_Synonyms_Watch: String { return self._s[1396]! } + public var PasscodeSettings_TryAgainIn1Minute: String { return self._s[1397]! } public func Notification_ChangedGroupName(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1398]!, self._r[1398]!, [_0, _1]) + return formatWithArgumentRanges(self._s[1399]!, self._r[1399]!, [_0, _1]) } public func EmptyGroupInfo_Line1(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1402]!, self._r[1402]!, [_0]) + return formatWithArgumentRanges(self._s[1403]!, self._r[1403]!, [_0]) } - public var Conversation_ApplyLocalization: String { return self._s[1403]! } - public var UserInfo_AddPhone: String { return self._s[1404]! } - public var Map_ShareLiveLocationHelp: String { return self._s[1405]! } + public var Conversation_ApplyLocalization: String { return self._s[1404]! } + public var UserInfo_AddPhone: String { return self._s[1405]! } + public var Map_ShareLiveLocationHelp: String { return self._s[1406]! } public func Passport_Identity_NativeNameGenericHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1406]!, self._r[1406]!, [_0]) + return formatWithArgumentRanges(self._s[1407]!, self._r[1407]!, [_0]) } - public var Passport_Scans: String { return self._s[1408]! } - public var BlockedUsers_Unblock: String { return self._s[1409]! } + public var Passport_Scans: String { return self._s[1409]! } + public var BlockedUsers_Unblock: String { return self._s[1410]! } public func PUSH_ENCRYPTION_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1410]!, self._r[1410]!, [_1]) + return formatWithArgumentRanges(self._s[1411]!, self._r[1411]!, [_1]) } - public var Channel_Management_LabelCreator: String { return self._s[1411]! } - public var Conversation_ReportSpamAndLeave: String { return self._s[1412]! } - public var SettingsSearch_Synonyms_EditProfile_Bio: String { return self._s[1413]! } - public var ChatList_UndoArchiveMultipleTitle: String { return self._s[1414]! } - public var Passport_Identity_NativeNameGenericTitle: String { return self._s[1415]! } + public var Channel_Management_LabelCreator: String { return self._s[1412]! } + public var Conversation_ReportSpamAndLeave: String { return self._s[1413]! } + public var SettingsSearch_Synonyms_EditProfile_Bio: String { return self._s[1414]! } + public var ChatList_UndoArchiveMultipleTitle: String { return self._s[1415]! } + public var Passport_Identity_NativeNameGenericTitle: String { return self._s[1416]! } public func Login_EmailPhoneBody(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1416]!, self._r[1416]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[1417]!, self._r[1417]!, [_0, _1, _2]) } - public var Login_PhoneNumberHelp: String { return self._s[1417]! } - public var LastSeen_ALongTimeAgo: String { return self._s[1418]! } - public var Channel_AdminLog_CanPinMessages: String { return self._s[1419]! } - public var ChannelIntro_CreateChannel: String { return self._s[1420]! } - public var Conversation_UnreadMessages: String { return self._s[1421]! } - public var SettingsSearch_Synonyms_Stickers_ArchivedPacks: String { return self._s[1422]! } - public var Channel_AdminLog_EmptyText: String { return self._s[1423]! } - public var Notification_GroupActivated: String { return self._s[1424]! } - public var NotificationSettings_ContactJoinedInfo: String { return self._s[1425]! } + public var Login_PhoneNumberHelp: String { return self._s[1418]! } + public var LastSeen_ALongTimeAgo: String { return self._s[1419]! } + public var Channel_AdminLog_CanPinMessages: String { return self._s[1420]! } + public var ChannelIntro_CreateChannel: String { return self._s[1421]! } + public var Conversation_UnreadMessages: String { return self._s[1422]! } + public var SettingsSearch_Synonyms_Stickers_ArchivedPacks: String { return self._s[1423]! } + public var Channel_AdminLog_EmptyText: String { return self._s[1424]! } + public var Notification_GroupActivated: String { return self._s[1425]! } + public var NotificationSettings_ContactJoinedInfo: String { return self._s[1426]! } public func Notification_PinnedContactMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1426]!, self._r[1426]!, [_0]) + return formatWithArgumentRanges(self._s[1427]!, self._r[1427]!, [_0]) } public func DownloadingStatus(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1427]!, self._r[1427]!, [_0, _1]) + return formatWithArgumentRanges(self._s[1428]!, self._r[1428]!, [_0, _1]) } - public var GroupInfo_ConvertToSupergroup: String { return self._s[1429]! } + public var GroupInfo_ConvertToSupergroup: String { return self._s[1430]! } public func PrivacyPolicy_AgeVerificationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1430]!, self._r[1430]!, [_0]) + return formatWithArgumentRanges(self._s[1431]!, self._r[1431]!, [_0]) } - public var Undo_DeletedChannel: String { return self._s[1431]! } - public var CallFeedback_AddComment: String { return self._s[1432]! } + public var Undo_DeletedChannel: String { return self._s[1432]! } + public var CallFeedback_AddComment: String { return self._s[1433]! } public func Conversation_OpenBotLinkAllowMessages(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1433]!, self._r[1433]!, [_0]) + return formatWithArgumentRanges(self._s[1434]!, self._r[1434]!, [_0]) } - public var Document_TargetConfirmationFormat: String { return self._s[1434]! } + public var Document_TargetConfirmationFormat: String { return self._s[1435]! } public func Call_StatusOngoing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1435]!, self._r[1435]!, [_0]) + return formatWithArgumentRanges(self._s[1436]!, self._r[1436]!, [_0]) } - public var LogoutOptions_SetPasscodeTitle: String { return self._s[1436]! } + public var LogoutOptions_SetPasscodeTitle: String { return self._s[1437]! } public func PUSH_CHAT_MESSAGE_GAME_SCORE(_ _1: String, _ _2: String, _ _3: String, _ _4: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1437]!, self._r[1437]!, [_1, _2, _3, _4]) + return formatWithArgumentRanges(self._s[1438]!, self._r[1438]!, [_1, _2, _3, _4]) } - public var Contacts_SortByName: String { return self._s[1438]! } - public var SettingsSearch_Synonyms_Privacy_Forwards: String { return self._s[1439]! } + public var Contacts_SortByName: String { return self._s[1439]! } + public var SettingsSearch_Synonyms_Privacy_Forwards: String { return self._s[1440]! } public func CHAT_MESSAGE_INVOICE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1441]!, self._r[1441]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1442]!, self._r[1442]!, [_1, _2, _3]) } - public var Notification_Exceptions_RemoveFromExceptions: String { return self._s[1442]! } - public var Conversation_ClearSelfHistory: String { return self._s[1443]! } - public var Checkout_NewCard_PostcodePlaceholder: String { return self._s[1444]! } - public var PasscodeSettings_DoNotMatch: String { return self._s[1445]! } - public var Stickers_SuggestNone: String { return self._s[1446]! } - public var ChatSettings_Cache: String { return self._s[1447]! } - public var Settings_SaveIncomingPhotos: String { return self._s[1448]! } - public var Media_ShareThisPhoto: String { return self._s[1449]! } - public var InfoPlist_NSContactsUsageDescription: String { return self._s[1450]! } - public var Conversation_ContextMenuCopyLink: String { return self._s[1451]! } - public var PrivacyPolicy_AgeVerificationTitle: String { return self._s[1452]! } - public var SettingsSearch_Synonyms_Stickers_Masks: String { return self._s[1453]! } - public var TwoStepAuth_SetupPasswordEnterPasswordNew: String { return self._s[1454]! } - public var Permissions_CellularDataTitle_v0: String { return self._s[1455]! } - public var WallpaperSearch_ColorWhite: String { return self._s[1457]! } - public var Channel_AdminLog_DefaultRestrictionsUpdated: String { return self._s[1458]! } - public var Conversation_ErrorInaccessibleMessage: String { return self._s[1459]! } - public var Map_OpenIn: String { return self._s[1460]! } + public var Notification_Exceptions_RemoveFromExceptions: String { return self._s[1443]! } + public var Conversation_ClearSelfHistory: String { return self._s[1444]! } + public var Checkout_NewCard_PostcodePlaceholder: String { return self._s[1445]! } + public var PasscodeSettings_DoNotMatch: String { return self._s[1446]! } + public var Stickers_SuggestNone: String { return self._s[1447]! } + public var ChatSettings_Cache: String { return self._s[1448]! } + public var Settings_SaveIncomingPhotos: String { return self._s[1449]! } + public var Media_ShareThisPhoto: String { return self._s[1450]! } + public var InfoPlist_NSContactsUsageDescription: String { return self._s[1451]! } + public var Conversation_ContextMenuCopyLink: String { return self._s[1452]! } + public var PrivacyPolicy_AgeVerificationTitle: String { return self._s[1453]! } + public var SettingsSearch_Synonyms_Stickers_Masks: String { return self._s[1454]! } + public var TwoStepAuth_SetupPasswordEnterPasswordNew: String { return self._s[1455]! } + public var Permissions_CellularDataTitle_v0: String { return self._s[1456]! } + public var WallpaperSearch_ColorWhite: String { return self._s[1458]! } + public var Channel_AdminLog_DefaultRestrictionsUpdated: String { return self._s[1459]! } + public var Conversation_ErrorInaccessibleMessage: String { return self._s[1460]! } + public var Map_OpenIn: String { return self._s[1461]! } public func PUSH_PHONE_CALL_MISSED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1463]!, self._r[1463]!, [_1]) + return formatWithArgumentRanges(self._s[1464]!, self._r[1464]!, [_1]) } public func ChannelInfo_AddParticipantConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1464]!, self._r[1464]!, [_0]) + return formatWithArgumentRanges(self._s[1465]!, self._r[1465]!, [_0]) } - public var MessagePoll_LabelClosed: String { return self._s[1465]! } - public var GroupPermission_PermissionGloballyDisabled: String { return self._s[1467]! } - public var Passport_Identity_MiddleNamePlaceholder: String { return self._s[1468]! } - public var UserInfo_FirstNamePlaceholder: String { return self._s[1469]! } - public var PrivacyLastSeenSettings_WhoCanSeeMyTimestamp: String { return self._s[1470]! } - public var Login_SelectCountry_Title: String { return self._s[1471]! } - public var Channel_EditAdmin_PermissionBanUsers: String { return self._s[1472]! } + public var MessagePoll_LabelClosed: String { return self._s[1466]! } + public var GroupPermission_PermissionGloballyDisabled: String { return self._s[1468]! } + public var Passport_Identity_MiddleNamePlaceholder: String { return self._s[1469]! } + public var UserInfo_FirstNamePlaceholder: String { return self._s[1470]! } + public var PrivacyLastSeenSettings_WhoCanSeeMyTimestamp: String { return self._s[1471]! } + public var Login_SelectCountry_Title: String { return self._s[1472]! } + public var Channel_EditAdmin_PermissionBanUsers: String { return self._s[1473]! } public func Conversation_OpenBotLinkLogin(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1473]!, self._r[1473]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1474]!, self._r[1474]!, [_1, _2]) } - public var Channel_AdminLog_ChangeInfo: String { return self._s[1474]! } - public var Watch_Suggestion_BRB: String { return self._s[1475]! } - public var Passport_Identity_EditIdentityCard: String { return self._s[1476]! } - public var Contacts_PermissionsTitle: String { return self._s[1477]! } - public var Conversation_RestrictedInline: String { return self._s[1478]! } - public var StickerPack_ViewPack: String { return self._s[1480]! } + public var Channel_AdminLog_ChangeInfo: String { return self._s[1475]! } + public var Watch_Suggestion_BRB: String { return self._s[1476]! } + public var Passport_Identity_EditIdentityCard: String { return self._s[1477]! } + public var Contacts_PermissionsTitle: String { return self._s[1478]! } + public var Conversation_RestrictedInline: String { return self._s[1479]! } + public var StickerPack_ViewPack: String { return self._s[1481]! } public func Update_AppVersion(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1481]!, self._r[1481]!, [_0]) + return formatWithArgumentRanges(self._s[1482]!, self._r[1482]!, [_0]) } - public var Compose_NewChannel: String { return self._s[1483]! } - public var ChatSettings_AutoDownloadSettings_TypePhoto: String { return self._s[1486]! } - public var Conversation_ReportSpamGroupConfirmation: String { return self._s[1488]! } - public var Channel_Info_Stickers: String { return self._s[1489]! } - public var AutoNightTheme_PreferredTheme: String { return self._s[1490]! } - public var PrivacyPolicy_AgeVerificationAgree: String { return self._s[1491]! } - public var Passport_DeletePersonalDetails: String { return self._s[1492]! } - public var LogoutOptions_AddAccountTitle: String { return self._s[1493]! } - public var Channel_DiscussionGroupInfo: String { return self._s[1494]! } - public var Conversation_SearchNoResults: String { return self._s[1496]! } - public var MessagePoll_LabelAnonymous: String { return self._s[1497]! } - public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[1498]! } - public var Login_Code: String { return self._s[1499]! } - public var Watch_Suggestion_WhatsUp: String { return self._s[1500]! } - public var Weekday_ShortThursday: String { return self._s[1501]! } - public var Resolve_ErrorNotFound: String { return self._s[1503]! } - public var LastSeen_Offline: String { return self._s[1504]! } - public var PeopleNearby_NoMembers: String { return self._s[1505]! } - public var GroupPermission_AddMembersNotAvailable: String { return self._s[1506]! } - public var Privacy_Calls_AlwaysAllow_Title: String { return self._s[1507]! } - public var GroupInfo_Title: String { return self._s[1508]! } - public var NotificationsSound_Note: String { return self._s[1509]! } - public var Conversation_EditingMessagePanelTitle: String { return self._s[1510]! } - public var Watch_Message_Poll: String { return self._s[1511]! } - public var Privacy_Calls: String { return self._s[1512]! } - public var Month_ShortAugust: String { return self._s[1513]! } - public var TwoStepAuth_SetPasswordHelp: String { return self._s[1514]! } - public var Notifications_Reset: String { return self._s[1515]! } - public var Conversation_Pin: String { return self._s[1516]! } - public var Passport_Language_lv: String { return self._s[1517]! } - public var Permissions_PeopleNearbyAllowInSettings_v0: String { return self._s[1518]! } - public var BlockedUsers_Info: String { return self._s[1519]! } - public var SettingsSearch_Synonyms_Data_AutoplayVideos: String { return self._s[1521]! } - public var Watch_Conversation_Unblock: String { return self._s[1523]! } + public var Compose_NewChannel: String { return self._s[1484]! } + public var ChatSettings_AutoDownloadSettings_TypePhoto: String { return self._s[1487]! } + public var Conversation_ReportSpamGroupConfirmation: String { return self._s[1489]! } + public var Channel_Info_Stickers: String { return self._s[1490]! } + public var AutoNightTheme_PreferredTheme: String { return self._s[1491]! } + public var PrivacyPolicy_AgeVerificationAgree: String { return self._s[1492]! } + public var Passport_DeletePersonalDetails: String { return self._s[1493]! } + public var LogoutOptions_AddAccountTitle: String { return self._s[1494]! } + public var Channel_DiscussionGroupInfo: String { return self._s[1495]! } + public var Conversation_SearchNoResults: String { return self._s[1497]! } + public var MessagePoll_LabelAnonymous: String { return self._s[1498]! } + public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[1499]! } + public var Login_Code: String { return self._s[1500]! } + public var Watch_Suggestion_WhatsUp: String { return self._s[1501]! } + public var Weekday_ShortThursday: String { return self._s[1502]! } + public var Resolve_ErrorNotFound: String { return self._s[1504]! } + public var LastSeen_Offline: String { return self._s[1505]! } + public var PeopleNearby_NoMembers: String { return self._s[1506]! } + public var GroupPermission_AddMembersNotAvailable: String { return self._s[1507]! } + public var Privacy_Calls_AlwaysAllow_Title: String { return self._s[1508]! } + public var GroupInfo_Title: String { return self._s[1509]! } + public var NotificationsSound_Note: String { return self._s[1510]! } + public var Conversation_EditingMessagePanelTitle: String { return self._s[1511]! } + public var Watch_Message_Poll: String { return self._s[1512]! } + public var Privacy_Calls: String { return self._s[1513]! } + public var Month_ShortAugust: String { return self._s[1514]! } + public var TwoStepAuth_SetPasswordHelp: String { return self._s[1515]! } + public var Notifications_Reset: String { return self._s[1516]! } + public var Conversation_Pin: String { return self._s[1517]! } + public var Passport_Language_lv: String { return self._s[1518]! } + public var Permissions_PeopleNearbyAllowInSettings_v0: String { return self._s[1519]! } + public var BlockedUsers_Info: String { return self._s[1520]! } + public var SettingsSearch_Synonyms_Data_AutoplayVideos: String { return self._s[1522]! } + public var Watch_Conversation_Unblock: String { return self._s[1524]! } public func Time_MonthOfYear_m9(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1524]!, self._r[1524]!, [_0]) + return formatWithArgumentRanges(self._s[1525]!, self._r[1525]!, [_0]) } - public var CloudStorage_Title: String { return self._s[1525]! } - public var GroupInfo_DeleteAndExitConfirmation: String { return self._s[1526]! } + public var CloudStorage_Title: String { return self._s[1526]! } + public var GroupInfo_DeleteAndExitConfirmation: String { return self._s[1527]! } public func NetworkUsageSettings_WifiUsageSince(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1527]!, self._r[1527]!, [_0]) + return formatWithArgumentRanges(self._s[1528]!, self._r[1528]!, [_0]) } - public var Channel_AdminLogFilter_AdminsTitle: String { return self._s[1528]! } - public var Watch_Suggestion_OnMyWay: String { return self._s[1529]! } - public var TwoStepAuth_RecoveryEmailTitle: String { return self._s[1530]! } - public var Passport_Address_EditBankStatement: String { return self._s[1531]! } + public var Channel_AdminLogFilter_AdminsTitle: String { return self._s[1529]! } + public var Watch_Suggestion_OnMyWay: String { return self._s[1530]! } + public var TwoStepAuth_RecoveryEmailTitle: String { return self._s[1531]! } + public var Passport_Address_EditBankStatement: String { return self._s[1532]! } public func Channel_AdminLog_MessageChangedUnlinkedGroup(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1532]!, self._r[1532]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1533]!, self._r[1533]!, [_1, _2]) } - public var ChatSettings_DownloadInBackgroundInfo: String { return self._s[1533]! } - public var ShareMenu_Comment: String { return self._s[1534]! } - public var Permissions_ContactsTitle_v0: String { return self._s[1535]! } - public var Notifications_PermissionsTitle: String { return self._s[1536]! } - public var GroupPermission_NoSendLinks: String { return self._s[1537]! } - public var Privacy_Forwards_NeverAllow_Title: String { return self._s[1538]! } - public var Settings_Support: String { return self._s[1539]! } - public var Notifications_ChannelNotificationsSound: String { return self._s[1540]! } - public var SettingsSearch_Synonyms_Data_AutoDownloadReset: String { return self._s[1541]! } - public var Privacy_Forwards_Preview: String { return self._s[1542]! } - public var GroupPermission_ApplyAlertAction: String { return self._s[1543]! } - public var Watch_Stickers_StickerPacks: String { return self._s[1544]! } - public var Common_Select: String { return self._s[1546]! } - public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[1547]! } - public var WallpaperSearch_ColorGray: String { return self._s[1549]! } - public var ChatAdmins_AllMembersAreAdminsOffHelp: String { return self._s[1550]! } - public var PasscodeSettings_AutoLock_IfAwayFor_5hours: String { return self._s[1551]! } - public var Appearance_PreviewReplyAuthor: String { return self._s[1552]! } - public var TwoStepAuth_RecoveryTitle: String { return self._s[1553]! } - public var Widget_AuthRequired: String { return self._s[1554]! } - public var Camera_FlashOn: String { return self._s[1555]! } - public var Channel_Stickers_NotFoundHelp: String { return self._s[1556]! } - public var Watch_Suggestion_OK: String { return self._s[1557]! } + public var ChatSettings_DownloadInBackgroundInfo: String { return self._s[1534]! } + public var ShareMenu_Comment: String { return self._s[1535]! } + public var Permissions_ContactsTitle_v0: String { return self._s[1536]! } + public var Notifications_PermissionsTitle: String { return self._s[1537]! } + public var GroupPermission_NoSendLinks: String { return self._s[1538]! } + public var Privacy_Forwards_NeverAllow_Title: String { return self._s[1539]! } + public var Settings_Support: String { return self._s[1540]! } + public var Notifications_ChannelNotificationsSound: String { return self._s[1541]! } + public var SettingsSearch_Synonyms_Data_AutoDownloadReset: String { return self._s[1542]! } + public var Privacy_Forwards_Preview: String { return self._s[1543]! } + public var GroupPermission_ApplyAlertAction: String { return self._s[1544]! } + public var Watch_Stickers_StickerPacks: String { return self._s[1545]! } + public var Common_Select: String { return self._s[1547]! } + public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[1548]! } + public var WallpaperSearch_ColorGray: String { return self._s[1550]! } + public var ChatAdmins_AllMembersAreAdminsOffHelp: String { return self._s[1551]! } + public var PasscodeSettings_AutoLock_IfAwayFor_5hours: String { return self._s[1552]! } + public var Appearance_PreviewReplyAuthor: String { return self._s[1553]! } + public var TwoStepAuth_RecoveryTitle: String { return self._s[1554]! } + public var Widget_AuthRequired: String { return self._s[1555]! } + public var Camera_FlashOn: String { return self._s[1556]! } + public var Channel_Stickers_NotFoundHelp: String { return self._s[1557]! } + public var Watch_Suggestion_OK: String { return self._s[1558]! } public func Username_LinkHint(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1559]!, self._r[1559]!, [_0]) + return formatWithArgumentRanges(self._s[1560]!, self._r[1560]!, [_0]) } public func Notification_PinnedLiveLocationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1561]!, self._r[1561]!, [_0]) + return formatWithArgumentRanges(self._s[1562]!, self._r[1562]!, [_0]) } - public var TextFormat_Strikethrough: String { return self._s[1562]! } - public var DialogList_AdLabel: String { return self._s[1563]! } - public var WatchRemote_NotificationText: String { return self._s[1564]! } - public var SettingsSearch_Synonyms_Notifications_MessageNotificationsAlert: String { return self._s[1565]! } - public var Conversation_ReportSpam: String { return self._s[1566]! } - public var SettingsSearch_Synonyms_Privacy_Data_TopPeers: String { return self._s[1567]! } - public var Settings_LogoutConfirmationTitle: String { return self._s[1569]! } - public var PhoneLabel_Title: String { return self._s[1570]! } - public var Passport_Address_EditRentalAgreement: String { return self._s[1571]! } - public var Settings_ChangePhoneNumber: String { return self._s[1572]! } - public var Notifications_ExceptionsTitle: String { return self._s[1573]! } - public var Notifications_AlertTones: String { return self._s[1574]! } - public var Call_ReportIncludeLogDescription: String { return self._s[1575]! } - public var SettingsSearch_Synonyms_Notifications_ResetAllNotifications: String { return self._s[1576]! } - public var AutoDownloadSettings_PrivateChats: String { return self._s[1577]! } - public var TwoStepAuth_AddHintTitle: String { return self._s[1579]! } - public var ReportPeer_ReasonOther: String { return self._s[1580]! } - public var KeyCommand_ScrollDown: String { return self._s[1582]! } + public var TextFormat_Strikethrough: String { return self._s[1563]! } + public var DialogList_AdLabel: String { return self._s[1564]! } + public var WatchRemote_NotificationText: String { return self._s[1565]! } + public var SettingsSearch_Synonyms_Notifications_MessageNotificationsAlert: String { return self._s[1566]! } + public var Conversation_ReportSpam: String { return self._s[1567]! } + public var SettingsSearch_Synonyms_Privacy_Data_TopPeers: String { return self._s[1568]! } + public var Settings_LogoutConfirmationTitle: String { return self._s[1570]! } + public var PhoneLabel_Title: String { return self._s[1571]! } + public var Passport_Address_EditRentalAgreement: String { return self._s[1572]! } + public var Settings_ChangePhoneNumber: String { return self._s[1573]! } + public var Notifications_ExceptionsTitle: String { return self._s[1574]! } + public var Notifications_AlertTones: String { return self._s[1575]! } + public var Call_ReportIncludeLogDescription: String { return self._s[1576]! } + public var SettingsSearch_Synonyms_Notifications_ResetAllNotifications: String { return self._s[1577]! } + public var AutoDownloadSettings_PrivateChats: String { return self._s[1578]! } + public var TwoStepAuth_AddHintTitle: String { return self._s[1580]! } + public var ReportPeer_ReasonOther: String { return self._s[1581]! } + public var KeyCommand_ScrollDown: String { return self._s[1583]! } public func Login_BannedPhoneSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1583]!, self._r[1583]!, [_0]) + return formatWithArgumentRanges(self._s[1584]!, self._r[1584]!, [_0]) } - public var NetworkUsageSettings_MediaVideoDataSection: String { return self._s[1584]! } - public var ChannelInfo_DeleteGroupConfirmation: String { return self._s[1585]! } - public var AuthSessions_LogOut: String { return self._s[1586]! } - public var Passport_Identity_TypeInternalPassport: String { return self._s[1587]! } - public var ChatSettings_AutoDownloadVoiceMessages: String { return self._s[1588]! } - public var Passport_Phone_Title: String { return self._s[1589]! } - public var Settings_PhoneNumber: String { return self._s[1590]! } - public var NotificationsSound_Alert: String { return self._s[1591]! } - public var WebSearch_SearchNoResults: String { return self._s[1592]! } - public var Privacy_ProfilePhoto_AlwaysShareWith_Title: String { return self._s[1594]! } - public var LogoutOptions_AlternativeOptionsSection: String { return self._s[1595]! } - public var SettingsSearch_Synonyms_Passport: String { return self._s[1596]! } - public var PhotoEditor_CurvesTool: String { return self._s[1597]! } - public var Checkout_PaymentMethod: String { return self._s[1599]! } + public var NetworkUsageSettings_MediaVideoDataSection: String { return self._s[1585]! } + public var ChannelInfo_DeleteGroupConfirmation: String { return self._s[1586]! } + public var AuthSessions_LogOut: String { return self._s[1587]! } + public var Passport_Identity_TypeInternalPassport: String { return self._s[1588]! } + public var ChatSettings_AutoDownloadVoiceMessages: String { return self._s[1589]! } + public var Passport_Phone_Title: String { return self._s[1590]! } + public var Settings_PhoneNumber: String { return self._s[1591]! } + public var NotificationsSound_Alert: String { return self._s[1592]! } + public var WebSearch_SearchNoResults: String { return self._s[1593]! } + public var Privacy_ProfilePhoto_AlwaysShareWith_Title: String { return self._s[1595]! } + public var LogoutOptions_AlternativeOptionsSection: String { return self._s[1596]! } + public var SettingsSearch_Synonyms_Passport: String { return self._s[1597]! } + public var PhotoEditor_CurvesTool: String { return self._s[1598]! } + public var Checkout_PaymentMethod: String { return self._s[1600]! } public func PUSH_CHAT_ADD_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1600]!, self._r[1600]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1601]!, self._r[1601]!, [_1, _2]) } - public var Contacts_AccessDeniedError: String { return self._s[1601]! } - public var Camera_PhotoMode: String { return self._s[1604]! } - public var Passport_Address_AddUtilityBill: String { return self._s[1605]! } - public var CallSettings_OnMobile: String { return self._s[1606]! } - public var Tour_Text2: String { return self._s[1607]! } + public var Contacts_AccessDeniedError: String { return self._s[1602]! } + public var Camera_PhotoMode: String { return self._s[1605]! } + public var Passport_Address_AddUtilityBill: String { return self._s[1606]! } + public var CallSettings_OnMobile: String { return self._s[1607]! } + public var Tour_Text2: String { return self._s[1608]! } public func PUSH_CHAT_MESSAGE_ROUND(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1608]!, self._r[1608]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1609]!, self._r[1609]!, [_1, _2]) } - public var DialogList_EncryptionProcessing: String { return self._s[1610]! } - public var Permissions_Skip: String { return self._s[1611]! } - public var SecretImage_Title: String { return self._s[1612]! } - public var Watch_MessageView_Title: String { return self._s[1613]! } - public var Channel_DiscussionGroupAdd: String { return self._s[1614]! } - public var AttachmentMenu_Poll: String { return self._s[1615]! } + public var DialogList_EncryptionProcessing: String { return self._s[1611]! } + public var Permissions_Skip: String { return self._s[1612]! } + public var SecretImage_Title: String { return self._s[1613]! } + public var Watch_MessageView_Title: String { return self._s[1614]! } + public var Channel_DiscussionGroupAdd: String { return self._s[1615]! } + public var AttachmentMenu_Poll: String { return self._s[1616]! } public func Notification_GroupInviter(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1616]!, self._r[1616]!, [_0]) + return formatWithArgumentRanges(self._s[1617]!, self._r[1617]!, [_0]) } public func Channel_DiscussionGroup_PrivateChannelLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1617]!, self._r[1617]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1618]!, self._r[1618]!, [_1, _2]) } - public var Notification_CallCanceled: String { return self._s[1618]! } - public var WallpaperPreview_Title: String { return self._s[1619]! } - public var Privacy_PaymentsClear_PaymentInfo: String { return self._s[1620]! } - public var Settings_ProxyConnecting: String { return self._s[1621]! } - public var Settings_CheckPhoneNumberText: String { return self._s[1623]! } - public var Profile_MessageLifetime5s: String { return self._s[1624]! } - public var Username_InvalidCharacters: String { return self._s[1625]! } - public var WallpaperPreview_CropBottomText: String { return self._s[1626]! } - public var AutoDownloadSettings_LimitBySize: String { return self._s[1627]! } - public var Settings_AddAccount: String { return self._s[1628]! } - public var Notification_CreatedChannel: String { return self._s[1631]! } + public var Notification_CallCanceled: String { return self._s[1619]! } + public var WallpaperPreview_Title: String { return self._s[1620]! } + public var Privacy_PaymentsClear_PaymentInfo: String { return self._s[1621]! } + public var Settings_ProxyConnecting: String { return self._s[1622]! } + public var Settings_CheckPhoneNumberText: String { return self._s[1624]! } + public var Profile_MessageLifetime5s: String { return self._s[1625]! } + public var Username_InvalidCharacters: String { return self._s[1626]! } + public var WallpaperPreview_CropBottomText: String { return self._s[1627]! } + public var AutoDownloadSettings_LimitBySize: String { return self._s[1628]! } + public var Settings_AddAccount: String { return self._s[1629]! } + public var Notification_CreatedChannel: String { return self._s[1632]! } public func PUSH_CHAT_DELETE_MEMBER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1632]!, self._r[1632]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1633]!, self._r[1633]!, [_1, _2, _3]) } - public var Passcode_AppLockedAlert: String { return self._s[1634]! } - public var Contacts_TopSection: String { return self._s[1635]! } + public var Passcode_AppLockedAlert: String { return self._s[1635]! } + public var StickerPacksSettings_AnimatedStickersInfo: String { return self._s[1636]! } + public var Contacts_TopSection: String { return self._s[1637]! } public func Time_MonthOfYear_m6(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1636]!, self._r[1636]!, [_0]) + return formatWithArgumentRanges(self._s[1638]!, self._r[1638]!, [_0]) } - public var ReportPeer_ReasonSpam: String { return self._s[1637]! } - public var UserInfo_TapToCall: String { return self._s[1638]! } - public var Conversation_ForwardAuthorHiddenTooltip: String { return self._s[1640]! } - public var AutoDownloadSettings_DataUsageCustom: String { return self._s[1641]! } - public var Common_Search: String { return self._s[1642]! } + public var ReportPeer_ReasonSpam: String { return self._s[1639]! } + public var UserInfo_TapToCall: String { return self._s[1640]! } + public var Conversation_ForwardAuthorHiddenTooltip: String { return self._s[1642]! } + public var AutoDownloadSettings_DataUsageCustom: String { return self._s[1643]! } + public var Common_Search: String { return self._s[1644]! } public func Channel_AdminLog_MessageChangedGroupGeoLocation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1643]!, self._r[1643]!, [_0]) + return formatWithArgumentRanges(self._s[1645]!, self._r[1645]!, [_0]) } - public var AuthSessions_IncompleteAttemptsInfo: String { return self._s[1644]! } - public var Message_InvoiceLabel: String { return self._s[1645]! } - public var Conversation_InputTextPlaceholder: String { return self._s[1646]! } - public var NetworkUsageSettings_MediaImageDataSection: String { return self._s[1647]! } + public var AuthSessions_IncompleteAttemptsInfo: String { return self._s[1646]! } + public var Message_InvoiceLabel: String { return self._s[1647]! } + public var Conversation_InputTextPlaceholder: String { return self._s[1648]! } + public var NetworkUsageSettings_MediaImageDataSection: String { return self._s[1649]! } public func Passport_Address_UploadOneOfScan(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1648]!, self._r[1648]!, [_0]) + return formatWithArgumentRanges(self._s[1650]!, self._r[1650]!, [_0]) } - public var Conversation_Info: String { return self._s[1649]! } - public var Login_InfoDeletePhoto: String { return self._s[1650]! } - public var Passport_Language_vi: String { return self._s[1652]! } - public var UserInfo_ScamUserWarning: String { return self._s[1653]! } - public var Conversation_Search: String { return self._s[1654]! } - public var DialogList_DeleteBotConversationConfirmation: String { return self._s[1655]! } - public var ReportPeer_ReasonPornography: String { return self._s[1656]! } - public var AutoDownloadSettings_PhotosTitle: String { return self._s[1657]! } - public var Conversation_SendMessageErrorGroupRestricted: String { return self._s[1658]! } - public var Map_LiveLocationGroupDescription: String { return self._s[1659]! } - public var Channel_Setup_TypeHeader: String { return self._s[1660]! } - public var AuthSessions_LoggedIn: String { return self._s[1661]! } - public var Privacy_Forwards_AlwaysAllow_Title: String { return self._s[1662]! } - public var Login_SmsRequestState3: String { return self._s[1663]! } - public var Passport_Address_EditUtilityBill: String { return self._s[1664]! } - public var Appearance_ReduceMotionInfo: String { return self._s[1665]! } - public var Join_ChannelsTooMuch: String { return self._s[1666]! } - public var Channel_Edit_LinkItem: String { return self._s[1667]! } - public var Privacy_Calls_P2PNever: String { return self._s[1668]! } - public var Conversation_AddToReadingList: String { return self._s[1670]! } - public var Message_Animation: String { return self._s[1671]! } - public var Conversation_DefaultRestrictedMedia: String { return self._s[1672]! } - public var Map_Unknown: String { return self._s[1673]! } - public var AutoDownloadSettings_LastDelimeter: String { return self._s[1674]! } + public var Conversation_Info: String { return self._s[1651]! } + public var Login_InfoDeletePhoto: String { return self._s[1652]! } + public var Passport_Language_vi: String { return self._s[1654]! } + public var UserInfo_ScamUserWarning: String { return self._s[1655]! } + public var Conversation_Search: String { return self._s[1656]! } + public var DialogList_DeleteBotConversationConfirmation: String { return self._s[1657]! } + public var ReportPeer_ReasonPornography: String { return self._s[1658]! } + public var AutoDownloadSettings_PhotosTitle: String { return self._s[1659]! } + public var Conversation_SendMessageErrorGroupRestricted: String { return self._s[1660]! } + public var Map_LiveLocationGroupDescription: String { return self._s[1661]! } + public var Channel_Setup_TypeHeader: String { return self._s[1662]! } + public var AuthSessions_LoggedIn: String { return self._s[1663]! } + public var Privacy_Forwards_AlwaysAllow_Title: String { return self._s[1664]! } + public var Login_SmsRequestState3: String { return self._s[1665]! } + public var Passport_Address_EditUtilityBill: String { return self._s[1666]! } + public var Appearance_ReduceMotionInfo: String { return self._s[1667]! } + public var Join_ChannelsTooMuch: String { return self._s[1668]! } + public var Channel_Edit_LinkItem: String { return self._s[1669]! } + public var Privacy_Calls_P2PNever: String { return self._s[1670]! } + public var Conversation_AddToReadingList: String { return self._s[1672]! } + public var Message_Animation: String { return self._s[1673]! } + public var Conversation_DefaultRestrictedMedia: String { return self._s[1674]! } + public var Map_Unknown: String { return self._s[1675]! } + public var AutoDownloadSettings_LastDelimeter: String { return self._s[1676]! } public func PUSH_PINNED_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1675]!, self._r[1675]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1677]!, self._r[1677]!, [_1, _2]) } public func Passport_FieldOneOf_Or(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1676]!, self._r[1676]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1678]!, self._r[1678]!, [_1, _2]) } - public var Call_StatusRequesting: String { return self._s[1677]! } - public var Conversation_SecretChatContextBotAlert: String { return self._s[1678]! } - public var SocksProxySetup_ProxyStatusChecking: String { return self._s[1679]! } + public var Call_StatusRequesting: String { return self._s[1679]! } + public var Conversation_SecretChatContextBotAlert: String { return self._s[1680]! } + public var SocksProxySetup_ProxyStatusChecking: String { return self._s[1681]! } public func PUSH_CHAT_MESSAGE_DOC(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1680]!, self._r[1680]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1682]!, self._r[1682]!, [_1, _2]) } public func Notification_PinnedLocationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1681]!, self._r[1681]!, [_0]) + return formatWithArgumentRanges(self._s[1683]!, self._r[1683]!, [_0]) } - public var Update_Skip: String { return self._s[1682]! } - public var Group_Username_RemoveExistingUsernamesInfo: String { return self._s[1683]! } - public var Message_PinnedPollMessage: String { return self._s[1684]! } - public var BlockedUsers_Title: String { return self._s[1685]! } + public var Update_Skip: String { return self._s[1684]! } + public var Group_Username_RemoveExistingUsernamesInfo: String { return self._s[1685]! } + public var Message_PinnedPollMessage: String { return self._s[1686]! } + public var BlockedUsers_Title: String { return self._s[1687]! } public func PUSH_CHANNEL_MESSAGE_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1686]!, self._r[1686]!, [_1]) + return formatWithArgumentRanges(self._s[1688]!, self._r[1688]!, [_1]) } - public var Username_CheckingUsername: String { return self._s[1687]! } - public var NotificationsSound_Bell: String { return self._s[1688]! } - public var Conversation_SendMessageErrorFlood: String { return self._s[1689]! } - public var Weekday_Monday: String { return self._s[1690]! } - public var SettingsSearch_Synonyms_Notifications_DisplayNamesOnLockScreen: String { return self._s[1691]! } - public var ChannelMembers_ChannelAdminsTitle: String { return self._s[1692]! } - public var ChatSettings_Groups: String { return self._s[1693]! } - public var Your_card_was_declined: String { return self._s[1694]! } - public var TwoStepAuth_EnterPasswordHelp: String { return self._s[1696]! } - public var ChatList_Unmute: String { return self._s[1697]! } - public var PhotoEditor_CurvesAll: String { return self._s[1698]! } - public var Weekday_ShortTuesday: String { return self._s[1699]! } - public var DialogList_Read: String { return self._s[1700]! } - public var Appearance_AppIconClassic: String { return self._s[1701]! } - public var ChannelMembers_WhoCanAddMembers_AllMembers: String { return self._s[1702]! } - public var Passport_Identity_Gender: String { return self._s[1703]! } + public var Username_CheckingUsername: String { return self._s[1689]! } + public var NotificationsSound_Bell: String { return self._s[1690]! } + public var Conversation_SendMessageErrorFlood: String { return self._s[1691]! } + public var Weekday_Monday: String { return self._s[1692]! } + public var SettingsSearch_Synonyms_Notifications_DisplayNamesOnLockScreen: String { return self._s[1693]! } + public var ChannelMembers_ChannelAdminsTitle: String { return self._s[1694]! } + public var ChatSettings_Groups: String { return self._s[1695]! } + public var Your_card_was_declined: String { return self._s[1696]! } + public var TwoStepAuth_EnterPasswordHelp: String { return self._s[1698]! } + public var ChatList_Unmute: String { return self._s[1699]! } + public var PhotoEditor_CurvesAll: String { return self._s[1700]! } + public var Weekday_ShortTuesday: String { return self._s[1701]! } + public var DialogList_Read: String { return self._s[1702]! } + public var Appearance_AppIconClassic: String { return self._s[1703]! } + public var ChannelMembers_WhoCanAddMembers_AllMembers: String { return self._s[1704]! } + public var Passport_Identity_Gender: String { return self._s[1705]! } public func Target_ShareGameConfirmationPrivate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1704]!, self._r[1704]!, [_0]) + return formatWithArgumentRanges(self._s[1706]!, self._r[1706]!, [_0]) } - public var Target_SelectGroup: String { return self._s[1705]! } + public var Target_SelectGroup: String { return self._s[1707]! } public func DialogList_EncryptedChatStartedIncoming(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1707]!, self._r[1707]!, [_0]) + return formatWithArgumentRanges(self._s[1709]!, self._r[1709]!, [_0]) } - public var Passport_Language_en: String { return self._s[1708]! } - public var AutoDownloadSettings_AutodownloadPhotos: String { return self._s[1709]! } - public var Channel_Username_CreatePublicLinkHelp: String { return self._s[1710]! } - public var Login_CancelPhoneVerificationContinue: String { return self._s[1711]! } - public var Checkout_NewCard_PaymentCard: String { return self._s[1713]! } - public var Login_InfoHelp: String { return self._s[1714]! } - public var Contacts_PermissionsSuppressWarningTitle: String { return self._s[1715]! } - public var SettingsSearch_Synonyms_Stickers_FeaturedPacks: String { return self._s[1716]! } + public var Passport_Language_en: String { return self._s[1710]! } + public var AutoDownloadSettings_AutodownloadPhotos: String { return self._s[1711]! } + public var Channel_Username_CreatePublicLinkHelp: String { return self._s[1712]! } + public var Login_CancelPhoneVerificationContinue: String { return self._s[1713]! } + public var Checkout_NewCard_PaymentCard: String { return self._s[1715]! } + public var Login_InfoHelp: String { return self._s[1716]! } + public var Contacts_PermissionsSuppressWarningTitle: String { return self._s[1717]! } + public var SettingsSearch_Synonyms_Stickers_FeaturedPacks: String { return self._s[1718]! } public func Channel_AdminLog_MessageChangedLinkedChannel(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1717]!, self._r[1717]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1719]!, self._r[1719]!, [_1, _2]) } - public var SocksProxySetup_AddProxy: String { return self._s[1720]! } - public var CreatePoll_Title: String { return self._s[1721]! } - public var SettingsSearch_Synonyms_Privacy_Data_SecretChatLinkPreview: String { return self._s[1722]! } - public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[1723]! } - public var UserInfo_GroupsInCommon: String { return self._s[1724]! } - public var Call_AudioRouteHide: String { return self._s[1725]! } - public var ContactInfo_PhoneLabelMobile: String { return self._s[1727]! } + public var SocksProxySetup_AddProxy: String { return self._s[1722]! } + public var CreatePoll_Title: String { return self._s[1723]! } + public var SettingsSearch_Synonyms_Privacy_Data_SecretChatLinkPreview: String { return self._s[1724]! } + public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[1725]! } + public var UserInfo_GroupsInCommon: String { return self._s[1726]! } + public var Call_AudioRouteHide: String { return self._s[1727]! } + public var ContactInfo_PhoneLabelMobile: String { return self._s[1729]! } public func ChatList_LeaveGroupConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1728]!, self._r[1728]!, [_0]) + return formatWithArgumentRanges(self._s[1730]!, self._r[1730]!, [_0]) } - public var TextFormat_Bold: String { return self._s[1729]! } - public var FastTwoStepSetup_EmailSection: String { return self._s[1730]! } - public var Notifications_Title: String { return self._s[1731]! } - public var Group_Username_InvalidTooShort: String { return self._s[1732]! } - public var Channel_ErrorAddTooMuch: String { return self._s[1733]! } + public var TextFormat_Bold: String { return self._s[1731]! } + public var FastTwoStepSetup_EmailSection: String { return self._s[1732]! } + public var Notifications_Title: String { return self._s[1733]! } + public var Group_Username_InvalidTooShort: String { return self._s[1734]! } + public var Channel_ErrorAddTooMuch: String { return self._s[1735]! } public func DialogList_MultipleTypingSuffix(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1734]!, self._r[1734]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[1736]!, self._r[1736]!, ["\(_0)"]) } - public var Stickers_SuggestAdded: String { return self._s[1736]! } - public var Login_CountryCode: String { return self._s[1737]! } - public var ChatSettings_AutoPlayVideos: String { return self._s[1738]! } - public var Map_GetDirections: String { return self._s[1739]! } - public var Login_PhoneFloodError: String { return self._s[1740]! } + public var Stickers_SuggestAdded: String { return self._s[1738]! } + public var Login_CountryCode: String { return self._s[1739]! } + public var ChatSettings_AutoPlayVideos: String { return self._s[1740]! } + public var Map_GetDirections: String { return self._s[1741]! } + public var Login_PhoneFloodError: String { return self._s[1742]! } public func Time_MonthOfYear_m3(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1741]!, self._r[1741]!, [_0]) + return formatWithArgumentRanges(self._s[1743]!, self._r[1743]!, [_0]) } - public var Settings_SetUsername: String { return self._s[1743]! } - public var Group_Location_ChangeLocation: String { return self._s[1744]! } - public var Notification_GroupInviterSelf: String { return self._s[1745]! } - public var InstantPage_TapToOpenLink: String { return self._s[1746]! } + public var Settings_SetUsername: String { return self._s[1745]! } + public var Group_Location_ChangeLocation: String { return self._s[1746]! } + public var Notification_GroupInviterSelf: String { return self._s[1747]! } + public var InstantPage_TapToOpenLink: String { return self._s[1748]! } public func Notification_ChannelInviter(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1747]!, self._r[1747]!, [_0]) + return formatWithArgumentRanges(self._s[1749]!, self._r[1749]!, [_0]) } - public var Watch_Suggestion_TalkLater: String { return self._s[1748]! } - public var SecretChat_Title: String { return self._s[1749]! } - public var Group_UpgradeNoticeText1: String { return self._s[1750]! } - public var AuthSessions_Title: String { return self._s[1751]! } + public var Watch_Suggestion_TalkLater: String { return self._s[1750]! } + public var SecretChat_Title: String { return self._s[1751]! } + public var Group_UpgradeNoticeText1: String { return self._s[1752]! } + public var AuthSessions_Title: String { return self._s[1753]! } public func TextFormat_AddLinkText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1752]!, self._r[1752]!, [_0]) + return formatWithArgumentRanges(self._s[1754]!, self._r[1754]!, [_0]) } - public var PhotoEditor_CropAuto: String { return self._s[1753]! } - public var Channel_About_Title: String { return self._s[1754]! } - public var FastTwoStepSetup_EmailHelp: String { return self._s[1755]! } + public var PhotoEditor_CropAuto: String { return self._s[1755]! } + public var Channel_About_Title: String { return self._s[1756]! } + public var FastTwoStepSetup_EmailHelp: String { return self._s[1757]! } public func Conversation_Bytes(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1757]!, self._r[1757]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[1759]!, self._r[1759]!, ["\(_0)"]) } - public var Conversation_PinMessageAlert_OnlyPin: String { return self._s[1759]! } - public var Group_Setup_HistoryVisibleHelp: String { return self._s[1760]! } + public var Conversation_PinMessageAlert_OnlyPin: String { return self._s[1761]! } + public var Group_Setup_HistoryVisibleHelp: String { return self._s[1762]! } public func PUSH_MESSAGE_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1761]!, self._r[1761]!, [_1]) + return formatWithArgumentRanges(self._s[1763]!, self._r[1763]!, [_1]) } public func SharedMedia_SearchNoResultsDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1763]!, self._r[1763]!, [_0]) + return formatWithArgumentRanges(self._s[1765]!, self._r[1765]!, [_0]) } public func TwoStepAuth_RecoveryEmailUnavailable(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1764]!, self._r[1764]!, [_0]) + return formatWithArgumentRanges(self._s[1766]!, self._r[1766]!, [_0]) } - public var Privacy_PaymentsClearInfoHelp: String { return self._s[1765]! } - public var Presence_online: String { return self._s[1767]! } - public var PasscodeSettings_Title: String { return self._s[1768]! } - public var Passport_Identity_ExpiryDatePlaceholder: String { return self._s[1769]! } - public var Web_OpenExternal: String { return self._s[1770]! } - public var AutoDownloadSettings_AutoDownload: String { return self._s[1772]! } - public var Channel_OwnershipTransfer_EnterPasswordText: String { return self._s[1773]! } - public var LocalGroup_Title: String { return self._s[1774]! } + public var Privacy_PaymentsClearInfoHelp: String { return self._s[1767]! } + public var Presence_online: String { return self._s[1769]! } + public var PasscodeSettings_Title: String { return self._s[1770]! } + public var Passport_Identity_ExpiryDatePlaceholder: String { return self._s[1771]! } + public var Web_OpenExternal: String { return self._s[1772]! } + public var AutoDownloadSettings_AutoDownload: String { return self._s[1774]! } + public var Channel_OwnershipTransfer_EnterPasswordText: String { return self._s[1775]! } + public var LocalGroup_Title: String { return self._s[1776]! } public func AutoNightTheme_AutomaticHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1775]!, self._r[1775]!, [_0]) + return formatWithArgumentRanges(self._s[1777]!, self._r[1777]!, [_0]) } - public var FastTwoStepSetup_PasswordConfirmationPlaceholder: String { return self._s[1776]! } - public var Map_YouAreHere: String { return self._s[1777]! } + public var FastTwoStepSetup_PasswordConfirmationPlaceholder: String { return self._s[1778]! } + public var Map_YouAreHere: String { return self._s[1779]! } public func AuthSessions_Message(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1778]!, self._r[1778]!, [_0]) + return formatWithArgumentRanges(self._s[1780]!, self._r[1780]!, [_0]) } public func ChatList_DeleteChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1779]!, self._r[1779]!, [_0]) + return formatWithArgumentRanges(self._s[1781]!, self._r[1781]!, [_0]) } - public var PrivacyLastSeenSettings_AlwaysShareWith: String { return self._s[1780]! } - public var Target_InviteToGroupErrorAlreadyInvited: String { return self._s[1781]! } + public var PrivacyLastSeenSettings_AlwaysShareWith: String { return self._s[1782]! } + public var Target_InviteToGroupErrorAlreadyInvited: String { return self._s[1783]! } public func AuthSessions_AppUnofficial(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1782]!, self._r[1782]!, [_0]) + return formatWithArgumentRanges(self._s[1784]!, self._r[1784]!, [_0]) } public func DialogList_LiveLocationSharingTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1783]!, self._r[1783]!, [_0]) + return formatWithArgumentRanges(self._s[1785]!, self._r[1785]!, [_0]) } - public var SocksProxySetup_Username: String { return self._s[1784]! } - public var Bot_Start: String { return self._s[1785]! } + public var SocksProxySetup_Username: String { return self._s[1786]! } + public var Bot_Start: String { return self._s[1787]! } public func Channel_AdminLog_EmptyFilterQueryText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1786]!, self._r[1786]!, [_0]) + return formatWithArgumentRanges(self._s[1788]!, self._r[1788]!, [_0]) } public func Channel_AdminLog_MessagePinned(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1787]!, self._r[1787]!, [_0]) + return formatWithArgumentRanges(self._s[1789]!, self._r[1789]!, [_0]) } - public var Contacts_SortByPresence: String { return self._s[1788]! } - public var Conversation_DiscardVoiceMessageTitle: String { return self._s[1790]! } + public var Contacts_SortByPresence: String { return self._s[1790]! } + public var Conversation_DiscardVoiceMessageTitle: String { return self._s[1792]! } public func PUSH_CHAT_CREATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1791]!, self._r[1791]!, [_1, _2]) - } - public func PrivacySettings_LastSeenContactsMinus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1792]!, self._r[1792]!, [_0]) - } - public func Channel_AdminLog_MessageChangedLinkedGroup(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[1793]!, self._r[1793]!, [_1, _2]) } - public var Passport_Email_EnterOtherEmail: String { return self._s[1794]! } - public var Login_InfoAvatarPhoto: String { return self._s[1795]! } - public var Privacy_PaymentsClear_ShippingInfo: String { return self._s[1796]! } - public var Tour_Title4: String { return self._s[1797]! } - public var Passport_Identity_Translation: String { return self._s[1798]! } - public var SettingsSearch_Synonyms_Notifications_ContactJoined: String { return self._s[1799]! } - public var Login_TermsOfServiceLabel: String { return self._s[1801]! } - public var Passport_Language_it: String { return self._s[1802]! } - public var KeyCommand_JumpToNextUnreadChat: String { return self._s[1803]! } - public var Passport_Identity_SelfieHelp: String { return self._s[1804]! } - public var Conversation_ClearAll: String { return self._s[1806]! } - public var Channel_OwnershipTransfer_Title: String { return self._s[1808]! } - public var TwoStepAuth_FloodError: String { return self._s[1809]! } + public func PrivacySettings_LastSeenContactsMinus(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1794]!, self._r[1794]!, [_0]) + } + public func Channel_AdminLog_MessageChangedLinkedGroup(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[1795]!, self._r[1795]!, [_1, _2]) + } + public var Passport_Email_EnterOtherEmail: String { return self._s[1796]! } + public var Login_InfoAvatarPhoto: String { return self._s[1797]! } + public var Privacy_PaymentsClear_ShippingInfo: String { return self._s[1798]! } + public var Tour_Title4: String { return self._s[1799]! } + public var Passport_Identity_Translation: String { return self._s[1800]! } + public var SettingsSearch_Synonyms_Notifications_ContactJoined: String { return self._s[1801]! } + public var Login_TermsOfServiceLabel: String { return self._s[1803]! } + public var Passport_Language_it: String { return self._s[1804]! } + public var KeyCommand_JumpToNextUnreadChat: String { return self._s[1805]! } + public var Passport_Identity_SelfieHelp: String { return self._s[1806]! } + public var Conversation_ClearAll: String { return self._s[1808]! } + public var Channel_OwnershipTransfer_Title: String { return self._s[1810]! } + public var TwoStepAuth_FloodError: String { return self._s[1811]! } public func PUSH_CHANNEL_MESSAGE_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1810]!, self._r[1810]!, [_1]) + return formatWithArgumentRanges(self._s[1812]!, self._r[1812]!, [_1]) } - public var Paint_Delete: String { return self._s[1811]! } - public var Privacy_AddNewPeer: String { return self._s[1812]! } - public var LogoutOptions_SetPasscodeText: String { return self._s[1813]! } + public var Paint_Delete: String { return self._s[1813]! } + public var Privacy_AddNewPeer: String { return self._s[1814]! } + public var LogoutOptions_SetPasscodeText: String { return self._s[1815]! } public func Passport_AcceptHelp(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1814]!, self._r[1814]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1816]!, self._r[1816]!, [_1, _2]) } - public var Message_PinnedAudioMessage: String { return self._s[1815]! } + public var Message_PinnedAudioMessage: String { return self._s[1817]! } public func Watch_Time_ShortTodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1816]!, self._r[1816]!, [_0]) + return formatWithArgumentRanges(self._s[1818]!, self._r[1818]!, [_0]) } - public var Notification_Mute1hMin: String { return self._s[1817]! } - public var Notifications_GroupNotificationsSound: String { return self._s[1818]! } - public var SocksProxySetup_ShareProxyList: String { return self._s[1819]! } - public var Conversation_MessageEditedLabel: String { return self._s[1820]! } - public var Notification_Exceptions_AlwaysOff: String { return self._s[1821]! } - public var Notification_Exceptions_NewException_MessagePreviewHeader: String { return self._s[1822]! } + public var Notification_Mute1hMin: String { return self._s[1819]! } + public var Notifications_GroupNotificationsSound: String { return self._s[1820]! } + public var SocksProxySetup_ShareProxyList: String { return self._s[1821]! } + public var Conversation_MessageEditedLabel: String { return self._s[1822]! } + public var Notification_Exceptions_AlwaysOff: String { return self._s[1823]! } + public var Notification_Exceptions_NewException_MessagePreviewHeader: String { return self._s[1824]! } public func Channel_AdminLog_MessageAdmin(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1823]!, self._r[1823]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[1825]!, self._r[1825]!, [_0, _1, _2]) } - public var NetworkUsageSettings_ResetStats: String { return self._s[1824]! } + public var NetworkUsageSettings_ResetStats: String { return self._s[1826]! } public func PUSH_MESSAGE_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1825]!, self._r[1825]!, [_1]) + return formatWithArgumentRanges(self._s[1827]!, self._r[1827]!, [_1]) } - public var AccessDenied_LocationTracking: String { return self._s[1826]! } - public var Month_GenOctober: String { return self._s[1827]! } - public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[1828]! } - public var EnterPasscode_EnterPasscode: String { return self._s[1829]! } - public var MediaPicker_TimerTooltip: String { return self._s[1831]! } - public var SharedMedia_TitleAll: String { return self._s[1832]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsExceptions: String { return self._s[1835]! } - public var Conversation_RestrictedMedia: String { return self._s[1836]! } - public var AccessDenied_PhotosRestricted: String { return self._s[1837]! } - public var Privacy_Forwards_WhoCanForward: String { return self._s[1839]! } - public var ChangePhoneNumberCode_Called: String { return self._s[1840]! } + public var AccessDenied_LocationTracking: String { return self._s[1828]! } + public var Month_GenOctober: String { return self._s[1829]! } + public var GroupInfo_InviteLink_RevokeAlert_Revoke: String { return self._s[1830]! } + public var EnterPasscode_EnterPasscode: String { return self._s[1831]! } + public var MediaPicker_TimerTooltip: String { return self._s[1833]! } + public var SharedMedia_TitleAll: String { return self._s[1834]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsExceptions: String { return self._s[1837]! } + public var Conversation_RestrictedMedia: String { return self._s[1838]! } + public var AccessDenied_PhotosRestricted: String { return self._s[1839]! } + public var Privacy_Forwards_WhoCanForward: String { return self._s[1841]! } + public var ChangePhoneNumberCode_Called: String { return self._s[1842]! } public func Notification_PinnedDocumentMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1841]!, self._r[1841]!, [_0]) + return formatWithArgumentRanges(self._s[1843]!, self._r[1843]!, [_0]) } - public var Conversation_SavedMessages: String { return self._s[1844]! } - public var Your_cards_expiration_month_is_invalid: String { return self._s[1846]! } - public var FastTwoStepSetup_PasswordPlaceholder: String { return self._s[1847]! } + public var Conversation_SavedMessages: String { return self._s[1846]! } + public var Your_cards_expiration_month_is_invalid: String { return self._s[1848]! } + public var FastTwoStepSetup_PasswordPlaceholder: String { return self._s[1849]! } public func Target_ShareGameConfirmationGroup(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1849]!, self._r[1849]!, [_0]) + return formatWithArgumentRanges(self._s[1851]!, self._r[1851]!, [_0]) } - public var ReportPeer_AlertSuccess: String { return self._s[1850]! } - public var PhotoEditor_CropAspectRatioOriginal: String { return self._s[1851]! } + public var ReportPeer_AlertSuccess: String { return self._s[1852]! } + public var PhotoEditor_CropAspectRatioOriginal: String { return self._s[1853]! } public func InstantPage_RelatedArticleAuthorAndDateTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1852]!, self._r[1852]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1854]!, self._r[1854]!, [_1, _2]) } - public var Checkout_PasswordEntry_Title: String { return self._s[1853]! } - public var PhotoEditor_FadeTool: String { return self._s[1854]! } - public var Privacy_ContactsReset: String { return self._s[1855]! } + public var Checkout_PasswordEntry_Title: String { return self._s[1855]! } + public var PhotoEditor_FadeTool: String { return self._s[1856]! } + public var Privacy_ContactsReset: String { return self._s[1857]! } public func Channel_AdminLog_MessageRestrictedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1857]!, self._r[1857]!, [_0]) + return formatWithArgumentRanges(self._s[1859]!, self._r[1859]!, [_0]) } - public var Message_PinnedVideoMessage: String { return self._s[1858]! } - public var ChatList_Mute: String { return self._s[1859]! } - public var Permissions_CellularDataText_v0: String { return self._s[1860]! } - public var ShareMenu_SelectChats: String { return self._s[1862]! } - public var MusicPlayer_VoiceNote: String { return self._s[1863]! } - public var Conversation_RestrictedText: String { return self._s[1864]! } - public var SettingsSearch_Synonyms_Privacy_Data_DeleteDrafts: String { return self._s[1865]! } - public var TwoStepAuth_DisableSuccess: String { return self._s[1866]! } - public var Cache_Videos: String { return self._s[1867]! } - public var PrivacySettings_PhoneNumber: String { return self._s[1868]! } - public var FeatureDisabled_Oops: String { return self._s[1870]! } - public var Passport_Address_PostcodePlaceholder: String { return self._s[1871]! } + public var Message_PinnedVideoMessage: String { return self._s[1860]! } + public var ChatList_Mute: String { return self._s[1861]! } + public var Permissions_CellularDataText_v0: String { return self._s[1862]! } + public var ShareMenu_SelectChats: String { return self._s[1864]! } + public var MusicPlayer_VoiceNote: String { return self._s[1865]! } + public var Conversation_RestrictedText: String { return self._s[1866]! } + public var SettingsSearch_Synonyms_Privacy_Data_DeleteDrafts: String { return self._s[1867]! } + public var TwoStepAuth_DisableSuccess: String { return self._s[1868]! } + public var Cache_Videos: String { return self._s[1869]! } + public var PrivacySettings_PhoneNumber: String { return self._s[1870]! } + public var FeatureDisabled_Oops: String { return self._s[1872]! } + public var Passport_Address_PostcodePlaceholder: String { return self._s[1873]! } public func AddContact_StatusSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1872]!, self._r[1872]!, [_0]) + return formatWithArgumentRanges(self._s[1874]!, self._r[1874]!, [_0]) } - public var Stickers_GroupStickersHelp: String { return self._s[1873]! } - public var GroupPermission_NoSendPolls: String { return self._s[1874]! } - public var Message_VideoExpired: String { return self._s[1876]! } - public var Notifications_Badge: String { return self._s[1877]! } - public var GroupInfo_GroupHistoryVisible: String { return self._s[1878]! } - public var CreatePoll_OptionPlaceholder: String { return self._s[1879]! } - public var Username_InvalidTooShort: String { return self._s[1880]! } - public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[1881]! } - public var Channel_AdminLog_PinMessages: String { return self._s[1882]! } - public var ArchivedChats_IntroTitle3: String { return self._s[1883]! } + public var Stickers_GroupStickersHelp: String { return self._s[1875]! } + public var GroupPermission_NoSendPolls: String { return self._s[1876]! } + public var Message_VideoExpired: String { return self._s[1878]! } + public var Notifications_Badge: String { return self._s[1879]! } + public var GroupInfo_GroupHistoryVisible: String { return self._s[1880]! } + public var CreatePoll_OptionPlaceholder: String { return self._s[1881]! } + public var Username_InvalidTooShort: String { return self._s[1882]! } + public var EnterPasscode_EnterNewPasscodeChange: String { return self._s[1883]! } + public var Channel_AdminLog_PinMessages: String { return self._s[1884]! } + public var ArchivedChats_IntroTitle3: String { return self._s[1885]! } public func Notification_MessageLifetimeRemoved(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1884]!, self._r[1884]!, [_1]) + return formatWithArgumentRanges(self._s[1886]!, self._r[1886]!, [_1]) } - public var Permissions_SiriAllowInSettings_v0: String { return self._s[1885]! } - public var Conversation_DefaultRestrictedText: String { return self._s[1886]! } - public var SharedMedia_CategoryDocs: String { return self._s[1889]! } + public var Permissions_SiriAllowInSettings_v0: String { return self._s[1887]! } + public var Conversation_DefaultRestrictedText: String { return self._s[1888]! } + public var SharedMedia_CategoryDocs: String { return self._s[1891]! } public func PUSH_MESSAGE_CONTACT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1890]!, self._r[1890]!, [_1]) + return formatWithArgumentRanges(self._s[1892]!, self._r[1892]!, [_1]) } - public var Privacy_Forwards_NeverLink: String { return self._s[1892]! } + public var Privacy_Forwards_NeverLink: String { return self._s[1894]! } public func Notification_MessageLifetimeChangedOutgoing(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1893]!, self._r[1893]!, [_1]) + return formatWithArgumentRanges(self._s[1895]!, self._r[1895]!, [_1]) } - public var CheckoutInfo_ErrorShippingNotAvailable: String { return self._s[1894]! } + public var CheckoutInfo_ErrorShippingNotAvailable: String { return self._s[1896]! } public func Time_MonthOfYear_m12(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1895]!, self._r[1895]!, [_0]) + return formatWithArgumentRanges(self._s[1897]!, self._r[1897]!, [_0]) } - public var ChatSettings_PrivateChats: String { return self._s[1896]! } - public var SettingsSearch_Synonyms_EditProfile_Logout: String { return self._s[1897]! } - public var Conversation_PrivateMessageLinkCopied: String { return self._s[1898]! } - public var Channel_UpdatePhotoItem: String { return self._s[1899]! } - public var GroupInfo_LeftStatus: String { return self._s[1900]! } - public var Watch_MessageView_Forward: String { return self._s[1902]! } - public var ReportPeer_ReasonChildAbuse: String { return self._s[1903]! } - public var Cache_ClearEmpty: String { return self._s[1905]! } - public var Localization_LanguageName: String { return self._s[1906]! } - public var WebSearch_GIFs: String { return self._s[1907]! } - public var Notifications_DisplayNamesOnLockScreenInfoWithLink: String { return self._s[1908]! } - public var Username_InvalidStartsWithNumber: String { return self._s[1909]! } - public var Common_Back: String { return self._s[1910]! } - public var Passport_Identity_DateOfBirthPlaceholder: String { return self._s[1911]! } + public var ChatSettings_PrivateChats: String { return self._s[1898]! } + public var SettingsSearch_Synonyms_EditProfile_Logout: String { return self._s[1899]! } + public var Conversation_PrivateMessageLinkCopied: String { return self._s[1900]! } + public var Channel_UpdatePhotoItem: String { return self._s[1901]! } + public var GroupInfo_LeftStatus: String { return self._s[1902]! } + public var Watch_MessageView_Forward: String { return self._s[1904]! } + public var ReportPeer_ReasonChildAbuse: String { return self._s[1905]! } + public var Cache_ClearEmpty: String { return self._s[1907]! } + public var Localization_LanguageName: String { return self._s[1908]! } + public var WebSearch_GIFs: String { return self._s[1909]! } + public var Notifications_DisplayNamesOnLockScreenInfoWithLink: String { return self._s[1910]! } + public var Username_InvalidStartsWithNumber: String { return self._s[1911]! } + public var Common_Back: String { return self._s[1912]! } + public var Passport_Identity_DateOfBirthPlaceholder: String { return self._s[1913]! } public func PUSH_CHANNEL_MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1912]!, self._r[1912]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1914]!, self._r[1914]!, [_1, _2]) } - public var Passport_Email_Help: String { return self._s[1913]! } - public var Watch_Conversation_Reply: String { return self._s[1915]! } - public var Conversation_EditingMessageMediaChange: String { return self._s[1917]! } - public var Passport_Identity_IssueDatePlaceholder: String { return self._s[1918]! } - public var Channel_BanUser_Unban: String { return self._s[1920]! } - public var Channel_EditAdmin_PermissionPostMessages: String { return self._s[1921]! } - public var Group_Username_CreatePublicLinkHelp: String { return self._s[1922]! } - public var TwoStepAuth_ConfirmEmailCodePlaceholder: String { return self._s[1924]! } - public var Passport_Identity_Name: String { return self._s[1925]! } + public var Passport_Email_Help: String { return self._s[1915]! } + public var Watch_Conversation_Reply: String { return self._s[1917]! } + public var Conversation_EditingMessageMediaChange: String { return self._s[1919]! } + public var Passport_Identity_IssueDatePlaceholder: String { return self._s[1920]! } + public var Channel_BanUser_Unban: String { return self._s[1922]! } + public var Channel_EditAdmin_PermissionPostMessages: String { return self._s[1923]! } + public var Group_Username_CreatePublicLinkHelp: String { return self._s[1924]! } + public var TwoStepAuth_ConfirmEmailCodePlaceholder: String { return self._s[1926]! } + public var Passport_Identity_Name: String { return self._s[1927]! } public func Channel_DiscussionGroup_HeaderGroupSet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1926]!, self._r[1926]!, [_0]) + return formatWithArgumentRanges(self._s[1928]!, self._r[1928]!, [_0]) } - public var GroupRemoved_ViewUserInfo: String { return self._s[1927]! } - public var Conversation_BlockUser: String { return self._s[1928]! } - public var Month_GenJanuary: String { return self._s[1929]! } - public var ChatSettings_TextSize: String { return self._s[1930]! } - public var Notification_PassportValuePhone: String { return self._s[1931]! } - public var Passport_Language_ne: String { return self._s[1932]! } - public var Notification_CallBack: String { return self._s[1933]! } - public var TwoStepAuth_EmailHelp: String { return self._s[1934]! } + public var GroupRemoved_ViewUserInfo: String { return self._s[1929]! } + public var Conversation_BlockUser: String { return self._s[1930]! } + public var Month_GenJanuary: String { return self._s[1931]! } + public var ChatSettings_TextSize: String { return self._s[1932]! } + public var Notification_PassportValuePhone: String { return self._s[1933]! } + public var Passport_Language_ne: String { return self._s[1934]! } + public var Notification_CallBack: String { return self._s[1935]! } + public var TwoStepAuth_EmailHelp: String { return self._s[1936]! } public func Time_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1935]!, self._r[1935]!, [_0]) + return formatWithArgumentRanges(self._s[1937]!, self._r[1937]!, [_0]) } - public var Channel_Info_Management: String { return self._s[1936]! } - public var Passport_FieldIdentityUploadHelp: String { return self._s[1937]! } - public var Stickers_FrequentlyUsed: String { return self._s[1938]! } - public var Channel_BanUser_PermissionSendMessages: String { return self._s[1939]! } - public var Passport_Address_OneOfTypeUtilityBill: String { return self._s[1941]! } + public var Channel_Info_Management: String { return self._s[1938]! } + public var Passport_FieldIdentityUploadHelp: String { return self._s[1939]! } + public var Stickers_FrequentlyUsed: String { return self._s[1940]! } + public var Channel_BanUser_PermissionSendMessages: String { return self._s[1941]! } + public var Passport_Address_OneOfTypeUtilityBill: String { return self._s[1943]! } public func LOCAL_CHANNEL_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1942]!, self._r[1942]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[1944]!, self._r[1944]!, [_1, "\(_2)"]) } - public var Passport_Address_EditResidentialAddress: String { return self._s[1943]! } - public var PrivacyPolicy_DeclineTitle: String { return self._s[1944]! } - public var CreatePoll_TextHeader: String { return self._s[1945]! } + public var Passport_Address_EditResidentialAddress: String { return self._s[1945]! } + public var PrivacyPolicy_DeclineTitle: String { return self._s[1946]! } + public var CreatePoll_TextHeader: String { return self._s[1947]! } public func Checkout_SavePasswordTimeoutAndTouchId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1946]!, self._r[1946]!, [_0]) + return formatWithArgumentRanges(self._s[1948]!, self._r[1948]!, [_0]) } - public var PhotoEditor_QualityMedium: String { return self._s[1947]! } - public var InfoPlist_NSMicrophoneUsageDescription: String { return self._s[1948]! } - public var Conversation_StatusKickedFromChannel: String { return self._s[1950]! } - public var CheckoutInfo_ReceiverInfoName: String { return self._s[1951]! } - public var Group_ErrorSendRestrictedStickers: String { return self._s[1952]! } + public var PhotoEditor_QualityMedium: String { return self._s[1949]! } + public var InfoPlist_NSMicrophoneUsageDescription: String { return self._s[1950]! } + public var Conversation_StatusKickedFromChannel: String { return self._s[1952]! } + public var CheckoutInfo_ReceiverInfoName: String { return self._s[1953]! } + public var Group_ErrorSendRestrictedStickers: String { return self._s[1954]! } public func Conversation_RestrictedInlineTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1953]!, self._r[1953]!, [_0]) + return formatWithArgumentRanges(self._s[1955]!, self._r[1955]!, [_0]) } public func Channel_AdminLog_MessageTransferedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1954]!, self._r[1954]!, [_1]) + return formatWithArgumentRanges(self._s[1956]!, self._r[1956]!, [_1]) } - public var Conversation_LinkDialogOpen: String { return self._s[1956]! } - public var Settings_Username: String { return self._s[1957]! } - public var Conversation_Block: String { return self._s[1959]! } - public var Wallpaper_Wallpaper: String { return self._s[1960]! } - public var SocksProxySetup_UseProxy: String { return self._s[1962]! } - public var UserInfo_ShareMyContactInfo: String { return self._s[1963]! } - public var MessageTimer_Forever: String { return self._s[1964]! } - public var Privacy_Calls_WhoCanCallMe: String { return self._s[1965]! } - public var PhotoEditor_DiscardChanges: String { return self._s[1966]! } - public var AuthSessions_TerminateOtherSessionsHelp: String { return self._s[1967]! } - public var Passport_Language_da: String { return self._s[1968]! } - public var SocksProxySetup_PortPlaceholder: String { return self._s[1969]! } + public var Conversation_LinkDialogOpen: String { return self._s[1958]! } + public var Settings_Username: String { return self._s[1959]! } + public var Conversation_Block: String { return self._s[1961]! } + public var Wallpaper_Wallpaper: String { return self._s[1962]! } + public var SocksProxySetup_UseProxy: String { return self._s[1964]! } + public var UserInfo_ShareMyContactInfo: String { return self._s[1965]! } + public var MessageTimer_Forever: String { return self._s[1966]! } + public var Privacy_Calls_WhoCanCallMe: String { return self._s[1967]! } + public var PhotoEditor_DiscardChanges: String { return self._s[1968]! } + public var AuthSessions_TerminateOtherSessionsHelp: String { return self._s[1969]! } + public var Passport_Language_da: String { return self._s[1970]! } + public var SocksProxySetup_PortPlaceholder: String { return self._s[1971]! } public func SecretGIF_NotViewedYet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1970]!, self._r[1970]!, [_0]) + return formatWithArgumentRanges(self._s[1972]!, self._r[1972]!, [_0]) } - public var Passport_Address_EditPassportRegistration: String { return self._s[1971]! } + public var Passport_Address_EditPassportRegistration: String { return self._s[1973]! } public func Channel_AdminLog_MessageChangedGroupAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1973]!, self._r[1973]!, [_0]) + return formatWithArgumentRanges(self._s[1975]!, self._r[1975]!, [_0]) } - public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[1975]! } - public var Conversation_SearchByName_Prefix: String { return self._s[1976]! } - public var Conversation_PinnedPoll: String { return self._s[1977]! } - public var Conversation_EmptyGifPanelPlaceholder: String { return self._s[1978]! } + public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[1977]! } + public var Conversation_SearchByName_Prefix: String { return self._s[1978]! } + public var Conversation_PinnedPoll: String { return self._s[1979]! } + public var Conversation_EmptyGifPanelPlaceholder: String { return self._s[1980]! } public func PUSH_ENCRYPTION_ACCEPT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1979]!, self._r[1979]!, [_1]) + return formatWithArgumentRanges(self._s[1981]!, self._r[1981]!, [_1]) } - public var WallpaperSearch_ColorPurple: String { return self._s[1980]! } - public var Cache_ByPeerHeader: String { return self._s[1981]! } + public var WallpaperSearch_ColorPurple: String { return self._s[1982]! } + public var Cache_ByPeerHeader: String { return self._s[1983]! } public func Conversation_EncryptedPlaceholderTitleIncoming(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1982]!, self._r[1982]!, [_0]) + return formatWithArgumentRanges(self._s[1984]!, self._r[1984]!, [_0]) } - public var ChatSettings_AutoDownloadDocuments: String { return self._s[1983]! } - public var Notification_PinnedMessage: String { return self._s[1986]! } - public var Contacts_SortBy: String { return self._s[1988]! } + public var ChatSettings_AutoDownloadDocuments: String { return self._s[1985]! } + public var Notification_PinnedMessage: String { return self._s[1988]! } + public var Contacts_SortBy: String { return self._s[1990]! } public func PUSH_CHANNEL_MESSAGE_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1989]!, self._r[1989]!, [_1]) + return formatWithArgumentRanges(self._s[1991]!, self._r[1991]!, [_1]) } public func PUSH_MESSAGE_GAME(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1991]!, self._r[1991]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1993]!, self._r[1993]!, [_1, _2]) } - public var Call_EncryptionKey_Title: String { return self._s[1992]! } - public var Watch_UserInfo_Service: String { return self._s[1993]! } - public var SettingsSearch_Synonyms_Data_SaveEditedPhotos: String { return self._s[1995]! } - public var Conversation_Unpin: String { return self._s[1997]! } - public var CancelResetAccount_Title: String { return self._s[1998]! } - public var Map_LiveLocationFor15Minutes: String { return self._s[1999]! } + public var Call_EncryptionKey_Title: String { return self._s[1994]! } + public var Watch_UserInfo_Service: String { return self._s[1995]! } + public var SettingsSearch_Synonyms_Data_SaveEditedPhotos: String { return self._s[1997]! } + public var Conversation_Unpin: String { return self._s[1999]! } + public var CancelResetAccount_Title: String { return self._s[2000]! } + public var Map_LiveLocationFor15Minutes: String { return self._s[2001]! } public func Time_PreciseDate_m8(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2001]!, self._r[2001]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2003]!, self._r[2003]!, [_1, _2, _3]) } - public var Group_Members_AddMemberBotErrorNotAllowed: String { return self._s[2002]! } - public var CallSettings_Title: String { return self._s[2003]! } - public var SettingsSearch_Synonyms_Appearance_ChatBackground: String { return self._s[2004]! } - public var PasscodeSettings_EncryptDataHelp: String { return self._s[2006]! } - public var AutoDownloadSettings_Contacts: String { return self._s[2007]! } - public var Passport_Identity_DocumentDetails: String { return self._s[2008]! } - public var LoginPassword_PasswordHelp: String { return self._s[2009]! } - public var SettingsSearch_Synonyms_Data_AutoDownloadUsingWifi: String { return self._s[2010]! } - public var PrivacyLastSeenSettings_CustomShareSettings_Delete: String { return self._s[2011]! } - public var Checkout_TotalPaidAmount: String { return self._s[2012]! } + public var Group_Members_AddMemberBotErrorNotAllowed: String { return self._s[2004]! } + public var CallSettings_Title: String { return self._s[2005]! } + public var SettingsSearch_Synonyms_Appearance_ChatBackground: String { return self._s[2006]! } + public var PasscodeSettings_EncryptDataHelp: String { return self._s[2008]! } + public var AutoDownloadSettings_Contacts: String { return self._s[2009]! } + public var Passport_Identity_DocumentDetails: String { return self._s[2010]! } + public var LoginPassword_PasswordHelp: String { return self._s[2011]! } + public var SettingsSearch_Synonyms_Data_AutoDownloadUsingWifi: String { return self._s[2012]! } + public var PrivacyLastSeenSettings_CustomShareSettings_Delete: String { return self._s[2013]! } + public var Checkout_TotalPaidAmount: String { return self._s[2014]! } public func FileSize_KB(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2013]!, self._r[2013]!, [_0]) + return formatWithArgumentRanges(self._s[2015]!, self._r[2015]!, [_0]) } - public var PasscodeSettings_ChangePasscode: String { return self._s[2014]! } - public var Conversation_SecretLinkPreviewAlert: String { return self._s[2016]! } - public var Privacy_SecretChatsLinkPreviews: String { return self._s[2017]! } + public var PasscodeSettings_ChangePasscode: String { return self._s[2016]! } + public var Conversation_SecretLinkPreviewAlert: String { return self._s[2018]! } + public var Privacy_SecretChatsLinkPreviews: String { return self._s[2019]! } public func PUSH_CHANNEL_MESSAGE_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2018]!, self._r[2018]!, [_1]) + return formatWithArgumentRanges(self._s[2020]!, self._r[2020]!, [_1]) } - public var Contacts_InviteFriends: String { return self._s[2020]! } - public var Map_ChooseLocationTitle: String { return self._s[2021]! } - public var Conversation_StopPoll: String { return self._s[2023]! } + public var Contacts_InviteFriends: String { return self._s[2022]! } + public var Map_ChooseLocationTitle: String { return self._s[2023]! } + public var Conversation_StopPoll: String { return self._s[2025]! } public func WebSearch_SearchNoResultsDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2024]!, self._r[2024]!, [_0]) + return formatWithArgumentRanges(self._s[2026]!, self._r[2026]!, [_0]) } - public var Call_Camera: String { return self._s[2025]! } - public var LogoutOptions_ChangePhoneNumberTitle: String { return self._s[2026]! } - public var Calls_RatingFeedback: String { return self._s[2027]! } - public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[2028]! } - public var NotificationsSound_Pulse: String { return self._s[2029]! } - public var Watch_LastSeen_Lately: String { return self._s[2030]! } - public var ReportGroupLocation_Report: String { return self._s[2033]! } - public var Widget_NoUsers: String { return self._s[2034]! } - public var Conversation_UnvotePoll: String { return self._s[2035]! } - public var SettingsSearch_Synonyms_Privacy_ProfilePhoto: String { return self._s[2037]! } - public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[2038]! } - public var NotificationsSound_Circles: String { return self._s[2039]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[2041]! } - public var TwoStepAuth_RecoveryCodeExpired: String { return self._s[2042]! } - public var Proxy_TooltipUnavailable: String { return self._s[2043]! } - public var Passport_Identity_CountryPlaceholder: String { return self._s[2045]! } - public var Conversation_FileDropbox: String { return self._s[2047]! } - public var Notifications_ExceptionsUnmuted: String { return self._s[2048]! } - public var Tour_Text3: String { return self._s[2050]! } - public var Login_ResetAccountProtected_Title: String { return self._s[2052]! } - public var GroupPermission_NoSendMessages: String { return self._s[2053]! } - public var WallpaperSearch_ColorTitle: String { return self._s[2054]! } - public var ChatAdmins_AllMembersAreAdminsOnHelp: String { return self._s[2055]! } + public var Call_Camera: String { return self._s[2027]! } + public var LogoutOptions_ChangePhoneNumberTitle: String { return self._s[2028]! } + public var Calls_RatingFeedback: String { return self._s[2029]! } + public var GroupInfo_BroadcastListNamePlaceholder: String { return self._s[2030]! } + public var NotificationsSound_Pulse: String { return self._s[2031]! } + public var Watch_LastSeen_Lately: String { return self._s[2032]! } + public var ReportGroupLocation_Report: String { return self._s[2035]! } + public var Widget_NoUsers: String { return self._s[2036]! } + public var Conversation_UnvotePoll: String { return self._s[2037]! } + public var SettingsSearch_Synonyms_Privacy_ProfilePhoto: String { return self._s[2039]! } + public var Privacy_ProfilePhoto_WhoCanSeeMyPhoto: String { return self._s[2040]! } + public var NotificationsSound_Circles: String { return self._s[2041]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Title: String { return self._s[2043]! } + public var TwoStepAuth_RecoveryCodeExpired: String { return self._s[2044]! } + public var Proxy_TooltipUnavailable: String { return self._s[2045]! } + public var Passport_Identity_CountryPlaceholder: String { return self._s[2047]! } + public var Conversation_FileDropbox: String { return self._s[2049]! } + public var Notifications_ExceptionsUnmuted: String { return self._s[2050]! } + public var Tour_Text3: String { return self._s[2052]! } + public var Login_ResetAccountProtected_Title: String { return self._s[2054]! } + public var GroupPermission_NoSendMessages: String { return self._s[2055]! } + public var WallpaperSearch_ColorTitle: String { return self._s[2056]! } + public var ChatAdmins_AllMembersAreAdminsOnHelp: String { return self._s[2057]! } public func Conversation_LiveLocationYouAnd(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2057]!, self._r[2057]!, [_0]) + return formatWithArgumentRanges(self._s[2059]!, self._r[2059]!, [_0]) } - public var GroupInfo_AddParticipantTitle: String { return self._s[2058]! } - public var Checkout_ShippingOption_Title: String { return self._s[2059]! } - public var ChatSettings_AutoDownloadTitle: String { return self._s[2060]! } + public var GroupInfo_AddParticipantTitle: String { return self._s[2060]! } + public var Checkout_ShippingOption_Title: String { return self._s[2061]! } + public var ChatSettings_AutoDownloadTitle: String { return self._s[2062]! } public func DialogList_SingleTypingSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2061]!, self._r[2061]!, [_0]) + return formatWithArgumentRanges(self._s[2063]!, self._r[2063]!, [_0]) } public func ChatSettings_AutoDownloadSettings_TypeVideo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2062]!, self._r[2062]!, [_0]) + return formatWithArgumentRanges(self._s[2064]!, self._r[2064]!, [_0]) } - public var Channel_Management_LabelAdministrator: String { return self._s[2063]! } - public var OwnershipTransfer_ComeBackLater: String { return self._s[2064]! } - public var PrivacyLastSeenSettings_NeverShareWith_Placeholder: String { return self._s[2065]! } - public var AutoDownloadSettings_Photos: String { return self._s[2067]! } - public var Appearance_PreviewIncomingText: String { return self._s[2068]! } - public var ChannelInfo_ConfirmLeave: String { return self._s[2069]! } - public var MediaPicker_MomentsDateRangeSameMonthYearFormat: String { return self._s[2070]! } - public var Passport_Identity_DocumentNumberPlaceholder: String { return self._s[2071]! } - public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[2072]! } - public var PasscodeSettings_AutoLock_IfAwayFor_5minutes: String { return self._s[2073]! } - public var GroupInfo_SetGroupPhotoStop: String { return self._s[2074]! } - public var Notification_SecretChatScreenshot: String { return self._s[2075]! } - public var AccessDenied_Wallpapers: String { return self._s[2076]! } - public var Passport_Address_City: String { return self._s[2078]! } - public var InfoPlist_NSPhotoLibraryAddUsageDescription: String { return self._s[2079]! } - public var Appearance_ThemeCarouselClassic: String { return self._s[2080]! } - public var SocksProxySetup_SecretPlaceholder: String { return self._s[2081]! } - public var AccessDenied_LocationDisabled: String { return self._s[2082]! } - public var Group_Location_Title: String { return self._s[2083]! } - public var SocksProxySetup_HostnamePlaceholder: String { return self._s[2085]! } - public var GroupInfo_Sound: String { return self._s[2086]! } - public var ChannelInfo_ScamChannelWarning: String { return self._s[2087]! } - public var Stickers_RemoveFromFavorites: String { return self._s[2088]! } - public var Contacts_Title: String { return self._s[2089]! } - public var Passport_Language_fr: String { return self._s[2090]! } - public var Notifications_ResetAllNotifications: String { return self._s[2091]! } - public var PrivacySettings_SecurityTitle: String { return self._s[2094]! } - public var Checkout_NewCard_Title: String { return self._s[2095]! } - public var Login_HaveNotReceivedCodeInternal: String { return self._s[2096]! } - public var Conversation_ForwardChats: String { return self._s[2097]! } - public var PasscodeSettings_4DigitCode: String { return self._s[2099]! } - public var Settings_FAQ: String { return self._s[2101]! } - public var AutoDownloadSettings_DocumentsTitle: String { return self._s[2102]! } - public var Conversation_ContextMenuForward: String { return self._s[2103]! } - public var PrivacyPolicy_Title: String { return self._s[2108]! } - public var Notifications_TextTone: String { return self._s[2109]! } - public var Profile_CreateNewContact: String { return self._s[2110]! } - public var PrivacyPhoneNumberSettings_WhoCanSeeMyPhoneNumber: String { return self._s[2111]! } - public var Call_Speaker: String { return self._s[2113]! } - public var AutoNightTheme_AutomaticSection: String { return self._s[2114]! } - public var Channel_OwnershipTransfer_EnterPassword: String { return self._s[2116]! } - public var Channel_Username_InvalidCharacters: String { return self._s[2117]! } + public var Channel_Management_LabelAdministrator: String { return self._s[2065]! } + public var OwnershipTransfer_ComeBackLater: String { return self._s[2066]! } + public var PrivacyLastSeenSettings_NeverShareWith_Placeholder: String { return self._s[2067]! } + public var AutoDownloadSettings_Photos: String { return self._s[2069]! } + public var Appearance_PreviewIncomingText: String { return self._s[2070]! } + public var ChannelInfo_ConfirmLeave: String { return self._s[2071]! } + public var MediaPicker_MomentsDateRangeSameMonthYearFormat: String { return self._s[2072]! } + public var Passport_Identity_DocumentNumberPlaceholder: String { return self._s[2073]! } + public var Channel_AdminLogFilter_EventsNewMembers: String { return self._s[2074]! } + public var PasscodeSettings_AutoLock_IfAwayFor_5minutes: String { return self._s[2075]! } + public var GroupInfo_SetGroupPhotoStop: String { return self._s[2076]! } + public var Notification_SecretChatScreenshot: String { return self._s[2077]! } + public var AccessDenied_Wallpapers: String { return self._s[2078]! } + public var Passport_Address_City: String { return self._s[2080]! } + public var InfoPlist_NSPhotoLibraryAddUsageDescription: String { return self._s[2081]! } + public var Appearance_ThemeCarouselClassic: String { return self._s[2082]! } + public var SocksProxySetup_SecretPlaceholder: String { return self._s[2083]! } + public var AccessDenied_LocationDisabled: String { return self._s[2084]! } + public var Group_Location_Title: String { return self._s[2085]! } + public var SocksProxySetup_HostnamePlaceholder: String { return self._s[2087]! } + public var GroupInfo_Sound: String { return self._s[2088]! } + public var ChannelInfo_ScamChannelWarning: String { return self._s[2089]! } + public var Stickers_RemoveFromFavorites: String { return self._s[2090]! } + public var Contacts_Title: String { return self._s[2091]! } + public var Passport_Language_fr: String { return self._s[2092]! } + public var Notifications_ResetAllNotifications: String { return self._s[2093]! } + public var PrivacySettings_SecurityTitle: String { return self._s[2096]! } + public var Checkout_NewCard_Title: String { return self._s[2097]! } + public var Login_HaveNotReceivedCodeInternal: String { return self._s[2098]! } + public var Conversation_ForwardChats: String { return self._s[2099]! } + public var PasscodeSettings_4DigitCode: String { return self._s[2101]! } + public var Settings_FAQ: String { return self._s[2103]! } + public var AutoDownloadSettings_DocumentsTitle: String { return self._s[2104]! } + public var Conversation_ContextMenuForward: String { return self._s[2105]! } + public var PrivacyPolicy_Title: String { return self._s[2110]! } + public var Notifications_TextTone: String { return self._s[2111]! } + public var Profile_CreateNewContact: String { return self._s[2112]! } + public var PrivacyPhoneNumberSettings_WhoCanSeeMyPhoneNumber: String { return self._s[2113]! } + public var Call_Speaker: String { return self._s[2115]! } + public var AutoNightTheme_AutomaticSection: String { return self._s[2116]! } + public var Channel_OwnershipTransfer_EnterPassword: String { return self._s[2118]! } + public var Channel_Username_InvalidCharacters: String { return self._s[2119]! } public func Channel_AdminLog_MessageChangedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2118]!, self._r[2118]!, [_0]) + return formatWithArgumentRanges(self._s[2120]!, self._r[2120]!, [_0]) } - public var AutoDownloadSettings_AutodownloadFiles: String { return self._s[2119]! } - public var PrivacySettings_LastSeenTitle: String { return self._s[2120]! } - public var Channel_AdminLog_CanInviteUsers: String { return self._s[2121]! } - public var SettingsSearch_Synonyms_Privacy_Data_ClearPaymentsInfo: String { return self._s[2122]! } - public var OwnershipTransfer_SecurityCheck: String { return self._s[2123]! } - public var Conversation_MessageDeliveryFailed: String { return self._s[2124]! } - public var Watch_ChatList_NoConversationsText: String { return self._s[2125]! } - public var Bot_Unblock: String { return self._s[2126]! } - public var TextFormat_Italic: String { return self._s[2127]! } - public var WallpaperSearch_ColorPink: String { return self._s[2128]! } - public var Settings_About_Help: String { return self._s[2129]! } - public var SearchImages_Title: String { return self._s[2130]! } - public var Weekday_Wednesday: String { return self._s[2131]! } - public var Conversation_ClousStorageInfo_Description1: String { return self._s[2132]! } - public var ExplicitContent_AlertTitle: String { return self._s[2133]! } + public var AutoDownloadSettings_AutodownloadFiles: String { return self._s[2121]! } + public var PrivacySettings_LastSeenTitle: String { return self._s[2122]! } + public var Channel_AdminLog_CanInviteUsers: String { return self._s[2123]! } + public var SettingsSearch_Synonyms_Privacy_Data_ClearPaymentsInfo: String { return self._s[2124]! } + public var OwnershipTransfer_SecurityCheck: String { return self._s[2125]! } + public var Conversation_MessageDeliveryFailed: String { return self._s[2126]! } + public var Watch_ChatList_NoConversationsText: String { return self._s[2127]! } + public var Bot_Unblock: String { return self._s[2128]! } + public var TextFormat_Italic: String { return self._s[2129]! } + public var WallpaperSearch_ColorPink: String { return self._s[2130]! } + public var Settings_About_Help: String { return self._s[2131]! } + public var SearchImages_Title: String { return self._s[2132]! } + public var Weekday_Wednesday: String { return self._s[2133]! } + public var Conversation_ClousStorageInfo_Description1: String { return self._s[2134]! } + public var ExplicitContent_AlertTitle: String { return self._s[2135]! } public func Time_PreciseDate_m5(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2134]!, self._r[2134]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2136]!, self._r[2136]!, [_1, _2, _3]) } - public var Channel_DiscussionGroup_Create: String { return self._s[2135]! } - public var Weekday_Thursday: String { return self._s[2136]! } - public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[2137]! } - public var Channel_Members_AddMembersHelp: String { return self._s[2138]! } + public var Channel_DiscussionGroup_Create: String { return self._s[2137]! } + public var Weekday_Thursday: String { return self._s[2138]! } + public var Channel_BanUser_PermissionChangeGroupInfo: String { return self._s[2139]! } + public var Channel_Members_AddMembersHelp: String { return self._s[2140]! } public func Checkout_SavePasswordTimeout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2139]!, self._r[2139]!, [_0]) + return formatWithArgumentRanges(self._s[2141]!, self._r[2141]!, [_0]) } - public var Channel_DiscussionGroup_LinkGroup: String { return self._s[2140]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsVibrate: String { return self._s[2141]! } - public var Passport_RequestedInformation: String { return self._s[2142]! } - public var Login_PhoneAndCountryHelp: String { return self._s[2143]! } - public var Conversation_EncryptionProcessing: String { return self._s[2145]! } - public var Notifications_PermissionsSuppressWarningTitle: String { return self._s[2146]! } - public var PhotoEditor_EnhanceTool: String { return self._s[2148]! } - public var Channel_Setup_Title: String { return self._s[2149]! } - public var Conversation_SearchPlaceholder: String { return self._s[2150]! } - public var AccessDenied_LocationAlwaysDenied: String { return self._s[2151]! } - public var Checkout_ErrorGeneric: String { return self._s[2152]! } - public var Passport_Language_hu: String { return self._s[2153]! } + public var Channel_DiscussionGroup_LinkGroup: String { return self._s[2142]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsVibrate: String { return self._s[2143]! } + public var Passport_RequestedInformation: String { return self._s[2144]! } + public var Login_PhoneAndCountryHelp: String { return self._s[2145]! } + public var Conversation_EncryptionProcessing: String { return self._s[2147]! } + public var Notifications_PermissionsSuppressWarningTitle: String { return self._s[2148]! } + public var PhotoEditor_EnhanceTool: String { return self._s[2150]! } + public var Channel_Setup_Title: String { return self._s[2151]! } + public var Conversation_SearchPlaceholder: String { return self._s[2152]! } + public var AccessDenied_LocationAlwaysDenied: String { return self._s[2153]! } + public var Checkout_ErrorGeneric: String { return self._s[2154]! } + public var Passport_Language_hu: String { return self._s[2155]! } public func Passport_Identity_UploadOneOfScan(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2155]!, self._r[2155]!, [_0]) + return formatWithArgumentRanges(self._s[2157]!, self._r[2157]!, [_0]) } public func PUSH_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2158]!, self._r[2158]!, [_1]) + return formatWithArgumentRanges(self._s[2160]!, self._r[2160]!, [_1]) } public func UserInfo_BlockConfirmationTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2159]!, self._r[2159]!, [_0]) + return formatWithArgumentRanges(self._s[2161]!, self._r[2161]!, [_0]) } - public var Group_Location_Info: String { return self._s[2160]! } - public var Conversation_CloudStorageInfo_Title: String { return self._s[2161]! } - public var Permissions_PeopleNearbyAllow_v0: String { return self._s[2162]! } - public var PhotoEditor_CropAspectRatioSquare: String { return self._s[2163]! } + public var Group_Location_Info: String { return self._s[2162]! } + public var Conversation_CloudStorageInfo_Title: String { return self._s[2163]! } + public var Permissions_PeopleNearbyAllow_v0: String { return self._s[2164]! } + public var PhotoEditor_CropAspectRatioSquare: String { return self._s[2165]! } public func Notification_Exceptions_MutedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2164]!, self._r[2164]!, [_0]) + return formatWithArgumentRanges(self._s[2166]!, self._r[2166]!, [_0]) } - public var Conversation_ClearPrivateHistory: String { return self._s[2165]! } - public var ContactInfo_PhoneLabelHome: String { return self._s[2166]! } - public var PrivacySettings_LastSeenContacts: String { return self._s[2167]! } + public var Conversation_ClearPrivateHistory: String { return self._s[2167]! } + public var ContactInfo_PhoneLabelHome: String { return self._s[2168]! } + public var PrivacySettings_LastSeenContacts: String { return self._s[2169]! } public func ChangePhone_ErrorOccupied(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2168]!, self._r[2168]!, [_0]) + return formatWithArgumentRanges(self._s[2170]!, self._r[2170]!, [_0]) } - public var Passport_Language_cs: String { return self._s[2169]! } - public var Message_PinnedAnimationMessage: String { return self._s[2171]! } - public var Passport_Identity_ReverseSideHelp: String { return self._s[2173]! } - public var SettingsSearch_Synonyms_Data_Storage_Title: String { return self._s[2174]! } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndTouchId: String { return self._s[2176]! } - public var Embed_PlayingInPIP: String { return self._s[2177]! } - public var AutoNightTheme_ScheduleSection: String { return self._s[2178]! } + public var Passport_Language_cs: String { return self._s[2171]! } + public var Message_PinnedAnimationMessage: String { return self._s[2173]! } + public var Passport_Identity_ReverseSideHelp: String { return self._s[2175]! } + public var SettingsSearch_Synonyms_Data_Storage_Title: String { return self._s[2176]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndTouchId: String { return self._s[2178]! } + public var Embed_PlayingInPIP: String { return self._s[2179]! } + public var AutoNightTheme_ScheduleSection: String { return self._s[2180]! } public func Call_EmojiDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2179]!, self._r[2179]!, [_0]) + return formatWithArgumentRanges(self._s[2181]!, self._r[2181]!, [_0]) } - public var MediaPicker_LivePhotoDescription: String { return self._s[2180]! } + public var MediaPicker_LivePhotoDescription: String { return self._s[2182]! } public func Channel_AdminLog_MessageRestrictedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2181]!, self._r[2181]!, [_1]) + return formatWithArgumentRanges(self._s[2183]!, self._r[2183]!, [_1]) } - public var Notification_PaymentSent: String { return self._s[2182]! } - public var PhotoEditor_CurvesGreen: String { return self._s[2183]! } - public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[2184]! } - public var SaveIncomingPhotosSettings_Title: String { return self._s[2185]! } - public var NotificationSettings_ShowNotificationsAllAccounts: String { return self._s[2186]! } + public var Notification_PaymentSent: String { return self._s[2184]! } + public var PhotoEditor_CurvesGreen: String { return self._s[2185]! } + public var Notification_Exceptions_PreviewAlwaysOff: String { return self._s[2186]! } + public var SaveIncomingPhotosSettings_Title: String { return self._s[2187]! } + public var NotificationSettings_ShowNotificationsAllAccounts: String { return self._s[2188]! } public func PUSH_MESSAGE_SCREENSHOT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2189]!, self._r[2189]!, [_1]) - } - public func PUSH_MESSAGE_PHOTO_SECRET(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2190]!, self._r[2190]!, [_1]) - } - public func ApplyLanguage_UnsufficientDataText(_ _1: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2191]!, self._r[2191]!, [_1]) } - public var NetworkUsageSettings_CallDataSection: String { return self._s[2193]! } - public var PasscodeSettings_HelpTop: String { return self._s[2194]! } - public var Group_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[2195]! } - public var Passport_Address_TypeRentalAgreement: String { return self._s[2196]! } - public var ReportPeer_ReasonOther_Placeholder: String { return self._s[2197]! } - public var CheckoutInfo_ErrorPhoneInvalid: String { return self._s[2198]! } - public var Call_Accept: String { return self._s[2200]! } - public var GroupRemoved_RemoveInfo: String { return self._s[2201]! } - public var Month_GenMarch: String { return self._s[2203]! } - public var PhotoEditor_ShadowsTool: String { return self._s[2204]! } - public var LoginPassword_Title: String { return self._s[2205]! } - public var Call_End: String { return self._s[2206]! } - public var Watch_Conversation_GroupInfo: String { return self._s[2207]! } - public var CallSettings_Always: String { return self._s[2208]! } - public var CallFeedback_Success: String { return self._s[2209]! } - public var TwoStepAuth_SetupHint: String { return self._s[2210]! } + public func PUSH_MESSAGE_PHOTO_SECRET(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2192]!, self._r[2192]!, [_1]) + } + public func ApplyLanguage_UnsufficientDataText(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2193]!, self._r[2193]!, [_1]) + } + public var NetworkUsageSettings_CallDataSection: String { return self._s[2195]! } + public var PasscodeSettings_HelpTop: String { return self._s[2196]! } + public var Group_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[2197]! } + public var Passport_Address_TypeRentalAgreement: String { return self._s[2198]! } + public var ReportPeer_ReasonOther_Placeholder: String { return self._s[2199]! } + public var CheckoutInfo_ErrorPhoneInvalid: String { return self._s[2200]! } + public var Call_Accept: String { return self._s[2202]! } + public var GroupRemoved_RemoveInfo: String { return self._s[2203]! } + public var Month_GenMarch: String { return self._s[2205]! } + public var PhotoEditor_ShadowsTool: String { return self._s[2206]! } + public var LoginPassword_Title: String { return self._s[2207]! } + public var Call_End: String { return self._s[2208]! } + public var Watch_Conversation_GroupInfo: String { return self._s[2209]! } + public var CallSettings_Always: String { return self._s[2210]! } + public var CallFeedback_Success: String { return self._s[2211]! } + public var TwoStepAuth_SetupHint: String { return self._s[2212]! } public func AddContact_ContactWillBeSharedAfterMutual(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2211]!, self._r[2211]!, [_1]) + return formatWithArgumentRanges(self._s[2213]!, self._r[2213]!, [_1]) } - public var ConversationProfile_UsersTooMuchError: String { return self._s[2212]! } - public var Login_PhoneTitle: String { return self._s[2213]! } - public var Passport_FieldPhoneHelp: String { return self._s[2214]! } - public var Weekday_ShortSunday: String { return self._s[2215]! } - public var Passport_InfoFAQ_URL: String { return self._s[2216]! } - public var ContactInfo_Job: String { return self._s[2218]! } - public var UserInfo_InviteBotToGroup: String { return self._s[2219]! } - public var Appearance_ThemeCarouselNightBlue: String { return self._s[2220]! } - public var TwoStepAuth_PasswordRemovePassportConfirmation: String { return self._s[2221]! } - public var Invite_ChannelsTooMuch: String { return self._s[2222]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsPreview: String { return self._s[2223]! } - public var Passport_DeletePersonalDetailsConfirmation: String { return self._s[2224]! } - public var CallFeedback_ReasonNoise: String { return self._s[2225]! } - public var Appearance_AppIconDefault: String { return self._s[2227]! } - public var Passport_Identity_AddInternalPassport: String { return self._s[2228]! } - public var MediaPicker_AddCaption: String { return self._s[2229]! } - public var CallSettings_TabIconDescription: String { return self._s[2230]! } - public var ChatList_UndoArchiveHiddenTitle: String { return self._s[2231]! } - public var Privacy_GroupsAndChannels_AlwaysAllow: String { return self._s[2232]! } - public var Passport_Identity_TypePersonalDetails: String { return self._s[2233]! } - public var DialogList_SearchSectionRecent: String { return self._s[2234]! } - public var PrivacyPolicy_DeclineMessage: String { return self._s[2235]! } - public var LogoutOptions_ClearCacheText: String { return self._s[2238]! } - public var LastSeen_WithinAWeek: String { return self._s[2239]! } - public var ChannelMembers_GroupAdminsTitle: String { return self._s[2240]! } - public var Conversation_CloudStorage_ChatStatus: String { return self._s[2242]! } + public var ConversationProfile_UsersTooMuchError: String { return self._s[2214]! } + public var Login_PhoneTitle: String { return self._s[2215]! } + public var Passport_FieldPhoneHelp: String { return self._s[2216]! } + public var Weekday_ShortSunday: String { return self._s[2217]! } + public var Passport_InfoFAQ_URL: String { return self._s[2218]! } + public var ContactInfo_Job: String { return self._s[2220]! } + public var UserInfo_InviteBotToGroup: String { return self._s[2221]! } + public var Appearance_ThemeCarouselNightBlue: String { return self._s[2222]! } + public var TwoStepAuth_PasswordRemovePassportConfirmation: String { return self._s[2223]! } + public var Invite_ChannelsTooMuch: String { return self._s[2224]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsPreview: String { return self._s[2225]! } + public var Passport_DeletePersonalDetailsConfirmation: String { return self._s[2226]! } + public var CallFeedback_ReasonNoise: String { return self._s[2227]! } + public var Appearance_AppIconDefault: String { return self._s[2229]! } + public var Passport_Identity_AddInternalPassport: String { return self._s[2230]! } + public var MediaPicker_AddCaption: String { return self._s[2231]! } + public var CallSettings_TabIconDescription: String { return self._s[2232]! } + public var ChatList_UndoArchiveHiddenTitle: String { return self._s[2233]! } + public var Privacy_GroupsAndChannels_AlwaysAllow: String { return self._s[2234]! } + public var Passport_Identity_TypePersonalDetails: String { return self._s[2235]! } + public var DialogList_SearchSectionRecent: String { return self._s[2236]! } + public var PrivacyPolicy_DeclineMessage: String { return self._s[2237]! } + public var LogoutOptions_ClearCacheText: String { return self._s[2240]! } + public var LastSeen_WithinAWeek: String { return self._s[2241]! } + public var ChannelMembers_GroupAdminsTitle: String { return self._s[2242]! } + public var Conversation_CloudStorage_ChatStatus: String { return self._s[2244]! } public func AddContact_SharedContactExceptionInfo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2243]!, self._r[2243]!, [_0]) + return formatWithArgumentRanges(self._s[2245]!, self._r[2245]!, [_0]) } - public var Passport_Address_TypeResidentialAddress: String { return self._s[2244]! } - public var Conversation_StatusLeftGroup: String { return self._s[2245]! } - public var SocksProxySetup_ProxyDetailsTitle: String { return self._s[2246]! } - public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[2248]! } - public var GroupPermission_AddSuccess: String { return self._s[2249]! } - public var PhotoEditor_BlurToolRadial: String { return self._s[2251]! } - public var Conversation_ContextMenuCopy: String { return self._s[2252]! } - public var AccessDenied_CallMicrophone: String { return self._s[2253]! } + public var Passport_Address_TypeResidentialAddress: String { return self._s[2246]! } + public var Conversation_StatusLeftGroup: String { return self._s[2247]! } + public var SocksProxySetup_ProxyDetailsTitle: String { return self._s[2248]! } + public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[2250]! } + public var GroupPermission_AddSuccess: String { return self._s[2251]! } + public var PhotoEditor_BlurToolRadial: String { return self._s[2253]! } + public var Conversation_ContextMenuCopy: String { return self._s[2254]! } + public var AccessDenied_CallMicrophone: String { return self._s[2255]! } public func Time_PreciseDate_m2(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2254]!, self._r[2254]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2256]!, self._r[2256]!, [_1, _2, _3]) } - public var Login_InvalidFirstNameError: String { return self._s[2255]! } - public var Notifications_Badge_CountUnreadMessages_InfoOn: String { return self._s[2256]! } - public var Checkout_PaymentMethod_New: String { return self._s[2257]! } - public var ShareMenu_CopyShareLinkGame: String { return self._s[2258]! } - public var PhotoEditor_QualityTool: String { return self._s[2259]! } - public var Login_SendCodeViaSms: String { return self._s[2260]! } - public var SettingsSearch_Synonyms_Privacy_DeleteAccountIfAwayFor: String { return self._s[2261]! } - public var Login_EmailNotConfiguredError: String { return self._s[2262]! } - public var SocksProxySetup_Status: String { return self._s[2263]! } - public var PrivacyPolicy_Accept: String { return self._s[2264]! } - public var Notifications_ExceptionsMessagePlaceholder: String { return self._s[2265]! } - public var Appearance_AppIconClassicX: String { return self._s[2266]! } + public var Login_InvalidFirstNameError: String { return self._s[2257]! } + public var Notifications_Badge_CountUnreadMessages_InfoOn: String { return self._s[2258]! } + public var Checkout_PaymentMethod_New: String { return self._s[2259]! } + public var ShareMenu_CopyShareLinkGame: String { return self._s[2260]! } + public var PhotoEditor_QualityTool: String { return self._s[2261]! } + public var Login_SendCodeViaSms: String { return self._s[2262]! } + public var SettingsSearch_Synonyms_Privacy_DeleteAccountIfAwayFor: String { return self._s[2263]! } + public var Login_EmailNotConfiguredError: String { return self._s[2264]! } + public var SocksProxySetup_Status: String { return self._s[2265]! } + public var PrivacyPolicy_Accept: String { return self._s[2266]! } + public var Notifications_ExceptionsMessagePlaceholder: String { return self._s[2267]! } + public var Appearance_AppIconClassicX: String { return self._s[2268]! } public func PUSH_CHAT_MESSAGE_TEXT(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2267]!, self._r[2267]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2269]!, self._r[2269]!, [_1, _2, _3]) } - public var OwnershipTransfer_SecurityRequirements: String { return self._s[2268]! } - public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[2269]! } - public var AutoNightTheme_Automatic: String { return self._s[2270]! } - public var Channel_Username_InvalidStartsWithNumber: String { return self._s[2271]! } - public var Privacy_ContactsSyncHelp: String { return self._s[2272]! } - public var Cache_Help: String { return self._s[2273]! } - public var Group_ErrorAccessDenied: String { return self._s[2274]! } - public var Passport_Language_fa: String { return self._s[2275]! } - public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2276]! } - public var PrivacySettings_LastSeen: String { return self._s[2277]! } + public var OwnershipTransfer_SecurityRequirements: String { return self._s[2270]! } + public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[2271]! } + public var AutoNightTheme_Automatic: String { return self._s[2272]! } + public var Channel_Username_InvalidStartsWithNumber: String { return self._s[2273]! } + public var Privacy_ContactsSyncHelp: String { return self._s[2274]! } + public var Cache_Help: String { return self._s[2275]! } + public var Group_ErrorAccessDenied: String { return self._s[2276]! } + public var Passport_Language_fa: String { return self._s[2277]! } + public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2278]! } + public var PrivacySettings_LastSeen: String { return self._s[2279]! } public func DialogList_MultipleTyping(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2278]!, self._r[2278]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2280]!, self._r[2280]!, [_0, _1]) } - public var Preview_SaveGif: String { return self._s[2282]! } - public var SettingsSearch_Synonyms_Privacy_TwoStepAuth: String { return self._s[2283]! } - public var Profile_About: String { return self._s[2284]! } - public var Channel_About_Placeholder: String { return self._s[2285]! } - public var Login_InfoTitle: String { return self._s[2286]! } + public var Preview_SaveGif: String { return self._s[2284]! } + public var SettingsSearch_Synonyms_Privacy_TwoStepAuth: String { return self._s[2285]! } + public var Profile_About: String { return self._s[2286]! } + public var Channel_About_Placeholder: String { return self._s[2287]! } + public var Login_InfoTitle: String { return self._s[2288]! } public func TwoStepAuth_SetupPendingEmail(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2287]!, self._r[2287]!, [_0]) + return formatWithArgumentRanges(self._s[2289]!, self._r[2289]!, [_0]) } - public var Watch_Suggestion_CantTalk: String { return self._s[2289]! } - public var ContactInfo_Title: String { return self._s[2290]! } - public var Media_ShareThisVideo: String { return self._s[2291]! } - public var Weekday_ShortFriday: String { return self._s[2292]! } - public var AccessDenied_Contacts: String { return self._s[2293]! } - public var Notification_CallIncomingShort: String { return self._s[2294]! } - public var Group_Setup_TypePublic: String { return self._s[2295]! } - public var Notifications_MessageNotificationsExceptions: String { return self._s[2296]! } - public var Notifications_Badge_IncludeChannels: String { return self._s[2297]! } - public var Notifications_MessageNotificationsPreview: String { return self._s[2300]! } - public var ConversationProfile_ErrorCreatingConversation: String { return self._s[2301]! } - public var Group_ErrorAddTooMuchBots: String { return self._s[2302]! } - public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[2303]! } - public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[2304]! } - public var DialogList_Typing: String { return self._s[2305]! } - public var CallFeedback_IncludeLogs: String { return self._s[2307]! } - public var Checkout_Phone: String { return self._s[2309]! } - public var Login_InfoFirstNamePlaceholder: String { return self._s[2312]! } - public var Privacy_Calls_Integration: String { return self._s[2313]! } - public var Notifications_PermissionsAllow: String { return self._s[2314]! } - public var TwoStepAuth_AddHintDescription: String { return self._s[2318]! } - public var Settings_ChatSettings: String { return self._s[2319]! } + public var Watch_Suggestion_CantTalk: String { return self._s[2291]! } + public var ContactInfo_Title: String { return self._s[2292]! } + public var Media_ShareThisVideo: String { return self._s[2293]! } + public var Weekday_ShortFriday: String { return self._s[2294]! } + public var AccessDenied_Contacts: String { return self._s[2295]! } + public var Notification_CallIncomingShort: String { return self._s[2296]! } + public var Group_Setup_TypePublic: String { return self._s[2297]! } + public var Notifications_MessageNotificationsExceptions: String { return self._s[2298]! } + public var Notifications_Badge_IncludeChannels: String { return self._s[2299]! } + public var Notifications_MessageNotificationsPreview: String { return self._s[2302]! } + public var ConversationProfile_ErrorCreatingConversation: String { return self._s[2303]! } + public var Group_ErrorAddTooMuchBots: String { return self._s[2304]! } + public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[2305]! } + public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[2306]! } + public var DialogList_Typing: String { return self._s[2307]! } + public var CallFeedback_IncludeLogs: String { return self._s[2309]! } + public var Checkout_Phone: String { return self._s[2311]! } + public var Login_InfoFirstNamePlaceholder: String { return self._s[2314]! } + public var Privacy_Calls_Integration: String { return self._s[2315]! } + public var Notifications_PermissionsAllow: String { return self._s[2316]! } + public var TwoStepAuth_AddHintDescription: String { return self._s[2320]! } + public var Settings_ChatSettings: String { return self._s[2321]! } public func PUSH_MESSAGE_ALBUM(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2320]!, self._r[2320]!, [_1]) + return formatWithArgumentRanges(self._s[2322]!, self._r[2322]!, [_1]) } public func Channel_AdminLog_MessageInvitedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2321]!, self._r[2321]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2323]!, self._r[2323]!, [_1, _2]) } - public var GroupRemoved_DeleteUser: String { return self._s[2323]! } + public var GroupRemoved_DeleteUser: String { return self._s[2325]! } public func Channel_AdminLog_PollStopped(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2324]!, self._r[2324]!, [_0]) + return formatWithArgumentRanges(self._s[2326]!, self._r[2326]!, [_0]) } public func PUSH_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2325]!, self._r[2325]!, [_1]) + return formatWithArgumentRanges(self._s[2327]!, self._r[2327]!, [_1]) } - public var Login_ContinueWithLocalization: String { return self._s[2326]! } - public var Watch_Message_ForwardedFrom: String { return self._s[2327]! } - public var TwoStepAuth_EnterEmailCode: String { return self._s[2329]! } - public var Conversation_Unblock: String { return self._s[2330]! } - public var PrivacySettings_DataSettings: String { return self._s[2331]! } - public var Group_PublicLink_Info: String { return self._s[2332]! } - public var Notifications_InAppNotificationsVibrate: String { return self._s[2333]! } + public var Login_ContinueWithLocalization: String { return self._s[2328]! } + public var Watch_Message_ForwardedFrom: String { return self._s[2329]! } + public var TwoStepAuth_EnterEmailCode: String { return self._s[2331]! } + public var Conversation_Unblock: String { return self._s[2332]! } + public var PrivacySettings_DataSettings: String { return self._s[2333]! } + public var Group_PublicLink_Info: String { return self._s[2334]! } + public var Notifications_InAppNotificationsVibrate: String { return self._s[2335]! } public func Privacy_GroupsAndChannels_InviteToChannelError(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2334]!, self._r[2334]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2336]!, self._r[2336]!, [_0, _1]) } - public var PrivacySettings_Passcode: String { return self._s[2337]! } - public var Call_Mute: String { return self._s[2338]! } - public var Passport_Language_dz: String { return self._s[2339]! } - public var Passport_Language_tk: String { return self._s[2340]! } + public var PrivacySettings_Passcode: String { return self._s[2339]! } + public var Call_Mute: String { return self._s[2340]! } + public var Passport_Language_dz: String { return self._s[2341]! } + public var Passport_Language_tk: String { return self._s[2342]! } public func Login_EmailCodeSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2341]!, self._r[2341]!, [_0]) + return formatWithArgumentRanges(self._s[2343]!, self._r[2343]!, [_0]) } - public var Settings_Search: String { return self._s[2342]! } - public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[2343]! } - public var Conversation_ContextMenuReply: String { return self._s[2344]! } - public var WallpaperSearch_ColorBrown: String { return self._s[2345]! } - public var Tour_Title1: String { return self._s[2346]! } - public var Conversation_ClearGroupHistory: String { return self._s[2348]! } - public var WallpaperPreview_Motion: String { return self._s[2349]! } + public var Settings_Search: String { return self._s[2344]! } + public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[2345]! } + public var Conversation_ContextMenuReply: String { return self._s[2346]! } + public var WallpaperSearch_ColorBrown: String { return self._s[2347]! } + public var Tour_Title1: String { return self._s[2348]! } + public var Conversation_ClearGroupHistory: String { return self._s[2350]! } + public var WallpaperPreview_Motion: String { return self._s[2351]! } public func Checkout_PasswordEntry_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2350]!, self._r[2350]!, [_0]) + return formatWithArgumentRanges(self._s[2352]!, self._r[2352]!, [_0]) } - public var Call_RateCall: String { return self._s[2351]! } - public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[2352]! } - public var Passport_PasswordCompleteSetup: String { return self._s[2353]! } - public var Conversation_InputTextSilentBroadcastPlaceholder: String { return self._s[2354]! } - public var UserInfo_LastNamePlaceholder: String { return self._s[2356]! } + public var Call_RateCall: String { return self._s[2353]! } + public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[2354]! } + public var Passport_PasswordCompleteSetup: String { return self._s[2355]! } + public var Conversation_InputTextSilentBroadcastPlaceholder: String { return self._s[2356]! } + public var UserInfo_LastNamePlaceholder: String { return self._s[2358]! } public func Login_WillCallYou(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2358]!, self._r[2358]!, [_0]) + return formatWithArgumentRanges(self._s[2360]!, self._r[2360]!, [_0]) } - public var Compose_Create: String { return self._s[2359]! } - public var Contacts_InviteToTelegram: String { return self._s[2360]! } - public var GroupInfo_Notifications: String { return self._s[2361]! } - public var Message_PinnedLiveLocationMessage: String { return self._s[2363]! } - public var Month_GenApril: String { return self._s[2364]! } - public var Appearance_AutoNightTheme: String { return self._s[2365]! } - public var ChatSettings_AutomaticAudioDownload: String { return self._s[2367]! } - public var Login_CodeSentSms: String { return self._s[2369]! } + public var Compose_Create: String { return self._s[2361]! } + public var Contacts_InviteToTelegram: String { return self._s[2362]! } + public var GroupInfo_Notifications: String { return self._s[2363]! } + public var Message_PinnedLiveLocationMessage: String { return self._s[2365]! } + public var Month_GenApril: String { return self._s[2366]! } + public var Appearance_AutoNightTheme: String { return self._s[2367]! } + public var ChatSettings_AutomaticAudioDownload: String { return self._s[2369]! } + public var Login_CodeSentSms: String { return self._s[2371]! } public func UserInfo_UnblockConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2370]!, self._r[2370]!, [_0]) + return formatWithArgumentRanges(self._s[2372]!, self._r[2372]!, [_0]) } - public var EmptyGroupInfo_Line3: String { return self._s[2371]! } - public var LogoutOptions_ContactSupportText: String { return self._s[2372]! } - public var Passport_Language_hr: String { return self._s[2373]! } - public var Common_ActionNotAllowedError: String { return self._s[2374]! } + public var EmptyGroupInfo_Line3: String { return self._s[2373]! } + public var LogoutOptions_ContactSupportText: String { return self._s[2374]! } + public var Passport_Language_hr: String { return self._s[2375]! } + public var Common_ActionNotAllowedError: String { return self._s[2376]! } public func Channel_AdminLog_MessageRestrictedNewSetting(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2375]!, self._r[2375]!, [_0]) + return formatWithArgumentRanges(self._s[2377]!, self._r[2377]!, [_0]) } - public var GroupInfo_InviteLink_CopyLink: String { return self._s[2376]! } - public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[2377]! } - public var Privacy_SecretChatsTitle: String { return self._s[2378]! } - public var Notification_SecretChatMessageScreenshotSelf: String { return self._s[2380]! } - public var GroupInfo_AddUserLeftError: String { return self._s[2381]! } - public var AutoDownloadSettings_TypePrivateChats: String { return self._s[2382]! } - public var LogoutOptions_ContactSupportTitle: String { return self._s[2383]! } - public var Channel_AddBotErrorHaveRights: String { return self._s[2384]! } - public var Preview_DeleteGif: String { return self._s[2385]! } - public var GroupInfo_Permissions_Exceptions: String { return self._s[2386]! } - public var Group_ErrorNotMutualContact: String { return self._s[2387]! } - public var Notification_MessageLifetime5s: String { return self._s[2388]! } + public var GroupInfo_InviteLink_CopyLink: String { return self._s[2378]! } + public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[2379]! } + public var Privacy_SecretChatsTitle: String { return self._s[2380]! } + public var Notification_SecretChatMessageScreenshotSelf: String { return self._s[2382]! } + public var GroupInfo_AddUserLeftError: String { return self._s[2383]! } + public var AutoDownloadSettings_TypePrivateChats: String { return self._s[2384]! } + public var LogoutOptions_ContactSupportTitle: String { return self._s[2385]! } + public var Channel_AddBotErrorHaveRights: String { return self._s[2386]! } + public var Preview_DeleteGif: String { return self._s[2387]! } + public var GroupInfo_Permissions_Exceptions: String { return self._s[2388]! } + public var Group_ErrorNotMutualContact: String { return self._s[2389]! } + public var Notification_MessageLifetime5s: String { return self._s[2390]! } public func Watch_LastSeen_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2389]!, self._r[2389]!, [_0]) + return formatWithArgumentRanges(self._s[2391]!, self._r[2391]!, [_0]) } - public var Channel_OwnershipTransfer_ErrorPublicChannelsTooMuch: String { return self._s[2391]! } - public var ReportSpam_DeleteThisChat: String { return self._s[2392]! } - public var Passport_Address_AddBankStatement: String { return self._s[2393]! } - public var Notification_CallIncoming: String { return self._s[2394]! } - public var Compose_NewGroupTitle: String { return self._s[2395]! } - public var TwoStepAuth_RecoveryCodeHelp: String { return self._s[2397]! } - public var Passport_Address_Postcode: String { return self._s[2399]! } + public var Channel_OwnershipTransfer_ErrorPublicChannelsTooMuch: String { return self._s[2393]! } + public var ReportSpam_DeleteThisChat: String { return self._s[2394]! } + public var Passport_Address_AddBankStatement: String { return self._s[2395]! } + public var Notification_CallIncoming: String { return self._s[2396]! } + public var Compose_NewGroupTitle: String { return self._s[2397]! } + public var TwoStepAuth_RecoveryCodeHelp: String { return self._s[2399]! } + public var Passport_Address_Postcode: String { return self._s[2401]! } public func LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2400]!, self._r[2400]!, [_0]) + return formatWithArgumentRanges(self._s[2402]!, self._r[2402]!, [_0]) } - public var Checkout_NewCard_SaveInfoHelp: String { return self._s[2401]! } - public var WallpaperColors_Title: String { return self._s[2402]! } - public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[2403]! } - public var GroupPermission_Duration: String { return self._s[2404]! } + public var Checkout_NewCard_SaveInfoHelp: String { return self._s[2403]! } + public var WallpaperColors_Title: String { return self._s[2404]! } + public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[2405]! } + public var GroupPermission_Duration: String { return self._s[2406]! } public func Cache_Clear(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2405]!, self._r[2405]!, [_0]) + return formatWithArgumentRanges(self._s[2407]!, self._r[2407]!, [_0]) } - public var Bot_GroupStatusDoesNotReadHistory: String { return self._s[2406]! } - public var Username_Placeholder: String { return self._s[2407]! } - public var CallFeedback_WhatWentWrong: String { return self._s[2408]! } - public var Passport_FieldAddressUploadHelp: String { return self._s[2409]! } - public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[2410]! } + public var Bot_GroupStatusDoesNotReadHistory: String { return self._s[2408]! } + public var Username_Placeholder: String { return self._s[2409]! } + public var CallFeedback_WhatWentWrong: String { return self._s[2410]! } + public var Passport_FieldAddressUploadHelp: String { return self._s[2411]! } + public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[2412]! } public func Channel_AdminLog_MessageChangedUnlinkedChannel(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2412]!, self._r[2412]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2414]!, self._r[2414]!, [_1, _2]) } - public var Passport_PasswordDescription: String { return self._s[2413]! } - public var Channel_MessagePhotoUpdated: String { return self._s[2414]! } - public var MediaPicker_TapToUngroupDescription: String { return self._s[2415]! } - public var SettingsSearch_Synonyms_Notifications_BadgeCountUnreadMessages: String { return self._s[2416]! } - public var AttachmentMenu_PhotoOrVideo: String { return self._s[2417]! } - public var Conversation_ContextMenuMore: String { return self._s[2418]! } - public var Privacy_PaymentsClearInfo: String { return self._s[2419]! } - public var CallSettings_TabIcon: String { return self._s[2420]! } - public var KeyCommand_Find: String { return self._s[2421]! } - public var Message_PinnedGame: String { return self._s[2422]! } - public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[2424]! } - public var Login_CallRequestState2: String { return self._s[2426]! } - public var CheckoutInfo_ReceiverInfoNamePlaceholder: String { return self._s[2428]! } + public var Passport_PasswordDescription: String { return self._s[2415]! } + public var Channel_MessagePhotoUpdated: String { return self._s[2416]! } + public var MediaPicker_TapToUngroupDescription: String { return self._s[2417]! } + public var SettingsSearch_Synonyms_Notifications_BadgeCountUnreadMessages: String { return self._s[2418]! } + public var AttachmentMenu_PhotoOrVideo: String { return self._s[2419]! } + public var Conversation_ContextMenuMore: String { return self._s[2420]! } + public var Privacy_PaymentsClearInfo: String { return self._s[2421]! } + public var CallSettings_TabIcon: String { return self._s[2422]! } + public var KeyCommand_Find: String { return self._s[2423]! } + public var Message_PinnedGame: String { return self._s[2424]! } + public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[2426]! } + public var Login_CallRequestState2: String { return self._s[2428]! } + public var CheckoutInfo_ReceiverInfoNamePlaceholder: String { return self._s[2430]! } public func Checkout_PayPrice(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2430]!, self._r[2430]!, [_0]) + return formatWithArgumentRanges(self._s[2432]!, self._r[2432]!, [_0]) } - public var WallpaperPreview_Blurred: String { return self._s[2431]! } - public var Conversation_InstantPagePreview: String { return self._s[2432]! } + public var WallpaperPreview_Blurred: String { return self._s[2433]! } + public var Conversation_InstantPagePreview: String { return self._s[2434]! } public func DialogList_SingleUploadingVideoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2433]!, self._r[2433]!, [_0]) + return formatWithArgumentRanges(self._s[2435]!, self._r[2435]!, [_0]) } - public var SecretTimer_VideoDescription: String { return self._s[2436]! } - public var WallpaperSearch_ColorRed: String { return self._s[2437]! } - public var GroupPermission_NoPinMessages: String { return self._s[2438]! } - public var Passport_Language_es: String { return self._s[2439]! } - public var Permissions_ContactsAllow_v0: String { return self._s[2441]! } - public var Conversation_EditingMessageMediaEditCurrentVideo: String { return self._s[2442]! } + public var SecretTimer_VideoDescription: String { return self._s[2438]! } + public var WallpaperSearch_ColorRed: String { return self._s[2439]! } + public var GroupPermission_NoPinMessages: String { return self._s[2440]! } + public var Passport_Language_es: String { return self._s[2441]! } + public var Permissions_ContactsAllow_v0: String { return self._s[2443]! } + public var Conversation_EditingMessageMediaEditCurrentVideo: String { return self._s[2444]! } public func PUSH_CHAT_MESSAGE_CONTACT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2443]!, self._r[2443]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2445]!, self._r[2445]!, [_1, _2]) } - public var Privacy_Forwards_CustomHelp: String { return self._s[2444]! } - public var WebPreview_GettingLinkInfo: String { return self._s[2445]! } - public var Watch_UserInfo_Unmute: String { return self._s[2446]! } - public var GroupInfo_ChannelListNamePlaceholder: String { return self._s[2447]! } - public var AccessDenied_CameraRestricted: String { return self._s[2449]! } + public var Privacy_Forwards_CustomHelp: String { return self._s[2446]! } + public var WebPreview_GettingLinkInfo: String { return self._s[2447]! } + public var Watch_UserInfo_Unmute: String { return self._s[2448]! } + public var GroupInfo_ChannelListNamePlaceholder: String { return self._s[2449]! } + public var AccessDenied_CameraRestricted: String { return self._s[2451]! } public func Conversation_Kilobytes(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2450]!, self._r[2450]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[2452]!, self._r[2452]!, ["\(_0)"]) } - public var ChatList_ReadAll: String { return self._s[2452]! } - public var Settings_CopyUsername: String { return self._s[2453]! } - public var Contacts_SearchLabel: String { return self._s[2454]! } - public var Map_OpenInYandexNavigator: String { return self._s[2456]! } - public var PasscodeSettings_EncryptData: String { return self._s[2457]! } - public var WallpaperSearch_ColorPrefix: String { return self._s[2458]! } - public var Notifications_GroupNotificationsPreview: String { return self._s[2459]! } - public var DialogList_AdNoticeAlert: String { return self._s[2460]! } - public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[2462]! } - public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[2463]! } - public var Localization_LanguageCustom: String { return self._s[2464]! } - public var Passport_Identity_TypeDriversLicenseUploadScan: String { return self._s[2465]! } - public var CallFeedback_Title: String { return self._s[2466]! } - public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[2469]! } - public var Conversation_InfoGroup: String { return self._s[2470]! } - public var Compose_NewMessage: String { return self._s[2471]! } - public var FastTwoStepSetup_HintPlaceholder: String { return self._s[2472]! } - public var ChatSettings_AutoDownloadVideoMessages: String { return self._s[2473]! } - public var Channel_DiscussionGroup_UnlinkChannel: String { return self._s[2474]! } + public var ChatList_ReadAll: String { return self._s[2454]! } + public var Settings_CopyUsername: String { return self._s[2455]! } + public var Contacts_SearchLabel: String { return self._s[2456]! } + public var Map_OpenInYandexNavigator: String { return self._s[2458]! } + public var PasscodeSettings_EncryptData: String { return self._s[2459]! } + public var WallpaperSearch_ColorPrefix: String { return self._s[2460]! } + public var Notifications_GroupNotificationsPreview: String { return self._s[2461]! } + public var DialogList_AdNoticeAlert: String { return self._s[2462]! } + public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[2464]! } + public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[2465]! } + public var Localization_LanguageCustom: String { return self._s[2466]! } + public var Passport_Identity_TypeDriversLicenseUploadScan: String { return self._s[2467]! } + public var CallFeedback_Title: String { return self._s[2468]! } + public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[2471]! } + public var Conversation_InfoGroup: String { return self._s[2472]! } + public var Compose_NewMessage: String { return self._s[2473]! } + public var FastTwoStepSetup_HintPlaceholder: String { return self._s[2474]! } + public var ChatSettings_AutoDownloadVideoMessages: String { return self._s[2475]! } + public var Channel_DiscussionGroup_UnlinkChannel: String { return self._s[2476]! } public func Passport_Scans_ScanIndex(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2475]!, self._r[2475]!, [_0]) + return formatWithArgumentRanges(self._s[2477]!, self._r[2477]!, [_0]) } - public var Channel_AdminLog_CanDeleteMessages: String { return self._s[2476]! } - public var Login_CancelSignUpConfirmation: String { return self._s[2477]! } - public var ChangePhoneNumberCode_Help: String { return self._s[2478]! } - public var PrivacySettings_DeleteAccountHelp: String { return self._s[2479]! } - public var Channel_BlackList_Title: String { return self._s[2480]! } - public var UserInfo_PhoneCall: String { return self._s[2481]! } - public var Passport_Address_OneOfTypeBankStatement: String { return self._s[2483]! } - public var State_connecting: String { return self._s[2484]! } + public var Channel_AdminLog_CanDeleteMessages: String { return self._s[2478]! } + public var Login_CancelSignUpConfirmation: String { return self._s[2479]! } + public var ChangePhoneNumberCode_Help: String { return self._s[2480]! } + public var PrivacySettings_DeleteAccountHelp: String { return self._s[2481]! } + public var Channel_BlackList_Title: String { return self._s[2482]! } + public var UserInfo_PhoneCall: String { return self._s[2483]! } + public var Passport_Address_OneOfTypeBankStatement: String { return self._s[2485]! } + public var State_connecting: String { return self._s[2486]! } public func DialogList_SingleRecordingAudioSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2485]!, self._r[2485]!, [_0]) + return formatWithArgumentRanges(self._s[2487]!, self._r[2487]!, [_0]) } - public var Notifications_GroupNotifications: String { return self._s[2486]! } - public var Passport_Identity_EditPassport: String { return self._s[2487]! } - public var EnterPasscode_RepeatNewPasscode: String { return self._s[2489]! } - public var Localization_EnglishLanguageName: String { return self._s[2490]! } - public var Share_AuthDescription: String { return self._s[2491]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsAlert: String { return self._s[2492]! } - public var Passport_Identity_Surname: String { return self._s[2493]! } - public var Compose_TokenListPlaceholder: String { return self._s[2494]! } - public var Passport_Identity_OneOfTypePassport: String { return self._s[2495]! } - public var Settings_AboutEmpty: String { return self._s[2496]! } - public var Conversation_Unmute: String { return self._s[2497]! } - public var CreateGroup_ChannelsTooMuch: String { return self._s[2499]! } + public var Notifications_GroupNotifications: String { return self._s[2488]! } + public var Passport_Identity_EditPassport: String { return self._s[2489]! } + public var EnterPasscode_RepeatNewPasscode: String { return self._s[2491]! } + public var Localization_EnglishLanguageName: String { return self._s[2492]! } + public var Share_AuthDescription: String { return self._s[2493]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsAlert: String { return self._s[2494]! } + public var Passport_Identity_Surname: String { return self._s[2495]! } + public var Compose_TokenListPlaceholder: String { return self._s[2496]! } + public var Passport_Identity_OneOfTypePassport: String { return self._s[2497]! } + public var Settings_AboutEmpty: String { return self._s[2498]! } + public var Conversation_Unmute: String { return self._s[2499]! } + public var CreateGroup_ChannelsTooMuch: String { return self._s[2501]! } public func PUSH_CONTACT_JOINED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2500]!, self._r[2500]!, [_1]) + return formatWithArgumentRanges(self._s[2502]!, self._r[2502]!, [_1]) } - public var Login_CodeSentCall: String { return self._s[2501]! } - public var ContactInfo_PhoneLabelHomeFax: String { return self._s[2503]! } - public var ChatSettings_Appearance: String { return self._s[2504]! } - public var Appearance_PickAccentColor: String { return self._s[2505]! } + public var Login_CodeSentCall: String { return self._s[2503]! } + public var ContactInfo_PhoneLabelHomeFax: String { return self._s[2505]! } + public var ChatSettings_Appearance: String { return self._s[2506]! } + public var Appearance_PickAccentColor: String { return self._s[2507]! } public func PUSH_CHAT_MESSAGE_NOTEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2506]!, self._r[2506]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2508]!, self._r[2508]!, [_1, _2]) } public func PUSH_MESSAGE_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2507]!, self._r[2507]!, [_1]) + return formatWithArgumentRanges(self._s[2509]!, self._r[2509]!, [_1]) } - public var Notification_CallMissed: String { return self._s[2508]! } - public var SettingsSearch_Synonyms_Appearance_ChatBackground_Custom: String { return self._s[2509]! } - public var Channel_AdminLogFilter_EventsInfo: String { return self._s[2510]! } - public var ChatAdmins_AdminLabel: String { return self._s[2512]! } - public var KeyCommand_JumpToNextChat: String { return self._s[2513]! } - public var Conversation_StopPollConfirmationTitle: String { return self._s[2515]! } - public var ChangePhoneNumberCode_CodePlaceholder: String { return self._s[2516]! } - public var Month_GenJune: String { return self._s[2517]! } - public var Watch_Location_Current: String { return self._s[2518]! } - public var Conversation_TitleMute: String { return self._s[2519]! } + public var Notification_CallMissed: String { return self._s[2510]! } + public var SettingsSearch_Synonyms_Appearance_ChatBackground_Custom: String { return self._s[2511]! } + public var Channel_AdminLogFilter_EventsInfo: String { return self._s[2512]! } + public var ChatAdmins_AdminLabel: String { return self._s[2514]! } + public var KeyCommand_JumpToNextChat: String { return self._s[2515]! } + public var Conversation_StopPollConfirmationTitle: String { return self._s[2517]! } + public var ChangePhoneNumberCode_CodePlaceholder: String { return self._s[2518]! } + public var Month_GenJune: String { return self._s[2519]! } + public var Watch_Location_Current: String { return self._s[2520]! } + public var Conversation_TitleMute: String { return self._s[2521]! } public func PUSH_CHANNEL_MESSAGE_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2520]!, self._r[2520]!, [_1]) + return formatWithArgumentRanges(self._s[2522]!, self._r[2522]!, [_1]) } - public var GroupInfo_DeleteAndExit: String { return self._s[2521]! } + public var GroupInfo_DeleteAndExit: String { return self._s[2523]! } public func Conversation_Moderate_DeleteAllMessages(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2522]!, self._r[2522]!, [_0]) + return formatWithArgumentRanges(self._s[2524]!, self._r[2524]!, [_0]) } - public var Call_ReportPlaceholder: String { return self._s[2523]! } - public var MaskStickerSettings_Info: String { return self._s[2524]! } + public var Call_ReportPlaceholder: String { return self._s[2525]! } + public var MaskStickerSettings_Info: String { return self._s[2526]! } public func GroupInfo_AddParticipantConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2525]!, self._r[2525]!, [_0]) + return formatWithArgumentRanges(self._s[2527]!, self._r[2527]!, [_0]) } - public var Checkout_NewCard_PostcodeTitle: String { return self._s[2526]! } - public var Passport_Address_RegionPlaceholder: String { return self._s[2528]! } - public var Contacts_ShareTelegram: String { return self._s[2529]! } - public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[2530]! } - public var Channel_ErrorAccessDenied: String { return self._s[2531]! } - public var UserInfo_ScamBotWarning: String { return self._s[2533]! } - public var Stickers_GroupChooseStickerPack: String { return self._s[2534]! } - public var Call_ConnectionErrorTitle: String { return self._s[2535]! } - public var UserInfo_NotificationsEnable: String { return self._s[2536]! } - public var ArchivedChats_IntroText1: String { return self._s[2537]! } - public var Tour_Text4: String { return self._s[2540]! } - public var WallpaperSearch_Recent: String { return self._s[2541]! } - public var GroupInfo_ScamGroupWarning: String { return self._s[2542]! } - public var Profile_MessageLifetime2s: String { return self._s[2544]! } - public var Notification_MessageLifetime2s: String { return self._s[2545]! } + public var Checkout_NewCard_PostcodeTitle: String { return self._s[2528]! } + public var Passport_Address_RegionPlaceholder: String { return self._s[2530]! } + public var Contacts_ShareTelegram: String { return self._s[2531]! } + public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[2532]! } + public var Channel_ErrorAccessDenied: String { return self._s[2533]! } + public var UserInfo_ScamBotWarning: String { return self._s[2535]! } + public var Stickers_GroupChooseStickerPack: String { return self._s[2536]! } + public var Call_ConnectionErrorTitle: String { return self._s[2537]! } + public var UserInfo_NotificationsEnable: String { return self._s[2538]! } + public var ArchivedChats_IntroText1: String { return self._s[2539]! } + public var Tour_Text4: String { return self._s[2542]! } + public var WallpaperSearch_Recent: String { return self._s[2543]! } + public var GroupInfo_ScamGroupWarning: String { return self._s[2544]! } + public var Profile_MessageLifetime2s: String { return self._s[2546]! } + public var Notification_MessageLifetime2s: String { return self._s[2547]! } public func Time_PreciseDate_m10(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2546]!, self._r[2546]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2548]!, self._r[2548]!, [_1, _2, _3]) } - public var Cache_ClearCache: String { return self._s[2547]! } - public var AutoNightTheme_UpdateLocation: String { return self._s[2548]! } - public var Permissions_NotificationsUnreachableText_v0: String { return self._s[2549]! } + public var Cache_ClearCache: String { return self._s[2549]! } + public var AutoNightTheme_UpdateLocation: String { return self._s[2550]! } + public var Permissions_NotificationsUnreachableText_v0: String { return self._s[2551]! } public func Channel_AdminLog_MessageChangedGroupUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2553]!, self._r[2553]!, [_0]) - } - public func Conversation_ShareMyPhoneNumber_StatusSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2555]!, self._r[2555]!, [_0]) } - public var LocalGroup_Text: String { return self._s[2556]! } - public var Channel_AdminLog_EmptyFilterTitle: String { return self._s[2557]! } - public var SocksProxySetup_TypeSocks: String { return self._s[2558]! } - public var ChatList_UnarchiveAction: String { return self._s[2559]! } - public var AutoNightTheme_Title: String { return self._s[2560]! } - public var InstantPage_FeedbackButton: String { return self._s[2561]! } - public var Passport_FieldAddress: String { return self._s[2562]! } - public var Month_ShortMarch: String { return self._s[2563]! } + public func Conversation_ShareMyPhoneNumber_StatusSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2557]!, self._r[2557]!, [_0]) + } + public var LocalGroup_Text: String { return self._s[2558]! } + public var Channel_AdminLog_EmptyFilterTitle: String { return self._s[2559]! } + public var SocksProxySetup_TypeSocks: String { return self._s[2560]! } + public var ChatList_UnarchiveAction: String { return self._s[2561]! } + public var AutoNightTheme_Title: String { return self._s[2562]! } + public var InstantPage_FeedbackButton: String { return self._s[2563]! } + public var Passport_FieldAddress: String { return self._s[2564]! } + public var Month_ShortMarch: String { return self._s[2565]! } public func PUSH_MESSAGE_INVOICE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2564]!, self._r[2564]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2566]!, self._r[2566]!, [_1, _2]) } - public var SocksProxySetup_UsernamePlaceholder: String { return self._s[2565]! } - public var Conversation_ShareInlineBotLocationConfirmation: String { return self._s[2566]! } - public var Passport_FloodError: String { return self._s[2567]! } - public var SecretGif_Title: String { return self._s[2568]! } - public var NotificationSettings_ShowNotificationsAllAccountsInfoOn: String { return self._s[2569]! } - public var Passport_Language_th: String { return self._s[2571]! } - public var Passport_Address_Address: String { return self._s[2572]! } - public var Login_InvalidLastNameError: String { return self._s[2573]! } - public var Notifications_InAppNotificationsPreview: String { return self._s[2574]! } - public var Notifications_PermissionsUnreachableTitle: String { return self._s[2575]! } - public var SettingsSearch_FAQ: String { return self._s[2576]! } - public var ShareMenu_Send: String { return self._s[2577]! } - public var WallpaperSearch_ColorYellow: String { return self._s[2579]! } - public var Month_GenNovember: String { return self._s[2581]! } - public var SettingsSearch_Synonyms_Appearance_LargeEmoji: String { return self._s[2583]! } + public var SocksProxySetup_UsernamePlaceholder: String { return self._s[2567]! } + public var Conversation_ShareInlineBotLocationConfirmation: String { return self._s[2568]! } + public var Passport_FloodError: String { return self._s[2569]! } + public var SecretGif_Title: String { return self._s[2570]! } + public var NotificationSettings_ShowNotificationsAllAccountsInfoOn: String { return self._s[2571]! } + public var Passport_Language_th: String { return self._s[2573]! } + public var Passport_Address_Address: String { return self._s[2574]! } + public var Login_InvalidLastNameError: String { return self._s[2575]! } + public var Notifications_InAppNotificationsPreview: String { return self._s[2576]! } + public var Notifications_PermissionsUnreachableTitle: String { return self._s[2577]! } + public var SettingsSearch_FAQ: String { return self._s[2578]! } + public var ShareMenu_Send: String { return self._s[2579]! } + public var WallpaperSearch_ColorYellow: String { return self._s[2581]! } + public var Month_GenNovember: String { return self._s[2583]! } + public var SettingsSearch_Synonyms_Appearance_LargeEmoji: String { return self._s[2585]! } public func Conversation_ShareMyPhoneNumberConfirmation(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2584]!, self._r[2584]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2586]!, self._r[2586]!, [_1, _2]) } - public var Checkout_Email: String { return self._s[2585]! } - public var NotificationsSound_Tritone: String { return self._s[2586]! } - public var StickerPacksSettings_ManagingHelp: String { return self._s[2588]! } + public var Checkout_Email: String { return self._s[2587]! } + public var NotificationsSound_Tritone: String { return self._s[2588]! } + public var StickerPacksSettings_ManagingHelp: String { return self._s[2590]! } public func PUSH_PINNED_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2591]!, self._r[2591]!, [_1]) + return formatWithArgumentRanges(self._s[2593]!, self._r[2593]!, [_1]) } - public var ChangePhoneNumberNumber_Help: String { return self._s[2592]! } + public var ChangePhoneNumberNumber_Help: String { return self._s[2594]! } public func Checkout_LiabilityAlert(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2593]!, self._r[2593]!, [_1, _1, _1, _2]) + return formatWithArgumentRanges(self._s[2595]!, self._r[2595]!, [_1, _1, _1, _2]) } - public var ChatList_UndoArchiveTitle: String { return self._s[2594]! } - public var Notification_Exceptions_Add: String { return self._s[2595]! } - public var DialogList_You: String { return self._s[2596]! } - public var MediaPicker_Send: String { return self._s[2599]! } - public var SettingsSearch_Synonyms_Stickers_Title: String { return self._s[2600]! } - public var Call_AudioRouteSpeaker: String { return self._s[2601]! } - public var Watch_UserInfo_Title: String { return self._s[2602]! } - public var Appearance_AccentColor: String { return self._s[2603]! } + public var ChatList_UndoArchiveTitle: String { return self._s[2596]! } + public var Notification_Exceptions_Add: String { return self._s[2597]! } + public var DialogList_You: String { return self._s[2598]! } + public var MediaPicker_Send: String { return self._s[2601]! } + public var SettingsSearch_Synonyms_Stickers_Title: String { return self._s[2602]! } + public var Call_AudioRouteSpeaker: String { return self._s[2603]! } + public var Watch_UserInfo_Title: String { return self._s[2604]! } + public var Appearance_AccentColor: String { return self._s[2605]! } public func Login_EmailPhoneSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2604]!, self._r[2604]!, [_0]) + return formatWithArgumentRanges(self._s[2606]!, self._r[2606]!, [_0]) } - public var Permissions_ContactsAllowInSettings_v0: String { return self._s[2605]! } + public var Permissions_ContactsAllowInSettings_v0: String { return self._s[2607]! } public func PUSH_CHANNEL_MESSAGE_GAME(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2606]!, self._r[2606]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2608]!, self._r[2608]!, [_1, _2]) } - public var Conversation_ClousStorageInfo_Description2: String { return self._s[2607]! } - public var WebSearch_RecentClearConfirmation: String { return self._s[2608]! } - public var Notification_CallOutgoing: String { return self._s[2609]! } - public var PrivacySettings_PasscodeAndFaceId: String { return self._s[2610]! } - public var Channel_DiscussionGroup_MakeHistoryPublic: String { return self._s[2611]! } - public var Call_RecordingDisabledMessage: String { return self._s[2612]! } - public var Message_Game: String { return self._s[2613]! } - public var Conversation_PressVolumeButtonForSound: String { return self._s[2614]! } - public var PrivacyLastSeenSettings_CustomHelp: String { return self._s[2615]! } - public var Channel_DiscussionGroup_PrivateGroup: String { return self._s[2616]! } - public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[2617]! } - public var Date_DialogDateFormat: String { return self._s[2618]! } - public var WallpaperColors_SetCustomColor: String { return self._s[2619]! } - public var Notifications_InAppNotifications: String { return self._s[2620]! } + public var Conversation_ClousStorageInfo_Description2: String { return self._s[2609]! } + public var WebSearch_RecentClearConfirmation: String { return self._s[2610]! } + public var Notification_CallOutgoing: String { return self._s[2611]! } + public var PrivacySettings_PasscodeAndFaceId: String { return self._s[2612]! } + public var Channel_DiscussionGroup_MakeHistoryPublic: String { return self._s[2613]! } + public var Call_RecordingDisabledMessage: String { return self._s[2614]! } + public var Message_Game: String { return self._s[2615]! } + public var Conversation_PressVolumeButtonForSound: String { return self._s[2616]! } + public var PrivacyLastSeenSettings_CustomHelp: String { return self._s[2617]! } + public var Channel_DiscussionGroup_PrivateGroup: String { return self._s[2618]! } + public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[2619]! } + public var Date_DialogDateFormat: String { return self._s[2620]! } + public var WallpaperColors_SetCustomColor: String { return self._s[2621]! } + public var Notifications_InAppNotifications: String { return self._s[2622]! } public func Channel_Management_RemovedBy(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2621]!, self._r[2621]!, [_0]) + return formatWithArgumentRanges(self._s[2623]!, self._r[2623]!, [_0]) } public func Settings_ApplyProxyAlert(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2622]!, self._r[2622]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2624]!, self._r[2624]!, [_1, _2]) } - public var NewContact_Title: String { return self._s[2623]! } + public var NewContact_Title: String { return self._s[2625]! } public func AutoDownloadSettings_UpToForAll(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2624]!, self._r[2624]!, [_0]) + return formatWithArgumentRanges(self._s[2626]!, self._r[2626]!, [_0]) } - public var Conversation_ViewContactDetails: String { return self._s[2625]! } + public var Conversation_ViewContactDetails: String { return self._s[2627]! } public func PUSH_CHANNEL_MESSAGE_CONTACT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2627]!, self._r[2627]!, [_1]) + return formatWithArgumentRanges(self._s[2629]!, self._r[2629]!, [_1]) } - public var Checkout_NewCard_CardholderNameTitle: String { return self._s[2628]! } - public var Passport_Identity_ExpiryDateNone: String { return self._s[2629]! } - public var PrivacySettings_Title: String { return self._s[2630]! } - public var Conversation_SilentBroadcastTooltipOff: String { return self._s[2633]! } - public var GroupRemoved_UsersSectionTitle: String { return self._s[2634]! } - public var Contacts_PhoneNumber: String { return self._s[2635]! } - public var Map_ShowPlaces: String { return self._s[2637]! } - public var ChatAdmins_Title: String { return self._s[2638]! } - public var InstantPage_Reference: String { return self._s[2640]! } - public var ReportGroupLocation_Text: String { return self._s[2641]! } + public var Checkout_NewCard_CardholderNameTitle: String { return self._s[2630]! } + public var Passport_Identity_ExpiryDateNone: String { return self._s[2631]! } + public var PrivacySettings_Title: String { return self._s[2632]! } + public var Conversation_SilentBroadcastTooltipOff: String { return self._s[2635]! } + public var GroupRemoved_UsersSectionTitle: String { return self._s[2636]! } + public var Contacts_PhoneNumber: String { return self._s[2637]! } + public var Map_ShowPlaces: String { return self._s[2639]! } + public var ChatAdmins_Title: String { return self._s[2640]! } + public var InstantPage_Reference: String { return self._s[2642]! } + public var ReportGroupLocation_Text: String { return self._s[2643]! } public func PUSH_CHAT_MESSAGE_FWD(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2642]!, self._r[2642]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2644]!, self._r[2644]!, [_1, _2]) } - public var Camera_FlashOff: String { return self._s[2643]! } - public var Watch_UserInfo_Block: String { return self._s[2644]! } - public var ChatSettings_Stickers: String { return self._s[2645]! } - public var ChatSettings_DownloadInBackground: String { return self._s[2646]! } + public var Camera_FlashOff: String { return self._s[2645]! } + public var Watch_UserInfo_Block: String { return self._s[2646]! } + public var ChatSettings_Stickers: String { return self._s[2647]! } + public var ChatSettings_DownloadInBackground: String { return self._s[2648]! } public func UserInfo_BlockConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2647]!, self._r[2647]!, [_0]) + return formatWithArgumentRanges(self._s[2649]!, self._r[2649]!, [_0]) } - public var Settings_ViewPhoto: String { return self._s[2648]! } - public var Login_CheckOtherSessionMessages: String { return self._s[2649]! } - public var AutoDownloadSettings_Cellular: String { return self._s[2650]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsExceptions: String { return self._s[2651]! } + public var Settings_ViewPhoto: String { return self._s[2650]! } + public var Login_CheckOtherSessionMessages: String { return self._s[2651]! } + public var AutoDownloadSettings_Cellular: String { return self._s[2652]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsExceptions: String { return self._s[2653]! } public func Target_InviteToGroupConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2653]!, self._r[2653]!, [_0]) + return formatWithArgumentRanges(self._s[2655]!, self._r[2655]!, [_0]) } - public var Privacy_DeleteDrafts: String { return self._s[2654]! } - public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[2655]! } + public var Privacy_DeleteDrafts: String { return self._s[2656]! } + public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[2657]! } public func LastSeen_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2656]!, self._r[2656]!, [_0]) + return formatWithArgumentRanges(self._s[2658]!, self._r[2658]!, [_0]) } - public var DialogList_SavedMessagesHelp: String { return self._s[2657]! } - public var DialogList_SavedMessages: String { return self._s[2658]! } - public var GroupInfo_UpgradeButton: String { return self._s[2659]! } - public var DialogList_Pin: String { return self._s[2661]! } + public var DialogList_SavedMessagesHelp: String { return self._s[2659]! } + public var DialogList_SavedMessages: String { return self._s[2660]! } + public var GroupInfo_UpgradeButton: String { return self._s[2661]! } + public var DialogList_Pin: String { return self._s[2663]! } public func ForwardedAuthors2(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2662]!, self._r[2662]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2664]!, self._r[2664]!, [_0, _1]) } public func Login_PhoneGenericEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2663]!, self._r[2663]!, [_0]) + return formatWithArgumentRanges(self._s[2665]!, self._r[2665]!, [_0]) } - public var Notification_Exceptions_AlwaysOn: String { return self._s[2664]! } - public var UserInfo_NotificationsDisable: String { return self._s[2665]! } - public var Paint_Outlined: String { return self._s[2666]! } - public var Activity_PlayingGame: String { return self._s[2667]! } - public var SearchImages_NoImagesFound: String { return self._s[2668]! } - public var SocksProxySetup_ProxyType: String { return self._s[2669]! } - public var AppleWatch_ReplyPresetsHelp: String { return self._s[2671]! } - public var Conversation_ContextMenuCancelSending: String { return self._s[2672]! } - public var Settings_AppLanguage: String { return self._s[2673]! } - public var TwoStepAuth_ResetAccountHelp: String { return self._s[2674]! } - public var Common_ChoosePhoto: String { return self._s[2675]! } - public var CallFeedback_ReasonEcho: String { return self._s[2676]! } + public var Notification_Exceptions_AlwaysOn: String { return self._s[2666]! } + public var UserInfo_NotificationsDisable: String { return self._s[2667]! } + public var Paint_Outlined: String { return self._s[2668]! } + public var Activity_PlayingGame: String { return self._s[2669]! } + public var SearchImages_NoImagesFound: String { return self._s[2670]! } + public var SocksProxySetup_ProxyType: String { return self._s[2671]! } + public var AppleWatch_ReplyPresetsHelp: String { return self._s[2673]! } + public var Conversation_ContextMenuCancelSending: String { return self._s[2674]! } + public var Settings_AppLanguage: String { return self._s[2675]! } + public var TwoStepAuth_ResetAccountHelp: String { return self._s[2676]! } + public var Common_ChoosePhoto: String { return self._s[2677]! } + public var CallFeedback_ReasonEcho: String { return self._s[2678]! } public func PUSH_PINNED_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2677]!, self._r[2677]!, [_1]) + return formatWithArgumentRanges(self._s[2679]!, self._r[2679]!, [_1]) } - public var Privacy_Calls_AlwaysAllow: String { return self._s[2678]! } - public var Activity_UploadingVideo: String { return self._s[2679]! } - public var ChannelInfo_DeleteChannelConfirmation: String { return self._s[2680]! } - public var NetworkUsageSettings_Wifi: String { return self._s[2681]! } - public var Channel_BanUser_PermissionReadMessages: String { return self._s[2682]! } - public var Checkout_PayWithTouchId: String { return self._s[2683]! } - public var Wallpaper_ResetWallpapersConfirmation: String { return self._s[2684]! } + public var Privacy_Calls_AlwaysAllow: String { return self._s[2680]! } + public var Activity_UploadingVideo: String { return self._s[2681]! } + public var ChannelInfo_DeleteChannelConfirmation: String { return self._s[2682]! } + public var NetworkUsageSettings_Wifi: String { return self._s[2683]! } + public var Channel_BanUser_PermissionReadMessages: String { return self._s[2684]! } + public var Checkout_PayWithTouchId: String { return self._s[2685]! } + public var Wallpaper_ResetWallpapersConfirmation: String { return self._s[2686]! } public func PUSH_LOCKED_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2686]!, self._r[2686]!, [_1]) + return formatWithArgumentRanges(self._s[2688]!, self._r[2688]!, [_1]) } - public var Notifications_ExceptionsNone: String { return self._s[2687]! } + public var Notifications_ExceptionsNone: String { return self._s[2689]! } public func Message_ForwardedMessageShort(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2688]!, self._r[2688]!, [_0]) + return formatWithArgumentRanges(self._s[2690]!, self._r[2690]!, [_0]) } public func PUSH_PINNED_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2689]!, self._r[2689]!, [_1]) + return formatWithArgumentRanges(self._s[2691]!, self._r[2691]!, [_1]) } - public var AuthSessions_IncompleteAttempts: String { return self._s[2691]! } - public var Passport_Address_Region: String { return self._s[2694]! } - public var ChatList_DeleteChat: String { return self._s[2695]! } - public var LogoutOptions_ClearCacheTitle: String { return self._s[2696]! } - public var PhotoEditor_TiltShift: String { return self._s[2697]! } - public var Settings_FAQ_URL: String { return self._s[2698]! } - public var Passport_Language_sl: String { return self._s[2699]! } - public var Settings_PrivacySettings: String { return self._s[2701]! } - public var SharedMedia_TitleLink: String { return self._s[2702]! } - public var Passport_Identity_TypePassportUploadScan: String { return self._s[2703]! } - public var Settings_SetProfilePhoto: String { return self._s[2704]! } - public var Channel_About_Help: String { return self._s[2705]! } - public var Contacts_PermissionsEnable: String { return self._s[2706]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[2707]! } - public var AttachmentMenu_SendAsFiles: String { return self._s[2708]! } - public var CallFeedback_ReasonInterruption: String { return self._s[2710]! } - public var Passport_Address_AddTemporaryRegistration: String { return self._s[2711]! } - public var AutoDownloadSettings_AutodownloadVideos: String { return self._s[2712]! } - public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[2713]! } - public var PrivacySettings_DeleteAccountTitle: String { return self._s[2714]! } - public var AccessDenied_VideoMessageCamera: String { return self._s[2716]! } - public var Map_OpenInYandexMaps: String { return self._s[2718]! } - public var CreateGroup_ErrorLocatedGroupsTooMuch: String { return self._s[2719]! } - public var PhotoEditor_SaturationTool: String { return self._s[2720]! } + public var AuthSessions_IncompleteAttempts: String { return self._s[2693]! } + public var Passport_Address_Region: String { return self._s[2696]! } + public var ChatList_DeleteChat: String { return self._s[2697]! } + public var LogoutOptions_ClearCacheTitle: String { return self._s[2698]! } + public var PhotoEditor_TiltShift: String { return self._s[2699]! } + public var Settings_FAQ_URL: String { return self._s[2700]! } + public var Passport_Language_sl: String { return self._s[2701]! } + public var Settings_PrivacySettings: String { return self._s[2703]! } + public var SharedMedia_TitleLink: String { return self._s[2704]! } + public var Passport_Identity_TypePassportUploadScan: String { return self._s[2705]! } + public var Settings_SetProfilePhoto: String { return self._s[2706]! } + public var Channel_About_Help: String { return self._s[2707]! } + public var Contacts_PermissionsEnable: String { return self._s[2708]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[2709]! } + public var AttachmentMenu_SendAsFiles: String { return self._s[2710]! } + public var CallFeedback_ReasonInterruption: String { return self._s[2712]! } + public var Passport_Address_AddTemporaryRegistration: String { return self._s[2713]! } + public var AutoDownloadSettings_AutodownloadVideos: String { return self._s[2714]! } + public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[2715]! } + public var PrivacySettings_DeleteAccountTitle: String { return self._s[2716]! } + public var AccessDenied_VideoMessageCamera: String { return self._s[2718]! } + public var Map_OpenInYandexMaps: String { return self._s[2720]! } + public var CreateGroup_ErrorLocatedGroupsTooMuch: String { return self._s[2721]! } + public var PhotoEditor_SaturationTool: String { return self._s[2722]! } public func PUSH_MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2721]!, self._r[2721]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2723]!, self._r[2723]!, [_1, _2]) } - public var PrivacyPhoneNumberSettings_CustomHelp: String { return self._s[2722]! } - public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[2723]! } - public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[2724]! } - public var Appearance_TextSize: String { return self._s[2725]! } + public var PrivacyPhoneNumberSettings_CustomHelp: String { return self._s[2724]! } + public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[2725]! } + public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[2726]! } + public var Appearance_TextSize: String { return self._s[2727]! } public func LOCAL_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2726]!, self._r[2726]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[2728]!, self._r[2728]!, [_1, "\(_2)"]) } - public var Channel_Username_InvalidTooShort: String { return self._s[2728]! } + public var Channel_Username_InvalidTooShort: String { return self._s[2730]! } public func Group_OwnershipTransfer_DescriptionInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2729]!, self._r[2729]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2731]!, self._r[2731]!, [_1, _2]) } public func PUSH_CHAT_MESSAGE_GAME(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2730]!, self._r[2730]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2732]!, self._r[2732]!, [_1, _2, _3]) } - public var GroupInfo_PublicLinkAdd: String { return self._s[2731]! } - public var Passport_PassportInformation: String { return self._s[2734]! } - public var WatchRemote_AlertTitle: String { return self._s[2735]! } - public var Privacy_GroupsAndChannels_NeverAllow: String { return self._s[2736]! } - public var ConvertToSupergroup_HelpText: String { return self._s[2738]! } + public var GroupInfo_PublicLinkAdd: String { return self._s[2733]! } + public var Passport_PassportInformation: String { return self._s[2736]! } + public var WatchRemote_AlertTitle: String { return self._s[2737]! } + public var Privacy_GroupsAndChannels_NeverAllow: String { return self._s[2738]! } + public var ConvertToSupergroup_HelpText: String { return self._s[2740]! } public func Time_MonthOfYear_m7(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2739]!, self._r[2739]!, [_0]) + return formatWithArgumentRanges(self._s[2741]!, self._r[2741]!, [_0]) } public func PUSH_PHONE_CALL_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2740]!, self._r[2740]!, [_1]) + return formatWithArgumentRanges(self._s[2742]!, self._r[2742]!, [_1]) } - public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[2741]! } - public var TwoStepAuth_RecoveryCodeInvalid: String { return self._s[2743]! } - public var AccessDenied_CameraDisabled: String { return self._s[2744]! } + public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[2743]! } + public var TwoStepAuth_RecoveryCodeInvalid: String { return self._s[2745]! } + public var AccessDenied_CameraDisabled: String { return self._s[2746]! } public func Channel_Username_UsernameIsAvailable(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2745]!, self._r[2745]!, [_0]) + return formatWithArgumentRanges(self._s[2747]!, self._r[2747]!, [_0]) } - public var PhotoEditor_ContrastTool: String { return self._s[2748]! } + public var PhotoEditor_ContrastTool: String { return self._s[2750]! } public func PUSH_PINNED_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2749]!, self._r[2749]!, [_1]) + return formatWithArgumentRanges(self._s[2751]!, self._r[2751]!, [_1]) } - public var DialogList_Draft: String { return self._s[2750]! } - public var Privacy_TopPeersDelete: String { return self._s[2752]! } - public var LoginPassword_PasswordPlaceholder: String { return self._s[2753]! } - public var Passport_Identity_TypeIdentityCardUploadScan: String { return self._s[2754]! } - public var WebSearch_RecentSectionClear: String { return self._s[2755]! } - public var Watch_ChatList_NoConversationsTitle: String { return self._s[2757]! } - public var Common_Done: String { return self._s[2759]! } - public var AuthSessions_EmptyText: String { return self._s[2760]! } - public var Conversation_ShareBotContactConfirmation: String { return self._s[2761]! } - public var Tour_Title5: String { return self._s[2762]! } + public var DialogList_Draft: String { return self._s[2752]! } + public var Privacy_TopPeersDelete: String { return self._s[2754]! } + public var LoginPassword_PasswordPlaceholder: String { return self._s[2755]! } + public var Passport_Identity_TypeIdentityCardUploadScan: String { return self._s[2756]! } + public var WebSearch_RecentSectionClear: String { return self._s[2757]! } + public var Watch_ChatList_NoConversationsTitle: String { return self._s[2759]! } + public var Common_Done: String { return self._s[2761]! } + public var AuthSessions_EmptyText: String { return self._s[2762]! } + public var Conversation_ShareBotContactConfirmation: String { return self._s[2763]! } + public var Tour_Title5: String { return self._s[2764]! } public func Map_DirectionsDriveEta(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2763]!, self._r[2763]!, [_0]) + return formatWithArgumentRanges(self._s[2765]!, self._r[2765]!, [_0]) } - public var ApplyLanguage_UnsufficientDataTitle: String { return self._s[2764]! } - public var Conversation_LinkDialogSave: String { return self._s[2765]! } - public var GroupInfo_ActionRestrict: String { return self._s[2766]! } - public var Checkout_Title: String { return self._s[2767]! } - public var Channel_DiscussionGroup_HeaderLabel: String { return self._s[2769]! } - public var Channel_AdminLog_CanChangeInfo: String { return self._s[2771]! } - public var Notification_RenamedGroup: String { return self._s[2772]! } - public var PeopleNearby_Groups: String { return self._s[2773]! } - public var Checkout_PayWithFaceId: String { return self._s[2774]! } - public var Channel_BanList_BlockedTitle: String { return self._s[2775]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsSound: String { return self._s[2777]! } - public var Checkout_WebConfirmation_Title: String { return self._s[2778]! } - public var Notifications_MessageNotificationsAlert: String { return self._s[2779]! } + public var ApplyLanguage_UnsufficientDataTitle: String { return self._s[2766]! } + public var Conversation_LinkDialogSave: String { return self._s[2767]! } + public var GroupInfo_ActionRestrict: String { return self._s[2768]! } + public var Checkout_Title: String { return self._s[2769]! } + public var Channel_DiscussionGroup_HeaderLabel: String { return self._s[2771]! } + public var Channel_AdminLog_CanChangeInfo: String { return self._s[2773]! } + public var Notification_RenamedGroup: String { return self._s[2774]! } + public var PeopleNearby_Groups: String { return self._s[2775]! } + public var Checkout_PayWithFaceId: String { return self._s[2776]! } + public var Channel_BanList_BlockedTitle: String { return self._s[2777]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsSound: String { return self._s[2779]! } + public var Checkout_WebConfirmation_Title: String { return self._s[2780]! } + public var Notifications_MessageNotificationsAlert: String { return self._s[2781]! } public func Activity_RemindAboutGroup(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2780]!, self._r[2780]!, [_0]) + return formatWithArgumentRanges(self._s[2782]!, self._r[2782]!, [_0]) } - public var Profile_AddToExisting: String { return self._s[2782]! } + public var Profile_AddToExisting: String { return self._s[2784]! } public func Profile_CreateEncryptedChatOutdatedError(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2783]!, self._r[2783]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2785]!, self._r[2785]!, [_0, _1]) } - public var Cache_Files: String { return self._s[2785]! } - public var Permissions_PrivacyPolicy: String { return self._s[2786]! } - public var SocksProxySetup_ConnectAndSave: String { return self._s[2787]! } - public var UserInfo_NotificationsDefaultDisabled: String { return self._s[2788]! } - public var AutoDownloadSettings_TypeContacts: String { return self._s[2790]! } - public var Calls_NoCallsPlaceholder: String { return self._s[2792]! } - public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[2793]! } - public var Notifications_ExceptionsGroupPlaceholder: String { return self._s[2795]! } + public var Cache_Files: String { return self._s[2787]! } + public var Permissions_PrivacyPolicy: String { return self._s[2788]! } + public var SocksProxySetup_ConnectAndSave: String { return self._s[2789]! } + public var UserInfo_NotificationsDefaultDisabled: String { return self._s[2790]! } + public var AutoDownloadSettings_TypeContacts: String { return self._s[2792]! } + public var Calls_NoCallsPlaceholder: String { return self._s[2794]! } + public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[2795]! } + public var Notifications_ExceptionsGroupPlaceholder: String { return self._s[2797]! } public func PUSH_CHAT_MESSAGE_INVOICE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2796]!, self._r[2796]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2798]!, self._r[2798]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsSound: String { return self._s[2797]! } - public var Passport_FieldAddressHelp: String { return self._s[2798]! } - public var Privacy_GroupsAndChannels_InviteToChannelMultipleError: String { return self._s[2799]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsSound: String { return self._s[2799]! } + public var Passport_FieldAddressHelp: String { return self._s[2800]! } + public var Privacy_GroupsAndChannels_InviteToChannelMultipleError: String { return self._s[2801]! } public func Login_TermsOfService_ProceedBot(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2800]!, self._r[2800]!, [_0]) + return formatWithArgumentRanges(self._s[2802]!, self._r[2802]!, [_0]) } - public var Channel_AdminLog_EmptyTitle: String { return self._s[2801]! } - public var Privacy_Calls_NeverAllow_Title: String { return self._s[2803]! } - public var Login_UnknownError: String { return self._s[2804]! } - public var Group_UpgradeNoticeText2: String { return self._s[2806]! } - public var Watch_Compose_AddContact: String { return self._s[2807]! } - public var Web_Error: String { return self._s[2808]! } - public var Gif_Search: String { return self._s[2809]! } - public var Profile_MessageLifetime1h: String { return self._s[2810]! } - public var CheckoutInfo_ReceiverInfoEmailPlaceholder: String { return self._s[2811]! } - public var Channel_Username_CheckingUsername: String { return self._s[2812]! } - public var CallFeedback_ReasonSilentRemote: String { return self._s[2813]! } - public var AutoDownloadSettings_TypeChannels: String { return self._s[2814]! } - public var Channel_AboutItem: String { return self._s[2815]! } - public var Privacy_GroupsAndChannels_AlwaysAllow_Placeholder: String { return self._s[2817]! } - public var GroupInfo_SharedMedia: String { return self._s[2818]! } + public var Channel_AdminLog_EmptyTitle: String { return self._s[2803]! } + public var Privacy_Calls_NeverAllow_Title: String { return self._s[2805]! } + public var Login_UnknownError: String { return self._s[2806]! } + public var Group_UpgradeNoticeText2: String { return self._s[2808]! } + public var Watch_Compose_AddContact: String { return self._s[2809]! } + public var Web_Error: String { return self._s[2810]! } + public var Gif_Search: String { return self._s[2811]! } + public var Profile_MessageLifetime1h: String { return self._s[2812]! } + public var CheckoutInfo_ReceiverInfoEmailPlaceholder: String { return self._s[2813]! } + public var Channel_Username_CheckingUsername: String { return self._s[2814]! } + public var CallFeedback_ReasonSilentRemote: String { return self._s[2815]! } + public var AutoDownloadSettings_TypeChannels: String { return self._s[2816]! } + public var Channel_AboutItem: String { return self._s[2817]! } + public var Privacy_GroupsAndChannels_AlwaysAllow_Placeholder: String { return self._s[2819]! } + public var GroupInfo_SharedMedia: String { return self._s[2820]! } public func Channel_AdminLog_MessagePromotedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2819]!, self._r[2819]!, [_1]) - } - public var Call_PhoneCallInProgressMessage: String { return self._s[2820]! } - public func PUSH_CHANNEL_ALBUM(_ _1: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2821]!, self._r[2821]!, [_1]) } - public var ChatList_UndoArchiveRevealedText: String { return self._s[2822]! } - public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[2823]! } - public var Conversation_SearchByName_Placeholder: String { return self._s[2824]! } - public var CreatePoll_AddOption: String { return self._s[2825]! } - public var GroupInfo_Permissions_SearchPlaceholder: String { return self._s[2826]! } - public var Group_UpgradeNoticeHeader: String { return self._s[2827]! } - public var Channel_Management_AddModerator: String { return self._s[2828]! } - public var AutoDownloadSettings_MaxFileSize: String { return self._s[2829]! } - public var StickerPacksSettings_ShowStickersButton: String { return self._s[2830]! } - public var NotificationsSound_Hello: String { return self._s[2831]! } - public var SocksProxySetup_SavedProxies: String { return self._s[2832]! } - public var Channel_Stickers_Placeholder: String { return self._s[2834]! } + public var Call_PhoneCallInProgressMessage: String { return self._s[2822]! } + public func PUSH_CHANNEL_ALBUM(_ _1: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2823]!, self._r[2823]!, [_1]) + } + public var ChatList_UndoArchiveRevealedText: String { return self._s[2824]! } + public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[2825]! } + public var Conversation_SearchByName_Placeholder: String { return self._s[2826]! } + public var CreatePoll_AddOption: String { return self._s[2827]! } + public var GroupInfo_Permissions_SearchPlaceholder: String { return self._s[2828]! } + public var Group_UpgradeNoticeHeader: String { return self._s[2829]! } + public var Channel_Management_AddModerator: String { return self._s[2830]! } + public var AutoDownloadSettings_MaxFileSize: String { return self._s[2831]! } + public var StickerPacksSettings_ShowStickersButton: String { return self._s[2832]! } + public var NotificationsSound_Hello: String { return self._s[2833]! } + public var SocksProxySetup_SavedProxies: String { return self._s[2834]! } + public var Channel_Stickers_Placeholder: String { return self._s[2836]! } public func Login_EmailCodeBody(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2835]!, self._r[2835]!, [_0]) + return formatWithArgumentRanges(self._s[2837]!, self._r[2837]!, [_0]) } - public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[2836]! } - public var Channel_Management_AddModeratorHelp: String { return self._s[2837]! } - public var ContactInfo_BirthdayLabel: String { return self._s[2838]! } - public var ChangePhoneNumberCode_RequestingACall: String { return self._s[2839]! } - public var AutoDownloadSettings_Channels: String { return self._s[2840]! } - public var Passport_Language_mn: String { return self._s[2841]! } - public var Notifications_ResetAllNotificationsHelp: String { return self._s[2844]! } - public var Passport_Language_ja: String { return self._s[2846]! } - public var Settings_About_Title: String { return self._s[2847]! } - public var Settings_NotificationsAndSounds: String { return self._s[2848]! } - public var ChannelInfo_DeleteGroup: String { return self._s[2849]! } - public var Settings_BlockedUsers: String { return self._s[2850]! } + public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[2838]! } + public var Channel_Management_AddModeratorHelp: String { return self._s[2839]! } + public var ContactInfo_BirthdayLabel: String { return self._s[2840]! } + public var ChangePhoneNumberCode_RequestingACall: String { return self._s[2841]! } + public var AutoDownloadSettings_Channels: String { return self._s[2842]! } + public var Passport_Language_mn: String { return self._s[2843]! } + public var Notifications_ResetAllNotificationsHelp: String { return self._s[2846]! } + public var Passport_Language_ja: String { return self._s[2848]! } + public var Settings_About_Title: String { return self._s[2849]! } + public var Settings_NotificationsAndSounds: String { return self._s[2850]! } + public var ChannelInfo_DeleteGroup: String { return self._s[2851]! } + public var Settings_BlockedUsers: String { return self._s[2852]! } public func Time_MonthOfYear_m4(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2851]!, self._r[2851]!, [_0]) + return formatWithArgumentRanges(self._s[2853]!, self._r[2853]!, [_0]) } - public var AutoDownloadSettings_PreloadVideo: String { return self._s[2852]! } - public var Passport_Address_AddResidentialAddress: String { return self._s[2853]! } - public var Channel_Username_Title: String { return self._s[2854]! } + public var AutoDownloadSettings_PreloadVideo: String { return self._s[2854]! } + public var Passport_Address_AddResidentialAddress: String { return self._s[2855]! } + public var Channel_Username_Title: String { return self._s[2856]! } public func Notification_RemovedGroupPhoto(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2855]!, self._r[2855]!, [_0]) + return formatWithArgumentRanges(self._s[2857]!, self._r[2857]!, [_0]) } - public var AttachmentMenu_File: String { return self._s[2857]! } - public var AppleWatch_Title: String { return self._s[2858]! } - public var Activity_RecordingVideoMessage: String { return self._s[2859]! } + public var AttachmentMenu_File: String { return self._s[2859]! } + public var AppleWatch_Title: String { return self._s[2860]! } + public var Activity_RecordingVideoMessage: String { return self._s[2861]! } public func Channel_DiscussionGroup_PublicChannelLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2860]!, self._r[2860]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2862]!, self._r[2862]!, [_1, _2]) } - public var Weekday_Saturday: String { return self._s[2861]! } - public var WallpaperPreview_SwipeColorsTopText: String { return self._s[2862]! } - public var Profile_CreateEncryptedChatError: String { return self._s[2863]! } - public var Common_Next: String { return self._s[2865]! } - public var Channel_Stickers_YourStickers: String { return self._s[2867]! } - public var Call_AudioRouteHeadphones: String { return self._s[2868]! } - public var TwoStepAuth_EnterPasswordForgot: String { return self._s[2870]! } - public var Watch_Contacts_NoResults: String { return self._s[2872]! } - public var PhotoEditor_TintTool: String { return self._s[2875]! } - public var LoginPassword_ResetAccount: String { return self._s[2877]! } - public var Settings_SavedMessages: String { return self._s[2878]! } - public var SettingsSearch_Synonyms_Appearance_Animations: String { return self._s[2879]! } - public var Bot_GenericSupportStatus: String { return self._s[2880]! } - public var StickerPack_Add: String { return self._s[2881]! } - public var Checkout_TotalAmount: String { return self._s[2882]! } - public var Your_cards_number_is_invalid: String { return self._s[2883]! } - public var SettingsSearch_Synonyms_Appearance_AutoNightTheme: String { return self._s[2884]! } + public var Weekday_Saturday: String { return self._s[2863]! } + public var WallpaperPreview_SwipeColorsTopText: String { return self._s[2864]! } + public var Profile_CreateEncryptedChatError: String { return self._s[2865]! } + public var Common_Next: String { return self._s[2867]! } + public var Channel_Stickers_YourStickers: String { return self._s[2869]! } + public var Call_AudioRouteHeadphones: String { return self._s[2870]! } + public var TwoStepAuth_EnterPasswordForgot: String { return self._s[2872]! } + public var Watch_Contacts_NoResults: String { return self._s[2874]! } + public var PhotoEditor_TintTool: String { return self._s[2877]! } + public var LoginPassword_ResetAccount: String { return self._s[2879]! } + public var Settings_SavedMessages: String { return self._s[2880]! } + public var SettingsSearch_Synonyms_Appearance_Animations: String { return self._s[2881]! } + public var Bot_GenericSupportStatus: String { return self._s[2882]! } + public var StickerPack_Add: String { return self._s[2883]! } + public var Checkout_TotalAmount: String { return self._s[2884]! } + public var Your_cards_number_is_invalid: String { return self._s[2885]! } + public var SettingsSearch_Synonyms_Appearance_AutoNightTheme: String { return self._s[2886]! } public func ChangePhoneNumberCode_CallTimer(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2885]!, self._r[2885]!, [_0]) + return formatWithArgumentRanges(self._s[2887]!, self._r[2887]!, [_0]) } public func GroupPermission_AddedInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2886]!, self._r[2886]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2888]!, self._r[2888]!, [_1, _2]) } - public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[2887]! } + public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[2889]! } public func PUSH_CHAT_PHOTO_EDITED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2889]!, self._r[2889]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2891]!, self._r[2891]!, [_1, _2]) } public func Conversation_RestrictedTextTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2890]!, self._r[2890]!, [_0]) + return formatWithArgumentRanges(self._s[2892]!, self._r[2892]!, [_0]) } - public var GroupInfo_InviteLink_ShareLink: String { return self._s[2891]! } - public var StickerPack_Share: String { return self._s[2892]! } - public var Passport_DeleteAddress: String { return self._s[2893]! } - public var Settings_Passport: String { return self._s[2894]! } - public var SharedMedia_EmptyFilesText: String { return self._s[2895]! } - public var Conversation_DeleteMessagesForMe: String { return self._s[2896]! } - public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[2897]! } - public var Contacts_PermissionsText: String { return self._s[2898]! } - public var Group_Setup_HistoryVisible: String { return self._s[2899]! } - public var Passport_Address_AddRentalAgreement: String { return self._s[2901]! } - public var SocksProxySetup_Title: String { return self._s[2902]! } - public var Notification_Mute1h: String { return self._s[2903]! } + public var GroupInfo_InviteLink_ShareLink: String { return self._s[2893]! } + public var StickerPack_Share: String { return self._s[2894]! } + public var Passport_DeleteAddress: String { return self._s[2895]! } + public var Settings_Passport: String { return self._s[2896]! } + public var SharedMedia_EmptyFilesText: String { return self._s[2897]! } + public var Conversation_DeleteMessagesForMe: String { return self._s[2898]! } + public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[2899]! } + public var Contacts_PermissionsText: String { return self._s[2900]! } + public var Group_Setup_HistoryVisible: String { return self._s[2901]! } + public var Passport_Address_AddRentalAgreement: String { return self._s[2903]! } + public var SocksProxySetup_Title: String { return self._s[2904]! } + public var Notification_Mute1h: String { return self._s[2905]! } public func Passport_Email_CodeHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2904]!, self._r[2904]!, [_0]) + return formatWithArgumentRanges(self._s[2906]!, self._r[2906]!, [_0]) } - public var NotificationSettings_ShowNotificationsAllAccountsInfoOff: String { return self._s[2905]! } + public var NotificationSettings_ShowNotificationsAllAccountsInfoOff: String { return self._s[2907]! } public func PUSH_PINNED_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2906]!, self._r[2906]!, [_1]) + return formatWithArgumentRanges(self._s[2908]!, self._r[2908]!, [_1]) } - public var FastTwoStepSetup_PasswordSection: String { return self._s[2907]! } - public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[2910]! } - public var InfoPlist_NSFaceIDUsageDescription: String { return self._s[2912]! } - public var DialogList_NoMessagesText: String { return self._s[2913]! } - public var Privacy_ContactsResetConfirmation: String { return self._s[2914]! } - public var Privacy_Calls_P2PHelp: String { return self._s[2915]! } - public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[2917]! } - public var Your_cards_expiration_year_is_invalid: String { return self._s[2918]! } - public var Common_TakePhotoOrVideo: String { return self._s[2919]! } - public var Call_StatusBusy: String { return self._s[2920]! } - public var Conversation_PinnedMessage: String { return self._s[2921]! } - public var AutoDownloadSettings_VoiceMessagesTitle: String { return self._s[2922]! } - public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[2923]! } - public var Undo_ChatCleared: String { return self._s[2924]! } - public var AppleWatch_ReplyPresets: String { return self._s[2925]! } - public var Passport_DiscardMessageDescription: String { return self._s[2927]! } - public var Login_NetworkError: String { return self._s[2928]! } + public var FastTwoStepSetup_PasswordSection: String { return self._s[2909]! } + public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[2912]! } + public var InfoPlist_NSFaceIDUsageDescription: String { return self._s[2914]! } + public var DialogList_NoMessagesText: String { return self._s[2915]! } + public var Privacy_ContactsResetConfirmation: String { return self._s[2916]! } + public var Privacy_Calls_P2PHelp: String { return self._s[2917]! } + public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[2919]! } + public var Your_cards_expiration_year_is_invalid: String { return self._s[2920]! } + public var Common_TakePhotoOrVideo: String { return self._s[2921]! } + public var Call_StatusBusy: String { return self._s[2922]! } + public var Conversation_PinnedMessage: String { return self._s[2923]! } + public var AutoDownloadSettings_VoiceMessagesTitle: String { return self._s[2924]! } + public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[2925]! } + public var Undo_ChatCleared: String { return self._s[2926]! } + public var AppleWatch_ReplyPresets: String { return self._s[2927]! } + public var Passport_DiscardMessageDescription: String { return self._s[2929]! } + public var Login_NetworkError: String { return self._s[2930]! } public func Notification_PinnedRoundMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2929]!, self._r[2929]!, [_0]) + return formatWithArgumentRanges(self._s[2931]!, self._r[2931]!, [_0]) } public func Channel_AdminLog_MessageRemovedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2930]!, self._r[2930]!, [_0]) + return formatWithArgumentRanges(self._s[2932]!, self._r[2932]!, [_0]) } - public var SocksProxySetup_PasswordPlaceholder: String { return self._s[2931]! } - public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[2933]! } + public var SocksProxySetup_PasswordPlaceholder: String { return self._s[2933]! } + public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[2935]! } public func Watch_LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2935]!, self._r[2935]!, [_0]) + return formatWithArgumentRanges(self._s[2937]!, self._r[2937]!, [_0]) } - public var Call_ConnectionErrorMessage: String { return self._s[2936]! } - public var SettingsSearch_Synonyms_Notifications_MessageNotificationsSound: String { return self._s[2937]! } - public var Compose_GroupTokenListPlaceholder: String { return self._s[2939]! } - public var ConversationMedia_Title: String { return self._s[2940]! } - public var EncryptionKey_Title: String { return self._s[2942]! } - public var TwoStepAuth_EnterPasswordTitle: String { return self._s[2943]! } - public var Notification_Exceptions_AddException: String { return self._s[2944]! } - public var PrivacySettings_BlockedPeersEmpty: String { return self._s[2945]! } - public var Profile_MessageLifetime1m: String { return self._s[2946]! } + public var Call_ConnectionErrorMessage: String { return self._s[2938]! } + public var SettingsSearch_Synonyms_Notifications_MessageNotificationsSound: String { return self._s[2939]! } + public var Compose_GroupTokenListPlaceholder: String { return self._s[2941]! } + public var ConversationMedia_Title: String { return self._s[2942]! } + public var EncryptionKey_Title: String { return self._s[2944]! } + public var TwoStepAuth_EnterPasswordTitle: String { return self._s[2945]! } + public var Notification_Exceptions_AddException: String { return self._s[2946]! } + public var PrivacySettings_BlockedPeersEmpty: String { return self._s[2947]! } + public var Profile_MessageLifetime1m: String { return self._s[2948]! } public func Channel_AdminLog_MessageUnkickedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2947]!, self._r[2947]!, [_1]) + return formatWithArgumentRanges(self._s[2949]!, self._r[2949]!, [_1]) } - public var Month_GenMay: String { return self._s[2948]! } + public var Month_GenMay: String { return self._s[2950]! } public func LiveLocationUpdated_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2949]!, self._r[2949]!, [_0]) + return formatWithArgumentRanges(self._s[2951]!, self._r[2951]!, [_0]) } - public var PeopleNearby_Users: String { return self._s[2950]! } - public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[2951]! } - public var AutoDownloadSettings_ResetSettings: String { return self._s[2952]! } - public var Conversation_EmptyPlaceholder: String { return self._s[2954]! } - public var Passport_Address_AddPassportRegistration: String { return self._s[2955]! } - public var Notifications_ChannelNotificationsAlert: String { return self._s[2956]! } - public var ChatSettings_AutoDownloadUsingCellular: String { return self._s[2957]! } - public var Camera_TapAndHoldForVideo: String { return self._s[2958]! } - public var Channel_JoinChannel: String { return self._s[2960]! } - public var Appearance_Animations: String { return self._s[2963]! } + public var PeopleNearby_Users: String { return self._s[2952]! } + public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[2953]! } + public var AutoDownloadSettings_ResetSettings: String { return self._s[2954]! } + public var Conversation_EmptyPlaceholder: String { return self._s[2956]! } + public var Passport_Address_AddPassportRegistration: String { return self._s[2957]! } + public var Notifications_ChannelNotificationsAlert: String { return self._s[2958]! } + public var ChatSettings_AutoDownloadUsingCellular: String { return self._s[2959]! } + public var Camera_TapAndHoldForVideo: String { return self._s[2960]! } + public var Channel_JoinChannel: String { return self._s[2962]! } + public var Appearance_Animations: String { return self._s[2965]! } public func Notification_MessageLifetimeChanged(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2964]!, self._r[2964]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2966]!, self._r[2966]!, [_1, _2]) } - public var Stickers_GroupStickers: String { return self._s[2966]! } - public var ConvertToSupergroup_HelpTitle: String { return self._s[2968]! } - public var Passport_Address_Street: String { return self._s[2969]! } - public var Conversation_AddContact: String { return self._s[2970]! } - public var Login_PhonePlaceholder: String { return self._s[2971]! } - public var Channel_Members_InviteLink: String { return self._s[2973]! } - public var Bot_Stop: String { return self._s[2974]! } - public var SettingsSearch_Synonyms_Proxy_UseForCalls: String { return self._s[2976]! } - public var Notification_PassportValueAddress: String { return self._s[2977]! } - public var Month_ShortJuly: String { return self._s[2978]! } - public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[2979]! } - public var Channel_AdminLog_BanSendMedia: String { return self._s[2980]! } - public var Passport_Identity_ReverseSide: String { return self._s[2981]! } - public var Watch_Stickers_Recents: String { return self._s[2984]! } - public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[2986]! } - public var Map_SendThisLocation: String { return self._s[2987]! } + public var Stickers_GroupStickers: String { return self._s[2968]! } + public var ConvertToSupergroup_HelpTitle: String { return self._s[2970]! } + public var Passport_Address_Street: String { return self._s[2971]! } + public var Conversation_AddContact: String { return self._s[2972]! } + public var Login_PhonePlaceholder: String { return self._s[2973]! } + public var Channel_Members_InviteLink: String { return self._s[2975]! } + public var Bot_Stop: String { return self._s[2976]! } + public var SettingsSearch_Synonyms_Proxy_UseForCalls: String { return self._s[2978]! } + public var Notification_PassportValueAddress: String { return self._s[2979]! } + public var Month_ShortJuly: String { return self._s[2980]! } + public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[2981]! } + public var Channel_AdminLog_BanSendMedia: String { return self._s[2982]! } + public var Passport_Identity_ReverseSide: String { return self._s[2983]! } + public var Watch_Stickers_Recents: String { return self._s[2986]! } + public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[2988]! } + public var Map_SendThisLocation: String { return self._s[2989]! } public func Time_MonthOfYear_m1(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2988]!, self._r[2988]!, [_0]) + return formatWithArgumentRanges(self._s[2990]!, self._r[2990]!, [_0]) } public func InviteText_SingleContact(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2989]!, self._r[2989]!, [_0]) - } - public var ConvertToSupergroup_Note: String { return self._s[2990]! } - public func FileSize_MB(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[2991]!, self._r[2991]!, [_0]) } - public var NetworkUsageSettings_GeneralDataSection: String { return self._s[2992]! } + public var ConvertToSupergroup_Note: String { return self._s[2992]! } + public func FileSize_MB(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[2993]!, self._r[2993]!, [_0]) + } + public var NetworkUsageSettings_GeneralDataSection: String { return self._s[2994]! } public func Compatibility_SecretMediaVersionTooLow(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2993]!, self._r[2993]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2995]!, self._r[2995]!, [_0, _1]) } - public var Login_CallRequestState3: String { return self._s[2995]! } - public var Wallpaper_SearchShort: String { return self._s[2996]! } - public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[2998]! } - public var PasscodeSettings_UnlockWithFaceId: String { return self._s[2999]! } - public var Channel_BotDoesntSupportGroups: String { return self._s[3000]! } + public var Login_CallRequestState3: String { return self._s[2997]! } + public var Wallpaper_SearchShort: String { return self._s[2998]! } + public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[3000]! } + public var PasscodeSettings_UnlockWithFaceId: String { return self._s[3001]! } + public var Channel_BotDoesntSupportGroups: String { return self._s[3002]! } public func PUSH_CHAT_MESSAGE_GEOLIVE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3001]!, self._r[3001]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3003]!, self._r[3003]!, [_1, _2]) } - public var Channel_AdminLogFilter_Title: String { return self._s[3002]! } - public var Notifications_GroupNotificationsExceptions: String { return self._s[3006]! } + public var Channel_AdminLogFilter_Title: String { return self._s[3004]! } + public var Notifications_GroupNotificationsExceptions: String { return self._s[3008]! } public func FileSize_B(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3007]!, self._r[3007]!, [_0]) - } - public var Passport_CorrectErrors: String { return self._s[3008]! } - public func Channel_MessageTitleUpdated(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3009]!, self._r[3009]!, [_0]) } - public var Map_SendMyCurrentLocation: String { return self._s[3010]! } - public var Channel_DiscussionGroup: String { return self._s[3011]! } + public var Passport_CorrectErrors: String { return self._s[3010]! } + public func Channel_MessageTitleUpdated(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3011]!, self._r[3011]!, [_0]) + } + public var Map_SendMyCurrentLocation: String { return self._s[3012]! } + public var Channel_DiscussionGroup: String { return self._s[3013]! } public func PUSH_PINNED_CONTACT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3012]!, self._r[3012]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3014]!, self._r[3014]!, [_1, _2]) } - public var SharedMedia_SearchNoResults: String { return self._s[3013]! } - public var Permissions_NotificationsText_v0: String { return self._s[3014]! } - public var Appearance_AppIcon: String { return self._s[3015]! } - public var LoginPassword_FloodError: String { return self._s[3016]! } - public var Group_Setup_HistoryHiddenHelp: String { return self._s[3018]! } + public var SharedMedia_SearchNoResults: String { return self._s[3015]! } + public var Permissions_NotificationsText_v0: String { return self._s[3016]! } + public var Appearance_AppIcon: String { return self._s[3017]! } + public var LoginPassword_FloodError: String { return self._s[3018]! } + public var Group_Setup_HistoryHiddenHelp: String { return self._s[3020]! } public func TwoStepAuth_PendingEmailHelp(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3019]!, self._r[3019]!, [_0]) - } - public var Passport_Language_bn: String { return self._s[3020]! } - public func DialogList_SingleUploadingPhotoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3021]!, self._r[3021]!, [_0]) } - public func Notification_PinnedAudioMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3022]!, self._r[3022]!, [_0]) - } - public func Channel_AdminLog_MessageChangedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { + public var Passport_Language_bn: String { return self._s[3022]! } + public func DialogList_SingleUploadingPhotoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3023]!, self._r[3023]!, [_0]) } - public var GroupInfo_InvitationLinkGroupFull: String { return self._s[3026]! } - public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[3028]! } - public var Contacts_PermissionsAllow: String { return self._s[3029]! } - public var ReportPeer_ReasonCopyright: String { return self._s[3030]! } - public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[3031]! } - public var WallpaperPreview_Pattern: String { return self._s[3032]! } - public var Paint_Duplicate: String { return self._s[3033]! } - public var Passport_Address_Country: String { return self._s[3034]! } - public var Notification_RenamedChannel: String { return self._s[3036]! } - public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[3037]! } - public var Group_MessagePhotoUpdated: String { return self._s[3038]! } - public var Channel_BanUser_PermissionSendMedia: String { return self._s[3039]! } - public var Conversation_ContextMenuBan: String { return self._s[3040]! } - public var TwoStepAuth_EmailSent: String { return self._s[3041]! } - public var MessagePoll_NoVotes: String { return self._s[3042]! } - public var Passport_Language_is: String { return self._s[3043]! } - public var PeopleNearby_UsersEmpty: String { return self._s[3045]! } - public var Tour_Text5: String { return self._s[3046]! } + public func Notification_PinnedAudioMessage(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3024]!, self._r[3024]!, [_0]) + } + public func Channel_AdminLog_MessageChangedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3025]!, self._r[3025]!, [_0]) + } + public var GroupInfo_InvitationLinkGroupFull: String { return self._s[3028]! } + public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[3030]! } + public var Contacts_PermissionsAllow: String { return self._s[3031]! } + public var ReportPeer_ReasonCopyright: String { return self._s[3032]! } + public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[3033]! } + public var WallpaperPreview_Pattern: String { return self._s[3034]! } + public var Paint_Duplicate: String { return self._s[3035]! } + public var Passport_Address_Country: String { return self._s[3036]! } + public var Notification_RenamedChannel: String { return self._s[3038]! } + public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[3039]! } + public var Group_MessagePhotoUpdated: String { return self._s[3040]! } + public var Channel_BanUser_PermissionSendMedia: String { return self._s[3041]! } + public var Conversation_ContextMenuBan: String { return self._s[3042]! } + public var TwoStepAuth_EmailSent: String { return self._s[3043]! } + public var MessagePoll_NoVotes: String { return self._s[3044]! } + public var Passport_Language_is: String { return self._s[3045]! } + public var PeopleNearby_UsersEmpty: String { return self._s[3047]! } + public var Tour_Text5: String { return self._s[3048]! } public func Call_GroupFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3048]!, self._r[3048]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3050]!, self._r[3050]!, [_1, _2]) } - public var Undo_SecretChatDeleted: String { return self._s[3049]! } - public var SocksProxySetup_ShareQRCode: String { return self._s[3050]! } - public var LogoutOptions_ChangePhoneNumberText: String { return self._s[3051]! } - public var Paint_Edit: String { return self._s[3053]! } - public var Undo_DeletedGroup: String { return self._s[3056]! } - public var LoginPassword_ForgotPassword: String { return self._s[3057]! } - public var GroupInfo_GroupNamePlaceholder: String { return self._s[3058]! } + public var Undo_SecretChatDeleted: String { return self._s[3051]! } + public var SocksProxySetup_ShareQRCode: String { return self._s[3052]! } + public var LogoutOptions_ChangePhoneNumberText: String { return self._s[3053]! } + public var Paint_Edit: String { return self._s[3055]! } + public var Undo_DeletedGroup: String { return self._s[3058]! } + public var LoginPassword_ForgotPassword: String { return self._s[3059]! } + public var GroupInfo_GroupNamePlaceholder: String { return self._s[3060]! } public func Notification_Kicked(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3059]!, self._r[3059]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3061]!, self._r[3061]!, [_0, _1]) } - public var Conversation_InputTextCaptionPlaceholder: String { return self._s[3060]! } - public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3061]! } - public var Passport_Language_uz: String { return self._s[3062]! } - public var Conversation_PinMessageAlertGroup: String { return self._s[3063]! } - public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[3064]! } - public var Map_StopLiveLocation: String { return self._s[3066]! } - public var PasscodeSettings_Help: String { return self._s[3068]! } - public var NotificationsSound_Input: String { return self._s[3069]! } - public var Share_Title: String { return self._s[3072]! } - public var LogoutOptions_Title: String { return self._s[3073]! } - public var Login_TermsOfServiceAgree: String { return self._s[3074]! } - public var Compose_NewEncryptedChatTitle: String { return self._s[3075]! } - public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[3076]! } - public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[3077]! } - public var EnterPasscode_EnterTitle: String { return self._s[3078]! } + public var Conversation_InputTextCaptionPlaceholder: String { return self._s[3062]! } + public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3063]! } + public var Passport_Language_uz: String { return self._s[3064]! } + public var Conversation_PinMessageAlertGroup: String { return self._s[3065]! } + public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[3066]! } + public var Map_StopLiveLocation: String { return self._s[3068]! } + public var PasscodeSettings_Help: String { return self._s[3070]! } + public var NotificationsSound_Input: String { return self._s[3071]! } + public var Share_Title: String { return self._s[3074]! } + public var LogoutOptions_Title: String { return self._s[3075]! } + public var Login_TermsOfServiceAgree: String { return self._s[3076]! } + public var Compose_NewEncryptedChatTitle: String { return self._s[3077]! } + public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[3078]! } + public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[3079]! } + public var EnterPasscode_EnterTitle: String { return self._s[3080]! } public func Call_PrivacyErrorMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3079]!, self._r[3079]!, [_0]) + return formatWithArgumentRanges(self._s[3081]!, self._r[3081]!, [_0]) } - public var Settings_CopyPhoneNumber: String { return self._s[3080]! } - public var Conversation_AddToContacts: String { return self._s[3081]! } - public var NotificationsSound_Keys: String { return self._s[3082]! } + public var Settings_CopyPhoneNumber: String { return self._s[3082]! } + public var Conversation_AddToContacts: String { return self._s[3083]! } + public var NotificationsSound_Keys: String { return self._s[3084]! } public func Call_ParticipantVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3083]!, self._r[3083]!, [_0]) + return formatWithArgumentRanges(self._s[3085]!, self._r[3085]!, [_0]) } - public var Notification_MessageLifetime1w: String { return self._s[3084]! } - public var Message_Video: String { return self._s[3085]! } - public var AutoDownloadSettings_CellularTitle: String { return self._s[3086]! } + public var Notification_MessageLifetime1w: String { return self._s[3086]! } + public var Message_Video: String { return self._s[3087]! } + public var AutoDownloadSettings_CellularTitle: String { return self._s[3088]! } public func PUSH_CHANNEL_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3087]!, self._r[3087]!, [_1]) + return formatWithArgumentRanges(self._s[3089]!, self._r[3089]!, [_1]) } public func Notification_JoinedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3090]!, self._r[3090]!, [_0]) + return formatWithArgumentRanges(self._s[3092]!, self._r[3092]!, [_0]) } public func PrivacySettings_LastSeenContactsPlus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3091]!, self._r[3091]!, [_0]) + return formatWithArgumentRanges(self._s[3093]!, self._r[3093]!, [_0]) } - public var Passport_Language_mk: String { return self._s[3092]! } - public var CreatePoll_CancelConfirmation: String { return self._s[3093]! } - public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3095]! } - public var PrivacyPolicy_Decline: String { return self._s[3096]! } - public var Passport_Identity_DoesNotExpire: String { return self._s[3097]! } - public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[3098]! } - public var Permissions_SiriAllow_v0: String { return self._s[3100]! } - public var Appearance_ThemeCarouselNight: String { return self._s[3101]! } + public var Passport_Language_mk: String { return self._s[3094]! } + public var CreatePoll_CancelConfirmation: String { return self._s[3095]! } + public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3097]! } + public var PrivacyPolicy_Decline: String { return self._s[3098]! } + public var Passport_Identity_DoesNotExpire: String { return self._s[3099]! } + public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[3100]! } + public var Permissions_SiriAllow_v0: String { return self._s[3102]! } + public var Appearance_ThemeCarouselNight: String { return self._s[3103]! } public func LOCAL_CHAT_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3102]!, self._r[3102]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[3104]!, self._r[3104]!, [_1, "\(_2)"]) } public func Notification_RenamedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3103]!, self._r[3103]!, [_0]) + return formatWithArgumentRanges(self._s[3105]!, self._r[3105]!, [_0]) } - public var Paint_Regular: String { return self._s[3104]! } - public var ChatSettings_AutoDownloadReset: String { return self._s[3105]! } - public var SocksProxySetup_ShareLink: String { return self._s[3106]! } - public var BlockedUsers_SelectUserTitle: String { return self._s[3107]! } - public var GroupInfo_InviteByLink: String { return self._s[3109]! } - public var MessageTimer_Custom: String { return self._s[3110]! } - public var UserInfo_NotificationsDefaultEnabled: String { return self._s[3111]! } - public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3113]! } - public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[3114]! } - public var Channel_Username_InvalidTaken: String { return self._s[3115]! } - public var Conversation_ClousStorageInfo_Description3: String { return self._s[3116]! } - public var Settings_ChatBackground: String { return self._s[3117]! } - public var Channel_Subscribers_Title: String { return self._s[3118]! } - public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[3119]! } - public var Watch_ConnectionDescription: String { return self._s[3120]! } - public var ChatList_ArchivedChatsTitle: String { return self._s[3124]! } - public var Wallpaper_ResetWallpapers: String { return self._s[3125]! } - public var EditProfile_Title: String { return self._s[3126]! } - public var NotificationsSound_Bamboo: String { return self._s[3128]! } - public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[3130]! } - public var Login_SmsRequestState2: String { return self._s[3131]! } - public var Passport_Language_ar: String { return self._s[3132]! } + public var Paint_Regular: String { return self._s[3106]! } + public var ChatSettings_AutoDownloadReset: String { return self._s[3107]! } + public var SocksProxySetup_ShareLink: String { return self._s[3108]! } + public var BlockedUsers_SelectUserTitle: String { return self._s[3109]! } + public var GroupInfo_InviteByLink: String { return self._s[3111]! } + public var MessageTimer_Custom: String { return self._s[3112]! } + public var UserInfo_NotificationsDefaultEnabled: String { return self._s[3113]! } + public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3115]! } + public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[3116]! } + public var Channel_Username_InvalidTaken: String { return self._s[3117]! } + public var Conversation_ClousStorageInfo_Description3: String { return self._s[3118]! } + public var Settings_ChatBackground: String { return self._s[3119]! } + public var Channel_Subscribers_Title: String { return self._s[3120]! } + public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[3121]! } + public var Watch_ConnectionDescription: String { return self._s[3122]! } + public var ChatList_ArchivedChatsTitle: String { return self._s[3126]! } + public var Wallpaper_ResetWallpapers: String { return self._s[3127]! } + public var EditProfile_Title: String { return self._s[3128]! } + public var NotificationsSound_Bamboo: String { return self._s[3130]! } + public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[3132]! } + public var Login_SmsRequestState2: String { return self._s[3133]! } + public var Passport_Language_ar: String { return self._s[3134]! } public func Message_AuthorPinnedGame(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3133]!, self._r[3133]!, [_0]) + return formatWithArgumentRanges(self._s[3135]!, self._r[3135]!, [_0]) } - public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[3134]! } - public var Conversation_MessageDialogEdit: String { return self._s[3135]! } + public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[3136]! } + public var Conversation_MessageDialogEdit: String { return self._s[3137]! } public func PUSH_AUTH_UNKNOWN(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3136]!, self._r[3136]!, [_1]) + return formatWithArgumentRanges(self._s[3138]!, self._r[3138]!, [_1]) } - public var Common_Close: String { return self._s[3137]! } - public var GroupInfo_PublicLink: String { return self._s[3138]! } - public var Channel_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[3139]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[3140]! } + public var Common_Close: String { return self._s[3139]! } + public var GroupInfo_PublicLink: String { return self._s[3140]! } + public var Channel_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[3141]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[3142]! } public func Channel_AdminLog_MessageToggleInvitesOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3144]!, self._r[3144]!, [_0]) - } - public var UserInfo_About_Placeholder: String { return self._s[3145]! } - public func Conversation_FileHowToText(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3146]!, self._r[3146]!, [_0]) } - public var GroupInfo_Permissions_SectionTitle: String { return self._s[3147]! } - public var Channel_Info_Banned: String { return self._s[3149]! } + public var UserInfo_About_Placeholder: String { return self._s[3147]! } + public func Conversation_FileHowToText(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3148]!, self._r[3148]!, [_0]) + } + public var GroupInfo_Permissions_SectionTitle: String { return self._s[3149]! } + public var Channel_Info_Banned: String { return self._s[3151]! } public func Time_MonthOfYear_m11(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3150]!, self._r[3150]!, [_0]) + return formatWithArgumentRanges(self._s[3152]!, self._r[3152]!, [_0]) } - public var Appearance_Other: String { return self._s[3151]! } - public var Passport_Language_my: String { return self._s[3152]! } - public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[3153]! } + public var Appearance_Other: String { return self._s[3153]! } + public var Passport_Language_my: String { return self._s[3154]! } + public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[3155]! } public func Time_PreciseDate_m9(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3154]!, self._r[3154]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3156]!, self._r[3156]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[3155]! } - public var Preview_CopyAddress: String { return self._s[3156]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[3157]! } + public var Preview_CopyAddress: String { return self._s[3158]! } public func DialogList_SinglePlayingGameSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3157]!, self._r[3157]!, [_0]) + return formatWithArgumentRanges(self._s[3159]!, self._r[3159]!, [_0]) } - public var KeyCommand_JumpToPreviousChat: String { return self._s[3158]! } - public var UserInfo_BotSettings: String { return self._s[3159]! } - public var LiveLocation_MenuStopAll: String { return self._s[3161]! } - public var Passport_PasswordCreate: String { return self._s[3162]! } - public var StickerSettings_MaskContextInfo: String { return self._s[3163]! } - public var Message_PinnedLocationMessage: String { return self._s[3164]! } - public var Map_Satellite: String { return self._s[3165]! } - public var Watch_Message_Unsupported: String { return self._s[3166]! } - public var Username_TooManyPublicUsernamesError: String { return self._s[3167]! } - public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[3168]! } + public var KeyCommand_JumpToPreviousChat: String { return self._s[3160]! } + public var UserInfo_BotSettings: String { return self._s[3161]! } + public var LiveLocation_MenuStopAll: String { return self._s[3163]! } + public var Passport_PasswordCreate: String { return self._s[3164]! } + public var StickerSettings_MaskContextInfo: String { return self._s[3165]! } + public var Message_PinnedLocationMessage: String { return self._s[3166]! } + public var Map_Satellite: String { return self._s[3167]! } + public var Watch_Message_Unsupported: String { return self._s[3168]! } + public var Username_TooManyPublicUsernamesError: String { return self._s[3169]! } + public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[3170]! } public func Notification_PinnedTextMessage(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3169]!, self._r[3169]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3171]!, self._r[3171]!, [_0, _1]) } public func Conversation_OpenBotLinkText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3170]!, self._r[3170]!, [_0]) + return formatWithArgumentRanges(self._s[3172]!, self._r[3172]!, [_0]) } - public var Notifications_ChannelNotificationsHelp: String { return self._s[3171]! } - public var Privacy_Calls_P2PContacts: String { return self._s[3172]! } - public var NotificationsSound_None: String { return self._s[3173]! } - public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[3175]! } - public var AccessDenied_VoiceMicrophone: String { return self._s[3176]! } + public var Notifications_ChannelNotificationsHelp: String { return self._s[3173]! } + public var Privacy_Calls_P2PContacts: String { return self._s[3174]! } + public var NotificationsSound_None: String { return self._s[3175]! } + public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[3177]! } + public var AccessDenied_VoiceMicrophone: String { return self._s[3178]! } public func ApplyLanguage_ChangeLanguageAlreadyActive(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3177]!, self._r[3177]!, [_1]) + return formatWithArgumentRanges(self._s[3179]!, self._r[3179]!, [_1]) } - public var Cache_Indexing: String { return self._s[3178]! } - public var DialogList_RecentTitlePeople: String { return self._s[3180]! } - public var DialogList_EncryptionRejected: String { return self._s[3181]! } - public var GroupInfo_Administrators: String { return self._s[3182]! } - public var Passport_ScanPassportHelp: String { return self._s[3183]! } - public var Application_Name: String { return self._s[3184]! } - public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[3185]! } - public var Appearance_ThemeCarouselDay: String { return self._s[3187]! } - public var Passport_Identity_TranslationHelp: String { return self._s[3188]! } + public var Cache_Indexing: String { return self._s[3180]! } + public var DialogList_RecentTitlePeople: String { return self._s[3182]! } + public var DialogList_EncryptionRejected: String { return self._s[3183]! } + public var GroupInfo_Administrators: String { return self._s[3184]! } + public var Passport_ScanPassportHelp: String { return self._s[3185]! } + public var Application_Name: String { return self._s[3186]! } + public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[3187]! } + public var Appearance_ThemeCarouselDay: String { return self._s[3189]! } + public var Passport_Identity_TranslationHelp: String { return self._s[3190]! } public func Notification_JoinedGroupByLink(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3189]!, self._r[3189]!, [_0]) + return formatWithArgumentRanges(self._s[3191]!, self._r[3191]!, [_0]) } public func DialogList_EncryptedChatStartedOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3190]!, self._r[3190]!, [_0]) + return formatWithArgumentRanges(self._s[3192]!, self._r[3192]!, [_0]) } - public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[3191]! } - public var Privacy_ChatsTitle: String { return self._s[3192]! } - public var DialogList_ClearHistoryConfirmation: String { return self._s[3193]! } - public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[3194]! } - public var Watch_Suggestion_HoldOn: String { return self._s[3195]! } - public var Group_EditAdmin_TransferOwnership: String { return self._s[3196]! } - public var Group_LinkedChannel: String { return self._s[3197]! } - public var SocksProxySetup_RequiredCredentials: String { return self._s[3198]! } - public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[3199]! } - public var TwoStepAuth_EmailSkipAlert: String { return self._s[3200]! } - public var Channel_Setup_TypePublic: String { return self._s[3203]! } + public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[3193]! } + public var Privacy_ChatsTitle: String { return self._s[3194]! } + public var DialogList_ClearHistoryConfirmation: String { return self._s[3195]! } + public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[3196]! } + public var Watch_Suggestion_HoldOn: String { return self._s[3197]! } + public var Group_EditAdmin_TransferOwnership: String { return self._s[3198]! } + public var Group_LinkedChannel: String { return self._s[3199]! } + public var SocksProxySetup_RequiredCredentials: String { return self._s[3200]! } + public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[3201]! } + public var TwoStepAuth_EmailSkipAlert: String { return self._s[3202]! } + public var Channel_Setup_TypePublic: String { return self._s[3205]! } public func Channel_AdminLog_MessageToggleInvitesOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3204]!, self._r[3204]!, [_0]) + return formatWithArgumentRanges(self._s[3206]!, self._r[3206]!, [_0]) } - public var Channel_TypeSetup_Title: String { return self._s[3206]! } - public var Map_OpenInMaps: String { return self._s[3208]! } + public var Channel_TypeSetup_Title: String { return self._s[3208]! } + public var Map_OpenInMaps: String { return self._s[3210]! } public func PUSH_PINNED_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3209]!, self._r[3209]!, [_1]) + return formatWithArgumentRanges(self._s[3211]!, self._r[3211]!, [_1]) } - public var NotificationsSound_Tremolo: String { return self._s[3211]! } + public var NotificationsSound_Tremolo: String { return self._s[3213]! } public func Date_ChatDateHeaderYear(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3212]!, self._r[3212]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3214]!, self._r[3214]!, [_1, _2, _3]) } - public var ConversationProfile_UnknownAddMemberError: String { return self._s[3213]! } - public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[3214]! } - public var Passport_PasswordHelp: String { return self._s[3215]! } - public var Login_CodeExpiredError: String { return self._s[3216]! } - public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[3217]! } - public var Conversation_TitleUnmute: String { return self._s[3218]! } - public var Passport_Identity_ScansHelp: String { return self._s[3219]! } - public var Passport_Language_lo: String { return self._s[3220]! } - public var Camera_FlashAuto: String { return self._s[3221]! } - public var Conversation_OpenBotLinkOpen: String { return self._s[3222]! } - public var Common_Cancel: String { return self._s[3223]! } - public var DialogList_SavedMessagesTooltip: String { return self._s[3224]! } - public var TwoStepAuth_SetupPasswordTitle: String { return self._s[3225]! } - public var Appearance_TintAllColors: String { return self._s[3226]! } + public var ConversationProfile_UnknownAddMemberError: String { return self._s[3215]! } + public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[3216]! } + public var Passport_PasswordHelp: String { return self._s[3217]! } + public var Login_CodeExpiredError: String { return self._s[3218]! } + public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[3219]! } + public var Conversation_TitleUnmute: String { return self._s[3220]! } + public var Passport_Identity_ScansHelp: String { return self._s[3221]! } + public var Passport_Language_lo: String { return self._s[3222]! } + public var Camera_FlashAuto: String { return self._s[3223]! } + public var Conversation_OpenBotLinkOpen: String { return self._s[3224]! } + public var Common_Cancel: String { return self._s[3225]! } + public var DialogList_SavedMessagesTooltip: String { return self._s[3226]! } + public var TwoStepAuth_SetupPasswordTitle: String { return self._s[3227]! } + public var Appearance_TintAllColors: String { return self._s[3228]! } public func PUSH_MESSAGE_FWD(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3227]!, self._r[3227]!, [_1]) + return formatWithArgumentRanges(self._s[3229]!, self._r[3229]!, [_1]) } - public var Conversation_ReportSpamConfirmation: String { return self._s[3228]! } - public var ChatSettings_Title: String { return self._s[3230]! } - public var Passport_PasswordReset: String { return self._s[3231]! } - public var SocksProxySetup_TypeNone: String { return self._s[3232]! } - public var PhoneNumberHelp_Help: String { return self._s[3234]! } - public var Checkout_EnterPassword: String { return self._s[3235]! } - public var Share_AuthTitle: String { return self._s[3237]! } - public var Activity_UploadingDocument: String { return self._s[3238]! } - public var State_Connecting: String { return self._s[3239]! } - public var Profile_MessageLifetime1w: String { return self._s[3240]! } - public var Conversation_ContextMenuReport: String { return self._s[3241]! } - public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[3242]! } - public var AutoNightTheme_ScheduledTo: String { return self._s[3243]! } - public var AuthSessions_Terminate: String { return self._s[3244]! } - public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[3245]! } - public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[3246]! } - public var PhotoEditor_Set: String { return self._s[3247]! } - public var EmptyGroupInfo_Title: String { return self._s[3248]! } - public var Login_PadPhoneHelp: String { return self._s[3249]! } - public var AutoDownloadSettings_TypeGroupChats: String { return self._s[3251]! } - public var PrivacyPolicy_DeclineLastWarning: String { return self._s[3253]! } - public var NotificationsSound_Complete: String { return self._s[3254]! } - public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[3255]! } - public var Group_Info_AdminLog: String { return self._s[3256]! } - public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[3257]! } - public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[3258]! } - public var Conversation_Admin: String { return self._s[3260]! } - public var Conversation_GifTooltip: String { return self._s[3261]! } - public var Passport_NotLoggedInMessage: String { return self._s[3262]! } + public var Conversation_ReportSpamConfirmation: String { return self._s[3230]! } + public var ChatSettings_Title: String { return self._s[3232]! } + public var Passport_PasswordReset: String { return self._s[3233]! } + public var SocksProxySetup_TypeNone: String { return self._s[3234]! } + public var PhoneNumberHelp_Help: String { return self._s[3236]! } + public var Checkout_EnterPassword: String { return self._s[3237]! } + public var Share_AuthTitle: String { return self._s[3239]! } + public var Activity_UploadingDocument: String { return self._s[3240]! } + public var State_Connecting: String { return self._s[3241]! } + public var Profile_MessageLifetime1w: String { return self._s[3242]! } + public var Conversation_ContextMenuReport: String { return self._s[3243]! } + public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[3244]! } + public var AutoNightTheme_ScheduledTo: String { return self._s[3245]! } + public var AuthSessions_Terminate: String { return self._s[3246]! } + public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[3247]! } + public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[3248]! } + public var PhotoEditor_Set: String { return self._s[3249]! } + public var EmptyGroupInfo_Title: String { return self._s[3250]! } + public var Login_PadPhoneHelp: String { return self._s[3251]! } + public var AutoDownloadSettings_TypeGroupChats: String { return self._s[3253]! } + public var PrivacyPolicy_DeclineLastWarning: String { return self._s[3255]! } + public var NotificationsSound_Complete: String { return self._s[3256]! } + public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[3257]! } + public var Group_Info_AdminLog: String { return self._s[3258]! } + public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[3259]! } + public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[3260]! } + public var Conversation_Admin: String { return self._s[3262]! } + public var Conversation_GifTooltip: String { return self._s[3263]! } + public var Passport_NotLoggedInMessage: String { return self._s[3264]! } public func AutoDownloadSettings_OnFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3263]!, self._r[3263]!, [_0]) + return formatWithArgumentRanges(self._s[3265]!, self._r[3265]!, [_0]) } - public var Profile_MessageLifetimeForever: String { return self._s[3264]! } - public var SharedMedia_EmptyTitle: String { return self._s[3266]! } - public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[3268]! } - public var Username_Help: String { return self._s[3269]! } - public var DialogList_LanguageTooltip: String { return self._s[3271]! } - public var Map_LoadError: String { return self._s[3272]! } - public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[3273]! } - public var Channel_AdminLog_AddMembers: String { return self._s[3274]! } - public var ArchivedChats_IntroTitle2: String { return self._s[3275]! } - public var Notification_Exceptions_NewException: String { return self._s[3276]! } - public var TwoStepAuth_EmailTitle: String { return self._s[3277]! } - public var WatchRemote_AlertText: String { return self._s[3278]! } - public var ChatSettings_ConnectionType_Title: String { return self._s[3281]! } + public var Profile_MessageLifetimeForever: String { return self._s[3266]! } + public var SharedMedia_EmptyTitle: String { return self._s[3268]! } + public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[3270]! } + public var Username_Help: String { return self._s[3271]! } + public var DialogList_LanguageTooltip: String { return self._s[3273]! } + public var Map_LoadError: String { return self._s[3274]! } + public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[3275]! } + public var Channel_AdminLog_AddMembers: String { return self._s[3276]! } + public var ArchivedChats_IntroTitle2: String { return self._s[3277]! } + public var Notification_Exceptions_NewException: String { return self._s[3278]! } + public var TwoStepAuth_EmailTitle: String { return self._s[3279]! } + public var WatchRemote_AlertText: String { return self._s[3280]! } + public var ChatSettings_ConnectionType_Title: String { return self._s[3283]! } public func Settings_CheckPhoneNumberTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3282]!, self._r[3282]!, [_0]) + return formatWithArgumentRanges(self._s[3284]!, self._r[3284]!, [_0]) } - public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[3283]! } - public var Passport_Address_CountryPlaceholder: String { return self._s[3284]! } + public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[3285]! } + public var Passport_Address_CountryPlaceholder: String { return self._s[3286]! } public func DialogList_AwaitingEncryption(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3285]!, self._r[3285]!, [_0]) + return formatWithArgumentRanges(self._s[3287]!, self._r[3287]!, [_0]) } public func Time_PreciseDate_m6(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3286]!, self._r[3286]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3288]!, self._r[3288]!, [_1, _2, _3]) } - public var Group_AdminLog_EmptyText: String { return self._s[3287]! } - public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[3288]! } - public var Conversation_PrivateChannelTooltip: String { return self._s[3290]! } - public var ChatList_UndoArchiveText1: String { return self._s[3291]! } - public var AccessDenied_VideoMicrophone: String { return self._s[3292]! } - public var Conversation_ContextMenuStickerPackAdd: String { return self._s[3293]! } - public var Cache_ClearNone: String { return self._s[3294]! } - public var SocksProxySetup_FailedToConnect: String { return self._s[3295]! } - public var Permissions_NotificationsTitle_v0: String { return self._s[3296]! } + public var Group_AdminLog_EmptyText: String { return self._s[3289]! } + public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[3290]! } + public var Conversation_PrivateChannelTooltip: String { return self._s[3292]! } + public var ChatList_UndoArchiveText1: String { return self._s[3293]! } + public var AccessDenied_VideoMicrophone: String { return self._s[3294]! } + public var Conversation_ContextMenuStickerPackAdd: String { return self._s[3295]! } + public var Cache_ClearNone: String { return self._s[3296]! } + public var SocksProxySetup_FailedToConnect: String { return self._s[3297]! } + public var Permissions_NotificationsTitle_v0: String { return self._s[3298]! } public func Channel_AdminLog_MessageEdited(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3297]!, self._r[3297]!, [_0]) - } - public var Passport_Identity_Country: String { return self._s[3298]! } - public func ChatSettings_AutoDownloadSettings_TypeFile(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3299]!, self._r[3299]!, [_0]) } - public func Notification_CreatedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3300]!, self._r[3300]!, [_0]) + public var Passport_Identity_Country: String { return self._s[3300]! } + public func ChatSettings_AutoDownloadSettings_TypeFile(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3301]!, self._r[3301]!, [_0]) } - public var Exceptions_AddToExceptions: String { return self._s[3301]! } - public var AccessDenied_Settings: String { return self._s[3302]! } - public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[3303]! } - public var Month_ShortMay: String { return self._s[3304]! } - public var Compose_NewGroup: String { return self._s[3305]! } - public var Group_Setup_TypePrivate: String { return self._s[3307]! } - public var Login_PadPhoneHelpTitle: String { return self._s[3309]! } - public var Appearance_ThemeDayClassic: String { return self._s[3310]! } - public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[3311]! } - public var AutoDownloadSettings_OffForAll: String { return self._s[3312]! } - public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[3313]! } - public var Conversation_typing: String { return self._s[3315]! } - public var Paint_Masks: String { return self._s[3316]! } - public var Contacts_DeselectAll: String { return self._s[3317]! } - public var Username_InvalidTaken: String { return self._s[3318]! } - public var Call_StatusNoAnswer: String { return self._s[3319]! } - public var TwoStepAuth_EmailAddSuccess: String { return self._s[3320]! } - public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[3321]! } - public var Passport_Identity_Selfie: String { return self._s[3322]! } - public var Login_InfoLastNamePlaceholder: String { return self._s[3323]! } - public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[3324]! } - public var Conversation_ClearSecretHistory: String { return self._s[3325]! } - public var PeopleNearby_Description: String { return self._s[3327]! } - public var NetworkUsageSettings_Title: String { return self._s[3328]! } - public var Your_cards_security_code_is_invalid: String { return self._s[3330]! } + public func Notification_CreatedChat(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3302]!, self._r[3302]!, [_0]) + } + public var Exceptions_AddToExceptions: String { return self._s[3303]! } + public var AccessDenied_Settings: String { return self._s[3304]! } + public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[3305]! } + public var Month_ShortMay: String { return self._s[3306]! } + public var Compose_NewGroup: String { return self._s[3307]! } + public var Group_Setup_TypePrivate: String { return self._s[3309]! } + public var Login_PadPhoneHelpTitle: String { return self._s[3311]! } + public var Appearance_ThemeDayClassic: String { return self._s[3312]! } + public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[3313]! } + public var AutoDownloadSettings_OffForAll: String { return self._s[3314]! } + public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[3315]! } + public var Conversation_typing: String { return self._s[3317]! } + public var Paint_Masks: String { return self._s[3318]! } + public var Contacts_DeselectAll: String { return self._s[3319]! } + public var Username_InvalidTaken: String { return self._s[3320]! } + public var Call_StatusNoAnswer: String { return self._s[3321]! } + public var TwoStepAuth_EmailAddSuccess: String { return self._s[3322]! } + public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[3323]! } + public var Passport_Identity_Selfie: String { return self._s[3324]! } + public var Login_InfoLastNamePlaceholder: String { return self._s[3325]! } + public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[3326]! } + public var Conversation_ClearSecretHistory: String { return self._s[3327]! } + public var PeopleNearby_Description: String { return self._s[3329]! } + public var NetworkUsageSettings_Title: String { return self._s[3330]! } + public var Your_cards_security_code_is_invalid: String { return self._s[3332]! } public func Notification_LeftChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3332]!, self._r[3332]!, [_0]) + return formatWithArgumentRanges(self._s[3334]!, self._r[3334]!, [_0]) } public func Call_CallInProgressMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3333]!, self._r[3333]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3335]!, self._r[3335]!, [_1, _2]) } - public var SaveIncomingPhotosSettings_From: String { return self._s[3335]! } - public var Map_LiveLocationTitle: String { return self._s[3336]! } - public var Login_InfoAvatarAdd: String { return self._s[3337]! } - public var Passport_Identity_FilesView: String { return self._s[3338]! } - public var UserInfo_GenericPhoneLabel: String { return self._s[3339]! } - public var Privacy_Calls_NeverAllow: String { return self._s[3340]! } + public var SaveIncomingPhotosSettings_From: String { return self._s[3337]! } + public var Map_LiveLocationTitle: String { return self._s[3338]! } + public var Login_InfoAvatarAdd: String { return self._s[3339]! } + public var Passport_Identity_FilesView: String { return self._s[3340]! } + public var UserInfo_GenericPhoneLabel: String { return self._s[3341]! } + public var Privacy_Calls_NeverAllow: String { return self._s[3342]! } public func Contacts_AddPhoneNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3341]!, self._r[3341]!, [_0]) + return formatWithArgumentRanges(self._s[3343]!, self._r[3343]!, [_0]) } - public var ContactInfo_PhoneNumberHidden: String { return self._s[3342]! } - public var TwoStepAuth_ConfirmationText: String { return self._s[3343]! } - public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[3344]! } + public var ContactInfo_PhoneNumberHidden: String { return self._s[3344]! } + public var TwoStepAuth_ConfirmationText: String { return self._s[3345]! } + public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[3346]! } public func PUSH_CHAT_MESSAGE_VIDEOS(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3345]!, self._r[3345]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3347]!, self._r[3347]!, [_1, _2, _3]) } - public var Channel_AdminLogFilter_AdminsAll: String { return self._s[3346]! } - public var Tour_Title2: String { return self._s[3347]! } - public var Conversation_FileOpenIn: String { return self._s[3348]! } - public var Checkout_ErrorPrecheckoutFailed: String { return self._s[3349]! } - public var Wallpaper_Set: String { return self._s[3350]! } - public var Passport_Identity_Translations: String { return self._s[3352]! } + public var Channel_AdminLogFilter_AdminsAll: String { return self._s[3348]! } + public var Tour_Title2: String { return self._s[3349]! } + public var Conversation_FileOpenIn: String { return self._s[3350]! } + public var Checkout_ErrorPrecheckoutFailed: String { return self._s[3351]! } + public var Wallpaper_Set: String { return self._s[3352]! } + public var Passport_Identity_Translations: String { return self._s[3354]! } public func Channel_AdminLog_MessageChangedChannelAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3353]!, self._r[3353]!, [_0]) + return formatWithArgumentRanges(self._s[3355]!, self._r[3355]!, [_0]) } - public var Channel_LeaveChannel: String { return self._s[3354]! } + public var Channel_LeaveChannel: String { return self._s[3356]! } public func PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3355]!, self._r[3355]!, [_1]) + return formatWithArgumentRanges(self._s[3357]!, self._r[3357]!, [_1]) } - public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[3356]! } - public var PhotoEditor_HighlightsTint: String { return self._s[3357]! } - public var Passport_Email_Delete: String { return self._s[3358]! } - public var Conversation_Mute: String { return self._s[3360]! } - public var Channel_AddBotAsAdmin: String { return self._s[3361]! } - public var Channel_AdminLog_CanSendMessages: String { return self._s[3363]! } - public var Channel_Management_LabelOwner: String { return self._s[3365]! } + public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[3358]! } + public var PhotoEditor_HighlightsTint: String { return self._s[3359]! } + public var Passport_Email_Delete: String { return self._s[3360]! } + public var Conversation_Mute: String { return self._s[3362]! } + public var Channel_AddBotAsAdmin: String { return self._s[3363]! } + public var Channel_AdminLog_CanSendMessages: String { return self._s[3365]! } + public var Channel_Management_LabelOwner: String { return self._s[3367]! } public func Notification_PassportValuesSentMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3366]!, self._r[3366]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3368]!, self._r[3368]!, [_1, _2]) } - public var Calls_CallTabDescription: String { return self._s[3367]! } - public var Passport_Identity_NativeNameHelp: String { return self._s[3368]! } - public var Common_No: String { return self._s[3369]! } - public var Weekday_Sunday: String { return self._s[3370]! } - public var Notification_Reply: String { return self._s[3371]! } - public var Conversation_ViewMessage: String { return self._s[3372]! } + public var Calls_CallTabDescription: String { return self._s[3369]! } + public var Passport_Identity_NativeNameHelp: String { return self._s[3370]! } + public var Common_No: String { return self._s[3371]! } + public var Weekday_Sunday: String { return self._s[3372]! } + public var Notification_Reply: String { return self._s[3373]! } + public var Conversation_ViewMessage: String { return self._s[3374]! } public func Checkout_SavePasswordTimeoutAndFaceId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3373]!, self._r[3373]!, [_0]) + return formatWithArgumentRanges(self._s[3375]!, self._r[3375]!, [_0]) } public func Map_LiveLocationPrivateDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3374]!, self._r[3374]!, [_0]) + return formatWithArgumentRanges(self._s[3376]!, self._r[3376]!, [_0]) } - public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[3375]! } - public var Message_PinnedDocumentMessage: String { return self._s[3376]! } - public var DialogList_TabTitle: String { return self._s[3378]! } - public var ChatSettings_AutoPlayTitle: String { return self._s[3379]! } - public var Passport_FieldEmail: String { return self._s[3380]! } - public var Conversation_UnpinMessageAlert: String { return self._s[3381]! } - public var Passport_Address_TypeBankStatement: String { return self._s[3382]! } - public var Passport_Identity_ExpiryDate: String { return self._s[3383]! } - public var Privacy_Calls_P2P: String { return self._s[3384]! } + public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[3377]! } + public var Message_PinnedDocumentMessage: String { return self._s[3378]! } + public var DialogList_TabTitle: String { return self._s[3380]! } + public var ChatSettings_AutoPlayTitle: String { return self._s[3381]! } + public var Passport_FieldEmail: String { return self._s[3382]! } + public var Conversation_UnpinMessageAlert: String { return self._s[3383]! } + public var Passport_Address_TypeBankStatement: String { return self._s[3384]! } + public var Passport_Identity_ExpiryDate: String { return self._s[3385]! } + public var Privacy_Calls_P2P: String { return self._s[3386]! } public func CancelResetAccount_Success(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3386]!, self._r[3386]!, [_0]) + return formatWithArgumentRanges(self._s[3388]!, self._r[3388]!, [_0]) } - public var SocksProxySetup_UseForCallsHelp: String { return self._s[3387]! } + public var SocksProxySetup_UseForCallsHelp: String { return self._s[3389]! } public func PUSH_CHAT_ALBUM(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3388]!, self._r[3388]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3390]!, self._r[3390]!, [_1, _2]) } - public var Stickers_ClearRecent: String { return self._s[3389]! } - public var EnterPasscode_ChangeTitle: String { return self._s[3390]! } - public var Passport_InfoText: String { return self._s[3391]! } - public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[3392]! } + public var Stickers_ClearRecent: String { return self._s[3391]! } + public var EnterPasscode_ChangeTitle: String { return self._s[3392]! } + public var Passport_InfoText: String { return self._s[3393]! } + public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[3394]! } public func Login_InvalidPhoneEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3393]!, self._r[3393]!, [_0]) + return formatWithArgumentRanges(self._s[3395]!, self._r[3395]!, [_0]) } public func Time_PreciseDate_m3(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3394]!, self._r[3394]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3396]!, self._r[3396]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[3395]! } - public var Passport_Identity_EditDriversLicense: String { return self._s[3396]! } - public var Conversation_TapAndHoldToRecord: String { return self._s[3398]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[3399]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[3397]! } + public var Passport_Identity_EditDriversLicense: String { return self._s[3398]! } + public var Conversation_TapAndHoldToRecord: String { return self._s[3400]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[3401]! } public func Notification_CallTimeFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3400]!, self._r[3400]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3402]!, self._r[3402]!, [_1, _2]) } - public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[3402]! } + public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[3404]! } public func Generic_OpenHiddenLinkAlert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3404]!, self._r[3404]!, [_0]) + return formatWithArgumentRanges(self._s[3406]!, self._r[3406]!, [_0]) } - public var DialogList_Unread: String { return self._s[3405]! } + public var DialogList_Unread: String { return self._s[3407]! } public func PUSH_CHAT_MESSAGE_GIF(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3406]!, self._r[3406]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3408]!, self._r[3408]!, [_1, _2]) } - public var User_DeletedAccount: String { return self._s[3407]! } - public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[3408]! } + public var User_DeletedAccount: String { return self._s[3409]! } + public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[3410]! } public func Watch_Time_ShortYesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3409]!, self._r[3409]!, [_0]) + return formatWithArgumentRanges(self._s[3411]!, self._r[3411]!, [_0]) } - public var UserInfo_NotificationsDefault: String { return self._s[3410]! } - public var SharedMedia_CategoryMedia: String { return self._s[3411]! } - public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[3412]! } - public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[3413]! } - public var Watch_ChatList_Compose: String { return self._s[3414]! } - public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[3415]! } - public var AutoDownloadSettings_Delimeter: String { return self._s[3416]! } - public var Watch_Microphone_Access: String { return self._s[3417]! } - public var Group_Setup_HistoryHeader: String { return self._s[3418]! } - public var Map_SetThisLocation: String { return self._s[3419]! } - public var Activity_UploadingPhoto: String { return self._s[3420]! } - public var Conversation_Edit: String { return self._s[3422]! } - public var Group_ErrorSendRestrictedMedia: String { return self._s[3423]! } - public var Login_TermsOfServiceDecline: String { return self._s[3424]! } - public var Message_PinnedContactMessage: String { return self._s[3425]! } + public var UserInfo_NotificationsDefault: String { return self._s[3412]! } + public var SharedMedia_CategoryMedia: String { return self._s[3413]! } + public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[3414]! } + public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[3415]! } + public var Watch_ChatList_Compose: String { return self._s[3416]! } + public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[3417]! } + public var AutoDownloadSettings_Delimeter: String { return self._s[3418]! } + public var Watch_Microphone_Access: String { return self._s[3419]! } + public var Group_Setup_HistoryHeader: String { return self._s[3420]! } + public var Map_SetThisLocation: String { return self._s[3421]! } + public var Activity_UploadingPhoto: String { return self._s[3422]! } + public var Conversation_Edit: String { return self._s[3424]! } + public var Group_ErrorSendRestrictedMedia: String { return self._s[3425]! } + public var Login_TermsOfServiceDecline: String { return self._s[3426]! } + public var Message_PinnedContactMessage: String { return self._s[3427]! } public func Channel_AdminLog_MessageRestrictedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3426]!, self._r[3426]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3428]!, self._r[3428]!, [_1, _2]) } public func Login_PhoneBannedEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3427]!, self._r[3427]!, [_1, _2, _3, _4, _5]) + return formatWithArgumentRanges(self._s[3429]!, self._r[3429]!, [_1, _2, _3, _4, _5]) } - public var Appearance_LargeEmoji: String { return self._s[3428]! } - public var TwoStepAuth_AdditionalPassword: String { return self._s[3430]! } + public var Appearance_LargeEmoji: String { return self._s[3430]! } + public var TwoStepAuth_AdditionalPassword: String { return self._s[3432]! } public func PUSH_CHAT_DELETE_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3431]!, self._r[3431]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3433]!, self._r[3433]!, [_1, _2]) } - public var Passport_Phone_EnterOtherNumber: String { return self._s[3432]! } - public var Message_PinnedPhotoMessage: String { return self._s[3433]! } - public var Passport_FieldPhone: String { return self._s[3434]! } - public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[3435]! } - public var ChatSettings_AutoPlayGifs: String { return self._s[3436]! } - public var InfoPlist_NSCameraUsageDescription: String { return self._s[3438]! } - public var Conversation_Call: String { return self._s[3439]! } - public var Common_TakePhoto: String { return self._s[3441]! } - public var Channel_NotificationLoading: String { return self._s[3442]! } + public var Passport_Phone_EnterOtherNumber: String { return self._s[3434]! } + public var Message_PinnedPhotoMessage: String { return self._s[3435]! } + public var Passport_FieldPhone: String { return self._s[3436]! } + public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[3437]! } + public var ChatSettings_AutoPlayGifs: String { return self._s[3438]! } + public var InfoPlist_NSCameraUsageDescription: String { return self._s[3440]! } + public var Conversation_Call: String { return self._s[3441]! } + public var Common_TakePhoto: String { return self._s[3443]! } + public var Channel_NotificationLoading: String { return self._s[3444]! } public func Notification_Exceptions_Sound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3443]!, self._r[3443]!, [_0]) + return formatWithArgumentRanges(self._s[3445]!, self._r[3445]!, [_0]) } public func PUSH_CHANNEL_MESSAGE_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3444]!, self._r[3444]!, [_1]) + return formatWithArgumentRanges(self._s[3446]!, self._r[3446]!, [_1]) } - public var Permissions_SiriTitle_v0: String { return self._s[3445]! } + public var Permissions_SiriTitle_v0: String { return self._s[3447]! } public func Login_ResetAccountProtected_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3446]!, self._r[3446]!, [_0]) + return formatWithArgumentRanges(self._s[3448]!, self._r[3448]!, [_0]) } - public var Channel_MessagePhotoRemoved: String { return self._s[3447]! } - public var Common_edit: String { return self._s[3448]! } - public var PrivacySettings_AuthSessions: String { return self._s[3449]! } - public var Month_ShortJune: String { return self._s[3450]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[3451]! } - public var Call_ReportSend: String { return self._s[3452]! } - public var Watch_LastSeen_JustNow: String { return self._s[3453]! } - public var Notifications_MessageNotifications: String { return self._s[3454]! } - public var WallpaperSearch_ColorGreen: String { return self._s[3455]! } - public var BroadcastListInfo_AddRecipient: String { return self._s[3457]! } - public var Group_Status: String { return self._s[3458]! } + public var Channel_MessagePhotoRemoved: String { return self._s[3449]! } + public var Common_edit: String { return self._s[3450]! } + public var PrivacySettings_AuthSessions: String { return self._s[3451]! } + public var Month_ShortJune: String { return self._s[3452]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[3453]! } + public var Call_ReportSend: String { return self._s[3454]! } + public var Watch_LastSeen_JustNow: String { return self._s[3455]! } + public var Notifications_MessageNotifications: String { return self._s[3456]! } + public var WallpaperSearch_ColorGreen: String { return self._s[3457]! } + public var BroadcastListInfo_AddRecipient: String { return self._s[3459]! } + public var Group_Status: String { return self._s[3460]! } public func AutoNightTheme_LocationHelp(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3459]!, self._r[3459]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3461]!, self._r[3461]!, [_0, _1]) } - public var TextFormat_AddLinkTitle: String { return self._s[3460]! } - public var ShareMenu_ShareTo: String { return self._s[3461]! } - public var Conversation_Moderate_Ban: String { return self._s[3462]! } + public var TextFormat_AddLinkTitle: String { return self._s[3462]! } + public var ShareMenu_ShareTo: String { return self._s[3463]! } + public var Conversation_Moderate_Ban: String { return self._s[3464]! } public func Conversation_DeleteMessagesFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3463]!, self._r[3463]!, [_0]) + return formatWithArgumentRanges(self._s[3465]!, self._r[3465]!, [_0]) } - public var SharedMedia_ViewInChat: String { return self._s[3464]! } - public var Map_LiveLocationFor8Hours: String { return self._s[3465]! } + public var SharedMedia_ViewInChat: String { return self._s[3466]! } + public var Map_LiveLocationFor8Hours: String { return self._s[3467]! } public func PUSH_PINNED_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3466]!, self._r[3466]!, [_1]) + return formatWithArgumentRanges(self._s[3468]!, self._r[3468]!, [_1]) } public func PUSH_PINNED_POLL(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3467]!, self._r[3467]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3469]!, self._r[3469]!, [_1, _2]) } public func Map_AccurateTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3469]!, self._r[3469]!, [_0]) + return formatWithArgumentRanges(self._s[3471]!, self._r[3471]!, [_0]) } - public var Map_OpenInHereMaps: String { return self._s[3470]! } - public var Appearance_ReduceMotion: String { return self._s[3471]! } + public var Map_OpenInHereMaps: String { return self._s[3472]! } + public var Appearance_ReduceMotion: String { return self._s[3473]! } public func PUSH_MESSAGE_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3472]!, self._r[3472]!, [_1, _2]) - } - public var Channel_Setup_TypePublicHelp: String { return self._s[3473]! } - public var Passport_Identity_EditInternalPassport: String { return self._s[3474]! } - public var PhotoEditor_Skip: String { return self._s[3475]! } - public func MessageTimer_Days(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Weeks(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedContacts(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortDays(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, _1, _2) + return formatWithArgumentRanges(self._s[3474]!, self._r[3474]!, [_1, _2]) } + public var Channel_Setup_TypePublicHelp: String { return self._s[3475]! } + public var Passport_Identity_EditInternalPassport: String { return self._s[3476]! } + public var PhotoEditor_Skip: String { return self._s[3477]! } public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func MessageTimer_Seconds(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Generic(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func SharedMedia_Link(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedPolls(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortWeeks(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteExpires_Hours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Minutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func MessageTimer_Years(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedLocations(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ForwardedStickers(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func Call_ShortMinutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreExtended(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) - } - public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LastSeen_HoursAgo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendItem(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_Minutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Months(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_SelectedChats(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) - } - public func QuickSend_Photos(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_Seconds(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_ShareItem(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedMessages(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Map_ETAHours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Map_ETAMinutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_ShareVideo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedVideoMessages(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteFor_Hours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortHours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Contacts_ImportersCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func MessageTimer_ShortSeconds(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_AddStickerCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusMembers(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) - } - public func UserCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_AddMaskCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func SharedMedia_Photo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteFor_Days(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteExpires_Days(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedVideos(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, _1, _2) } public func StickerPack_StickerCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_Exceptions(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedGifs(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, stringValue) } public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, stringValue) } - public func MuteExpires_Minutes(_ value: Int32) -> String { + public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func MessageTimer_ShortHours(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Hours(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusSubscribers(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedFiles(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSimple(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue) - } - public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortMinutes(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_ShortSeconds(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedAudios(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_DeleteConfirmation(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Passport_Scans(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Invitation_Members(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) - } - public func InviteText_ContactsCountText(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, stringValue) } public func Conversation_StatusOnline(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func AttachmentMenu_SendGif(_ value: Int32) -> String { + public func MuteExpires_Days(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func LastSeen_MinutesAgo(_ value: Int32) -> String { + public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, stringValue) } - public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { + public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func SharedMedia_Video(_ value: Int32) -> String { + public func Notifications_Exceptions(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func MessagePoll_VotedCount(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_UserInfo_Mute(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { - let form = presentationStringsPluralizationForm(self.lc, selector) - return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, _0, _1) - } - public func SharedMedia_File(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedPhotos(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_SharePhoto(_ value: Int32) -> String { - let form = presentationStringsPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) } public func GroupInfo_ParticipantCount(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func ForwardedVideoMessages(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedPhotos(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortMinutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Call_ShortMinutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Map_ETAMinutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_ShortSeconds(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Months(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Video(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedPolls(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_AddStickerCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteFor_Days(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Minutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedLocations(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedContacts(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, _0, _1) + } + public func MessageTimer_Weeks(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func ForwardedVideos(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func MuteFor_Hours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_SelectedChats(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Map_ETAHours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_Seconds(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_ShareItem(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSimple(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Passport_Scans(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendItem(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_Minutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedStickers(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Hours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Link(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Minutes(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Years(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) + } + public func QuickSend_Photos(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func MessageTimer_ShortSeconds(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Photo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreExtended(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_File(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusMembers(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, selector) + return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func InviteText_ContactsCountText(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) + } + public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue) + } + public func UserCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedMessages(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendGif(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Hours(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_SharePhoto(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortDays(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_DeleteConfirmation(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Days(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_UserInfo_Mute(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Generic(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusSubscribers(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue) } public func AttachmentMenu_SendVideo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_AddMaskCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Contacts_ImportersCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedGifs(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Seconds(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue) + } + public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortWeeks(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LastSeen_HoursAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedFiles(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Media_ShareVideo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedAudios(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessagePoll_VotedCount(_ value: Int32) -> String { + let form = presentationStringsPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Invitation_Members(_ value: Int32) -> String { let form = presentationStringsPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, stringValue) diff --git a/submodules/TelegramUI/TelegramUI/ChatRecentActionsControllerNode.swift b/submodules/TelegramUI/TelegramUI/ChatRecentActionsControllerNode.swift index 71a6fcb284..94cd2df416 100644 --- a/submodules/TelegramUI/TelegramUI/ChatRecentActionsControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatRecentActionsControllerNode.swift @@ -394,7 +394,7 @@ final class ChatRecentActionsControllerNode: ViewControllerTracingNode { }, requestMessageUpdate: { _ in }, cancelInteractiveKeyboardGestures: { }, automaticMediaDownloadSettings: self.automaticMediaDownloadSettings, - pollActionState: ChatInterfacePollActionState()) + pollActionState: ChatInterfacePollActionState(), stickerSettings: ChatInterfaceStickerSettings(loopAnimatedStickers: false)) self.controllerInteraction = controllerInteraction self.listNode.displayedItemRangeChanged = { [weak self] displayedRange, opaqueTransactionState in diff --git a/submodules/TelegramUI/TelegramUI/Resources/PresentationStrings.mapping b/submodules/TelegramUI/TelegramUI/Resources/PresentationStrings.mapping index d1e1106e985b472ca36a2ed9438ef747b7265552..2946ef19a3bb6cd1ba5bff4fad5b40cf040416bc 100644 GIT binary patch delta 35720 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

i0)x_)50j!qIPN2-YV(7u^+XGxZ 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

L8b9<^zA9Sf7S>6AcVA;Cu5mu7YC zUGs9=&sYx0I8Qs^gEy&>>5KvupXm>vl|@8s4sQ5 zX-O~b7!Uu)^qYnpiPh@c<5+i$0!0s;KE_pg5+5Jqk^2-ugqo$`u@}ORE3ckC*(Aq^ zKBfA~b)4?N%U5%jX9)!*csD!WxAKI z5j)YyPE+xRIvE_Zk zZA`zj39HfWFUq0|Pm|hS!OqjFUDOBy%AU$G!J|-OgpJESjSGB6+K@Pc{;@$S26i4sdEa}pC!mtoH|Q(HjS@}Z>)=epU%>lI-N~4fpqY<(VRYy z9tX|evXJ~1mna*f-XaR+Vm>e3qi=Q7TU@X_oO_FWZ5AIiB6Wrje8$L*&xiFK8P9BV zI!C#B4o03+alvy5C(Oh}Weix*q&yE>&#Cy(`Ro-OY{vW>qk|UUi*u?sh0f6Pbc_|? z@$=k)Lc&MO4rsx#$Re>PwR9#g#S^s@FqW~^?u<0sTe)l$%MB_ktEKe30{dz?g_Rmc$ok7#lH)3T z&nIcQYgMO0LQ2`G4>N8&<0$f(#5U2m)^9CR>L>%1VN@OQq#VU{d}#$%hS@`6HKN4-DeESb{m`(qo3Lz4o+qwf<5Dv%;Sy8JbgW87E2LdkK@ugS zzsvnLiM*y+_HI21%IZ{sfhiJyqD4S1fu5N}L-*5#J@b;}#-2P`nE&@~SE{KmN-isZ zPh-A*xOSO>e{0zIrF0hZOCpWw2vNzZxaZNxq3GV>^Ug6(njgss@X+}S5%Rra8J?6hl9?=0Q4YUb#MAb#&O(HTc5d)KCYwa!dQ^`n|ZSEv^5y6n2NLi~c z$bE;QOIpndh3QK(5as9ds3sL#lVcG2oQXu3(^Z&~u@Xesp62g#Rs%B0Hov_&B zmG`s+KEojd!`&DtJhLBey-n$&KXFRxE)l0%^_BVcW3?En`V*ez0~#Tkk%Vhi2Cz#) z6&@l;z3c-$^a(EopyL=vBbNxt4S>%PSSZOo0qp^Qo-LtzVO%)-0(R9??n{&1vRhp* z8$_r`iKGhknlM2YI&UyW5o38K`n;opgNLwRaLhfnzC$)|DCS<{UT1hX#~$-%)Y0_@ zlI4q-Ex0rsVHe5mU&1F>$orWjd713(Wn8$RB73~Tp=7O^>%kc#*q|fM9D#{Ja&?-)5k^;KW3nf0wi{3B^}bP_U%KJhUnXt-gvU bu8|O?AnF>)XDX&#q#ij Date: Wed, 17 Jul 2019 14:00:43 +0200 Subject: [PATCH 18/19] - fixes for slowmode --- .../AccountStateManagementUtils.swift | 22 +++++++++++++++++++ .../TelegramCore/ApplyUpdateMessage.swift | 15 +++++++++++++ .../TelegramCore/TelegramCore/SlowMode.swift | 7 ++---- 3 files changed, 39 insertions(+), 5 deletions(-) diff --git a/submodules/TelegramCore/TelegramCore/AccountStateManagementUtils.swift b/submodules/TelegramCore/TelegramCore/AccountStateManagementUtils.swift index 11a193fa6d..6b70dacb3f 100644 --- a/submodules/TelegramCore/TelegramCore/AccountStateManagementUtils.swift +++ b/submodules/TelegramCore/TelegramCore/AccountStateManagementUtils.swift @@ -2075,6 +2075,7 @@ func replayFinalState(accountManager: AccountManager, postbox: Postbox, accountP var isContactUpdates: [(PeerId, Bool)] = [] var stickerPackOperations: [AccountStateUpdateStickerPacksOperation] = [] var recentlyUsedStickers: [MediaId: (MessageIndex, TelegramMediaFile)] = [:] + var slowModeLastMessageTimeouts:[PeerId : Int32] = [:] var recentlyUsedGifs: [MediaId: (MessageIndex, TelegramMediaFile)] = [:] var syncRecentGifs = false var langPackDifferences: [String: [Api.LangPackDifference]] = [:] @@ -2181,6 +2182,11 @@ func replayFinalState(accountManager: AccountManager, postbox: Postbox, accountP } } } + if !message.flags.contains(.Incoming) && !message.flags.contains(.Unsent) { + if message.id.peerId.namespace == Namespaces.Peer.CloudChannel { + slowModeLastMessageTimeouts[message.id.peerId] = max(slowModeLastMessageTimeouts[message.id.peerId] ?? 0, message.timestamp) + } + } if !message.flags.contains(.Incoming), message.forwardInfo == nil { inner: for media in message.media { @@ -2713,6 +2719,22 @@ func replayFinalState(accountManager: AccountManager, postbox: Postbox, accountP } } + if !slowModeLastMessageTimeouts.isEmpty { + var peerIds:Set = Set() + var cachedDatas:[PeerId : CachedChannelData] = [:] + for (peerId, timeout) in slowModeLastMessageTimeouts { + var cachedData = transaction.getPeerCachedData(peerId: peerId) as? CachedChannelData ?? CachedChannelData() + if let slowModeTimeout = cachedData.slowModeTimeout { + cachedData = cachedData.withUpdatedSlowModeValidUntilTimestamp(slowModeValidUntilTimestamp: timeout + slowModeTimeout) + peerIds.insert(peerId) + cachedDatas[peerId] = cachedData + } + } + transaction.updatePeerCachedData(peerIds: peerIds, update: { peerId, current in + return cachedDatas[peerId] ?? current + }) + } + if syncRecentGifs { addSynchronizeSavedGifsOperation(transaction: transaction, operation: .sync) } else { diff --git a/submodules/TelegramCore/TelegramCore/ApplyUpdateMessage.swift b/submodules/TelegramCore/TelegramCore/ApplyUpdateMessage.swift index 48bb0cb376..cc3125d507 100644 --- a/submodules/TelegramCore/TelegramCore/ApplyUpdateMessage.swift +++ b/submodules/TelegramCore/TelegramCore/ApplyUpdateMessage.swift @@ -165,6 +165,20 @@ func applyUpdateMessage(postbox: Postbox, stateManager: AccountStateManager, mes let (tags, globalTags) = tagsForStoreMessage(incoming: currentMessage.flags.contains(.Incoming), attributes: attributes, media: media, textEntities: entitiesAttribute?.entities) + if currentMessage.id.peerId.namespace == Namespaces.Peer.CloudChannel, !currentMessage.flags.contains(.Incoming) { + let peerId = currentMessage.id.peerId + transaction.updatePeerCachedData(peerIds: [peerId], update: { peerId, current in + var cachedData = current as? CachedChannelData ?? CachedChannelData() + if let slowModeTimeout = cachedData.slowModeTimeout { + cachedData = cachedData.withUpdatedSlowModeValidUntilTimestamp(slowModeValidUntilTimestamp: currentMessage.timestamp + slowModeTimeout) + return cachedData + } else { + return current + } + }) + } + + return .update(StoreMessage(id: updatedId, globallyUniqueId: nil, groupingKey: currentMessage.groupingKey, timestamp: updatedTimestamp ?? currentMessage.timestamp, flags: [], tags: tags, globalTags: globalTags, localTags: currentMessage.localTags, forwardInfo: forwardInfo, authorId: currentMessage.author?.id, text: text, attributes: attributes, media: media)) }) for file in sentStickers { @@ -173,6 +187,7 @@ func applyUpdateMessage(postbox: Postbox, stateManager: AccountStateManager, mes for file in sentGifs { transaction.addOrMoveToFirstPositionOrderedItemListItem(collectionId: Namespaces.OrderedItemList.CloudRecentGifs, item: OrderedItemListEntry(id: RecentMediaItemId(file.fileId).rawValue, contents: RecentMediaItem(file)), removeTailIfCountExceeds: 200) } + stateManager.addUpdates(result) } } diff --git a/submodules/TelegramCore/TelegramCore/SlowMode.swift b/submodules/TelegramCore/TelegramCore/SlowMode.swift index 384272292d..8bb61e5154 100644 --- a/submodules/TelegramCore/TelegramCore/SlowMode.swift +++ b/submodules/TelegramCore/TelegramCore/SlowMode.swift @@ -30,11 +30,8 @@ public func updateChannelSlowModeInteractively(postbox: Postbox, network: Networ accountStateManager.addUpdates(updates) return postbox.transaction { transaction -> Void in transaction.updatePeerCachedData(peerIds: [peerId], update: { peerId, currentData in - if let currentData = currentData as? CachedChannelData { - return currentData.withUpdatedSlowModeTimeout(slowModeTimeout: timeout) - } else { - return currentData - } + let currentData = currentData as? CachedChannelData ?? CachedChannelData() + return currentData.withUpdatedSlowModeTimeout(slowModeTimeout: timeout) }) } |> introduceError(UpdateChannelSlowModeError.self) From 72dd8f1151cfd34e40ef4cf3986a8b2dd42eeb23 Mon Sep 17 00:00:00 2001 From: overtake <> Date: Wed, 17 Jul 2019 16:45:43 +0200 Subject: [PATCH 19/19] - slow mode api changes --- submodules/TelegramCore/TelegramCore/ApiGroupOrChannel.swift | 5 ++++- submodules/TelegramCore/TelegramCore/TelegramChannel.swift | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/submodules/TelegramCore/TelegramCore/ApiGroupOrChannel.swift b/submodules/TelegramCore/TelegramCore/ApiGroupOrChannel.swift index 66a729e1ff..02e1cbf52f 100644 --- a/submodules/TelegramCore/TelegramCore/ApiGroupOrChannel.swift +++ b/submodules/TelegramCore/TelegramCore/ApiGroupOrChannel.swift @@ -73,7 +73,10 @@ func parseTelegramGroupOrChannel(chat: Api.Chat) -> Peer? { let info: TelegramChannelInfo if (flags & Int32(1 << 8)) != 0 { - let infoFlags = TelegramChannelGroupFlags() + var infoFlags = TelegramChannelGroupFlags() + if (flags & Int32(1 << 22)) != 0 { + infoFlags.insert(.isEnabledSlowMode) + } info = .group(TelegramChannelGroupInfo(flags: infoFlags)) } else { var infoFlags = TelegramChannelBroadcastFlags() diff --git a/submodules/TelegramCore/TelegramCore/TelegramChannel.swift b/submodules/TelegramCore/TelegramCore/TelegramChannel.swift index ee405845eb..06213c481b 100644 --- a/submodules/TelegramCore/TelegramCore/TelegramChannel.swift +++ b/submodules/TelegramCore/TelegramCore/TelegramChannel.swift @@ -72,6 +72,7 @@ public struct TelegramChannelGroupFlags: OptionSet { public init(rawValue: Int32) { self.rawValue = rawValue } + public static let isEnabledSlowMode = TelegramChannelGroupFlags(rawValue: 1 << 0) } public struct TelegramChannelGroupInfo: Equatable {