From e085de4de5a84ebcd15385196977b752ef1231f1 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Wed, 10 Jun 2020 01:19:12 +0300 Subject: [PATCH] Send live photos as gifs --- .../Telegram-iOS/en.lproj/Localizable.strings | 2 + .../Sources/Node/ChatListItemStrings.swift | 1 + .../Sources/GalleryControllerNode.swift | 6 + .../GalleryUI/Sources/GalleryItemNode.swift | 1 + .../Items/UniversalVideoGalleryItem.swift | 9 + .../Editor/Gif.imageset/Contents.json | 12 + .../Editor/Gif.imageset/ic_gif.pdf | Bin 0 -> 4446 bytes .../LegacyComponents/TGCameraCapturedVideo.h | 2 +- .../TGMediaPickerGalleryVideoItemView.h | 3 + .../TGPhotoEditorInterfaceAssets.h | 2 + .../Sources/TGCameraCapturedVideo.m | 60 +- .../Sources/TGMediaAssetModernImageSignals.m | 43 +- .../Sources/TGMediaAssetsController.m | 86 +- .../TGMediaPickerGalleryInterfaceView.m | 26 +- .../Sources/TGMediaPickerGalleryModel.m | 12 +- .../TGMediaPickerGalleryVideoItemView.m | 105 +- .../Sources/TGMediaPickerModernGalleryMixin.m | 12 +- .../Sources/TGPhotoEditorInterfaceAssets.m | 14 +- .../Sources/TelegramBaseController.swift | 2 +- .../TelegramCore/Sources/PeersNearby.swift | 2 +- .../Sources/PresentationStrings.swift | 1839 +++++++++-------- .../Resources/PresentationStrings.mapping | Bin 150730 -> 150765 bytes .../TelegramUI/Sources/ChatController.swift | 2 +- .../PeerInfo/Panes/PeerInfoListPaneNode.swift | 2 +- .../Sources/LegacyWebSearchGallery.swift | 41 +- 25 files changed, 1250 insertions(+), 1034 deletions(-) create mode 100644 submodules/LegacyComponents/LegacyImages.xcassets/Editor/Gif.imageset/Contents.json create mode 100644 submodules/LegacyComponents/LegacyImages.xcassets/Editor/Gif.imageset/ic_gif.pdf diff --git a/Telegram/Telegram-iOS/en.lproj/Localizable.strings b/Telegram/Telegram-iOS/en.lproj/Localizable.strings index 63a6c83733..c0840b9883 100644 --- a/Telegram/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram/Telegram-iOS/en.lproj/Localizable.strings @@ -5538,3 +5538,5 @@ Any member of this group will be able to see messages in the channel."; "Conversation.PrivateChannelTimeLimitedAlertTitle" = "Join Channel"; "Conversation.PrivateChannelTimeLimitedAlertText" = "This channel is private. Please join it to continue viewing its content."; "Conversation.PrivateChannelTimeLimitedAlertJoin" = "Join"; + +"KeyCommand.SearchInChat" = "Search in Chat"; diff --git a/submodules/ChatListUI/Sources/Node/ChatListItemStrings.swift b/submodules/ChatListUI/Sources/Node/ChatListItemStrings.swift index 24fcb85727..2bca3e7095 100644 --- a/submodules/ChatListUI/Sources/Node/ChatListItemStrings.swift +++ b/submodules/ChatListUI/Sources/Node/ChatListItemStrings.swift @@ -101,6 +101,7 @@ public func chatListItemStrings(strings: PresentationStrings, nameDisplayOrder: case let .Audio(isVoice, _, title, performer, _): if !message.text.isEmpty { messageText = "🎤 \(messageText)" + processed = true } else if isVoice { if message.text.isEmpty { messageText = strings.Message_Audio diff --git a/submodules/GalleryUI/Sources/GalleryControllerNode.swift b/submodules/GalleryUI/Sources/GalleryControllerNode.swift index 5409b07a5b..9f7895cdeb 100644 --- a/submodules/GalleryUI/Sources/GalleryControllerNode.swift +++ b/submodules/GalleryUI/Sources/GalleryControllerNode.swift @@ -417,6 +417,12 @@ open class GalleryControllerNode: ASDisplayNode, UIScrollViewDelegate, UIGesture } } + if velocity.y > 0.0 || distanceFromEquilibrium > 0.0, let centralItemNode = self.pager.centralItemNode() { + if centralItemNode.alternativeDismiss() { + return + } + } + if let centralItemNode = self.pager.centralItemNode(), let (transitionNodeForCentralItem, addToTransitionSurface) = self.transitionDataForCentralItem?(), let node = transitionNodeForCentralItem { contentAnimationCompleted = false centralItemNode.animateOut(to: node, addToTransitionSurface: addToTransitionSurface, completion: { diff --git a/submodules/GalleryUI/Sources/GalleryItemNode.swift b/submodules/GalleryUI/Sources/GalleryItemNode.swift index 8df3a446c7..ef8c2cb7a4 100644 --- a/submodules/GalleryUI/Sources/GalleryItemNode.swift +++ b/submodules/GalleryUI/Sources/GalleryItemNode.swift @@ -25,6 +25,7 @@ open class GalleryItemNode: ASDisplayNode { public var beginCustomDismiss: () -> Void = { } public var completeCustomDismiss: () -> Void = { } public var baseNavigationController: () -> NavigationController? = { return nil } + public var alternativeDismiss: () -> Bool = { return false } override public init() { super.init() diff --git a/submodules/GalleryUI/Sources/Items/UniversalVideoGalleryItem.swift b/submodules/GalleryUI/Sources/Items/UniversalVideoGalleryItem.swift index 910c6d3339..1b01773fe1 100644 --- a/submodules/GalleryUI/Sources/Items/UniversalVideoGalleryItem.swift +++ b/submodules/GalleryUI/Sources/Items/UniversalVideoGalleryItem.swift @@ -401,6 +401,15 @@ final class UniversalVideoGalleryItemNode: ZoomableContentGalleryItemNode { strongSelf.footerContentNode.setFramePreviewImage(image: nil) } }) + + self.alternativeDismiss = { [weak self] in + guard let strongSelf = self else { + return false + } + + strongSelf.pictureInPictureButtonPressed() + return true + } } deinit { diff --git a/submodules/LegacyComponents/LegacyImages.xcassets/Editor/Gif.imageset/Contents.json b/submodules/LegacyComponents/LegacyImages.xcassets/Editor/Gif.imageset/Contents.json new file mode 100644 index 0000000000..87e1dd38dd --- /dev/null +++ b/submodules/LegacyComponents/LegacyImages.xcassets/Editor/Gif.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_gif.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/submodules/LegacyComponents/LegacyImages.xcassets/Editor/Gif.imageset/ic_gif.pdf b/submodules/LegacyComponents/LegacyImages.xcassets/Editor/Gif.imageset/ic_gif.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e81291a423c8e158ab4bbd98c17d5502bfef233c GIT binary patch literal 4446 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 aAM(cz^2SqZ`E#LVVRA^Yh=``X7WiMQ0=+r_ literal 0 HcmV?d00001 diff --git a/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGCameraCapturedVideo.h b/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGCameraCapturedVideo.h index 5385d683ac..66c8693b26 100644 --- a/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGCameraCapturedVideo.h +++ b/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGCameraCapturedVideo.h @@ -15,7 +15,7 @@ - (instancetype)initWithURL:(NSURL *)url; -- (instancetype)initWithAsset:(TGMediaAsset *)asset; +- (instancetype)initWithAsset:(TGMediaAsset *)asset livePhoto:(bool)livePhoto; - (void)_cleanUp; diff --git a/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGMediaPickerGalleryVideoItemView.h b/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGMediaPickerGalleryVideoItemView.h index 2805a35302..fefbd2433b 100644 --- a/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGMediaPickerGalleryVideoItemView.h +++ b/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGMediaPickerGalleryVideoItemView.h @@ -4,6 +4,7 @@ #import @class TGPhotoEntitiesContainerView; +@protocol TGMediaEditableItem; @interface TGMediaPickerGalleryVideoItemView : TGModernGalleryItemView @@ -35,4 +36,6 @@ - (CGRect)editorTransitionViewRect; - (TGPhotoEntitiesContainerView *)entitiesView; +- (id)editableMediaItem; + @end diff --git a/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGPhotoEditorInterfaceAssets.h b/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGPhotoEditorInterfaceAssets.h index 7708afa843..1c10e40842 100644 --- a/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGPhotoEditorInterfaceAssets.h +++ b/submodules/LegacyComponents/PublicHeaders/LegacyComponents/TGPhotoEditorInterfaceAssets.h @@ -27,6 +27,8 @@ + (UIImage *)gifBackgroundImage; + (UIImage *)gifIcon; + (UIImage *)gifActiveIcon; ++ (UIImage *)muteIcon; ++ (UIImage *)muteActiveIcon; + (UIImage *)qualityIconForPreset:(TGMediaVideoConversionPreset)preset; + (UIImage *)timerIconForValue:(NSInteger)value; + (UIImage *)eraserIcon; diff --git a/submodules/LegacyComponents/Sources/TGCameraCapturedVideo.m b/submodules/LegacyComponents/Sources/TGCameraCapturedVideo.m index 00aacb60a7..45284ba873 100644 --- a/submodules/LegacyComponents/Sources/TGCameraCapturedVideo.m +++ b/submodules/LegacyComponents/Sources/TGCameraCapturedVideo.m @@ -16,15 +16,22 @@ NSTimeInterval _cachedDuration; AVURLAsset *_cachedAVAsset; + bool _livePhoto; } @end @implementation TGCameraCapturedVideo + (NSURL *)videoURLForAsset:(TGMediaAsset *)asset { - NSURL *convertedGifsUrl = [NSURL fileURLWithPath:[[[LegacyComponentsGlobals provider] dataStoragePath] stringByAppendingPathComponent:@"convertedGifs"]]; - [[NSFileManager defaultManager] createDirectoryAtPath:convertedGifsUrl.path withIntermediateDirectories:true attributes:nil error:nil]; - return [convertedGifsUrl URLByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp4", [TGStringUtils md5:asset.identifier]]]; + if (asset.type == TGMediaAssetGifType) { + NSURL *convertedGifsUrl = [NSURL fileURLWithPath:[[[LegacyComponentsGlobals provider] dataStoragePath] stringByAppendingPathComponent:@"convertedGifs"]]; + [[NSFileManager defaultManager] createDirectoryAtPath:convertedGifsUrl.path withIntermediateDirectories:true attributes:nil error:nil]; + return [convertedGifsUrl URLByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp4", [TGStringUtils md5:asset.identifier]]]; + } else { + NSURL *convertedLivePhotosUrl = [NSURL fileURLWithPath:[[[LegacyComponentsGlobals provider] dataStoragePath] stringByAppendingPathComponent:@"convertedLivePhotos"]]; + [[NSFileManager defaultManager] createDirectoryAtPath:convertedLivePhotosUrl.path withIntermediateDirectories:true attributes:nil error:nil]; + return [convertedLivePhotosUrl URLByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp4", [TGStringUtils md5:asset.identifier]]]; + } } - (instancetype)initWithURL:(NSURL *)url @@ -39,12 +46,13 @@ return self; } -- (instancetype)initWithAsset:(TGMediaAsset *)asset +- (instancetype)initWithAsset:(TGMediaAsset *)asset livePhoto:(bool)livePhoto { self = [super init]; if (self != nil) { _originalAsset = asset; + _livePhoto = livePhoto; _cachedSize = CGSizeZero; _cachedDuration = 0.0; @@ -71,30 +79,46 @@ - (AVAsset *)immediateAVAsset { return _cachedAVAsset; } + - (SSignal *)avAsset { if (_originalAsset != nil) { if (_cachedAVAsset != nil) { return [SSignal single:_cachedAVAsset]; } else { NSURL *videoUrl = [TGCameraCapturedVideo videoURLForAsset:_originalAsset]; - return [[TGMediaAssetImageSignals imageDataForAsset:_originalAsset allowNetworkAccess:false] mapToSignal:^SSignal *(TGMediaAssetImageData *assetData) { - NSData *data = assetData.imageData; - - const char *gif87Header = "GIF87"; - const char *gif89Header = "GIF89"; - if (data.length >= 5 && (!memcmp(data.bytes, gif87Header, 5) || !memcmp(data.bytes, gif89Header, 5))) - { - return [[TGGifConverter convertGifToMp4:data] map:^id(NSDictionary *result) - { - NSString *filePath = result[@"path"]; - [[NSFileManager defaultManager] moveItemAtPath:filePath toPath:videoUrl.path error:nil]; + if ([[NSFileManager defaultManager] fileExistsAtPath:videoUrl.path isDirectory:nil]) { + _cachedAVAsset = [AVURLAsset assetWithURL:videoUrl]; + return [SSignal single:_cachedAVAsset]; + } else { + if (_originalAsset.type == TGMediaAssetGifType) { + return [[[TGMediaAssetImageSignals imageDataForAsset:_originalAsset allowNetworkAccess:false] mapToSignal:^SSignal *(TGMediaAssetImageData *assetData) { + NSData *data = assetData.imageData; - return [AVURLAsset assetWithURL:videoUrl]; + const char *gif87Header = "GIF87"; + const char *gif89Header = "GIF89"; + if (data.length >= 5 && (!memcmp(data.bytes, gif87Header, 5) || !memcmp(data.bytes, gif89Header, 5))) + { + return [[TGGifConverter convertGifToMp4:data] map:^id(NSDictionary *result) + { + NSString *filePath = result[@"path"]; + [[NSFileManager defaultManager] moveItemAtPath:filePath toPath:videoUrl.path error:nil]; + + return [AVURLAsset assetWithURL:videoUrl]; + }]; + } else { + return [SSignal complete]; + } + }] onNext:^(id next) { + _cachedAVAsset = next; }]; } else { - return [SSignal complete]; + return [[[TGMediaAssetImageSignals avAssetForVideoAsset:_originalAsset allowNetworkAccess:false] mapToSignal:^SSignal *(AVURLAsset *asset) { + return [SSignal single:asset]; + }] onNext:^(id next) { + _cachedAVAsset = next; + }]; } - }]; + } } } else { return [SSignal single:_cachedAVAsset]; diff --git a/submodules/LegacyComponents/Sources/TGMediaAssetModernImageSignals.m b/submodules/LegacyComponents/Sources/TGMediaAssetModernImageSignals.m index fcdd71cea9..2abd400f16 100644 --- a/submodules/LegacyComponents/Sources/TGMediaAssetModernImageSignals.m +++ b/submodules/LegacyComponents/Sources/TGMediaAssetModernImageSignals.m @@ -2,6 +2,7 @@ #import "LegacyComponentsInternal.h" #import "TGImageUtils.h" +#import "TGStringUtils.h" #import #import @@ -770,21 +771,27 @@ if (videoResource != nil) { - NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.mov", [NSString stringWithFormat:@"%.0f", [[NSDate date] timeIntervalSince1970]]]]; - NSURL *fileUrl = [NSURL fileURLWithPath:filePath]; + NSURL *convertedLivePhotosUrl = [NSURL fileURLWithPath:[[[LegacyComponentsGlobals provider] dataStoragePath] stringByAppendingPathComponent:@"convertedLivePhotos"]]; + [[NSFileManager defaultManager] createDirectoryAtPath:convertedLivePhotosUrl.path withIntermediateDirectories:true attributes:nil error:nil]; + NSURL *fileUrl = [convertedLivePhotosUrl URLByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp4", [TGStringUtils md5:asset.identifier]]]; - [[PHAssetResourceManager defaultManager] writeDataForAssetResource:videoResource toFile:fileUrl options:nil completionHandler:^(NSError * _Nullable error) - { - if (error == nil) - { - [subscriber putNext:[[AVPlayerItem alloc] initWithURL:fileUrl]]; - [subscriber putCompletion]; - } - else - { - [subscriber putError:nil]; - } - }]; + if ([[NSFileManager defaultManager] fileExistsAtPath:fileUrl.path isDirectory:nil]) { + [subscriber putNext:[[AVPlayerItem alloc] initWithURL:fileUrl]]; + [subscriber putCompletion]; + } else { + [[PHAssetResourceManager defaultManager] writeDataForAssetResource:videoResource toFile:fileUrl options:nil completionHandler:^(NSError * _Nullable error) + { + if (error == nil) + { + [subscriber putNext:[[AVPlayerItem alloc] initWithURL:fileUrl]]; + [subscriber putCompletion]; + } + else + { + [subscriber putError:nil]; + } + }]; + } } else { @@ -850,9 +857,11 @@ if (processLive) { - NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.mov", asset.identifier]]; - NSURL *fileUrl = [NSURL fileURLWithPath:filePath]; - if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) + NSURL *convertedLivePhotosUrl = [NSURL fileURLWithPath:[[[LegacyComponentsGlobals provider] dataStoragePath] stringByAppendingPathComponent:@"convertedLivePhotos"]]; + [[NSFileManager defaultManager] createDirectoryAtPath:convertedLivePhotosUrl.path withIntermediateDirectories:true attributes:nil error:nil]; + NSURL *fileUrl = [convertedLivePhotosUrl URLByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp4", [TGStringUtils md5:asset.identifier]]]; + + if ([[NSFileManager defaultManager] fileExistsAtPath:fileUrl.path]) { [subscriber putNext:[[AVURLAsset alloc] initWithURL:fileUrl options:nil]]; [subscriber putCompletion]; diff --git a/submodules/LegacyComponents/Sources/TGMediaAssetsController.m b/submodules/LegacyComponents/Sources/TGMediaAssetsController.m index 0053a35a4f..920ee4ff2d 100644 --- a/submodules/LegacyComponents/Sources/TGMediaAssetsController.m +++ b/submodules/LegacyComponents/Sources/TGMediaAssetsController.m @@ -773,25 +773,77 @@ SSignal *imageSignal = assetSignal; if (adjustments.sendAsGif) { - [signals addObject:[inlineThumbnailSignal(asset) map:^NSDictionary *(UIImage *image) + NSTimeInterval trimStartValue = 0.0; + if ([adjustments isKindOfClass:[TGVideoEditAdjustments class]]) { + TGVideoEditAdjustments *videoAdjustments = (TGVideoEditAdjustments *)adjustments; + trimStartValue = videoAdjustments.trimStartValue; + } + + UIImage *(^cropVideoThumbnail)(UIImage *, CGSize, CGSize, bool) = ^UIImage *(UIImage *image, CGSize targetSize, CGSize sourceSize, bool resize) { - NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; - dict[@"type"] = @"cloudPhoto"; - dict[@"previewImage"] = image; - dict[@"livePhoto"] = @true; - dict[@"asset"] = asset; - dict[@"adjustments"] = adjustments; + if ([adjustments cropAppliedForAvatar:false] || adjustments.hasPainting || adjustments.toolsApplied) + { + CGRect scaledCropRect = CGRectMake(adjustments.cropRect.origin.x * image.size.width / adjustments.originalSize.width, adjustments.cropRect.origin.y * image.size.height / adjustments.originalSize.height, adjustments.cropRect.size.width * image.size.width / adjustments.originalSize.width, adjustments.cropRect.size.height * image.size.height / adjustments.originalSize.height); + UIImage *paintingImage = adjustments.paintingData.stillImage; + if (paintingImage == nil) { + paintingImage = adjustments.paintingData.image; + } + if (adjustments.toolsApplied) { + image = [PGPhotoEditor resultImageForImage:image adjustments:adjustments]; + } + return TGPhotoEditorCrop(image, paintingImage, adjustments.cropOrientation, 0, scaledCropRect, adjustments.cropMirrored, targetSize, sourceSize, resize); + } - if (adjustments.paintingData.stickers.count > 0) - dict[@"stickers"] = adjustments.paintingData.stickers; - - if (timer != nil) - dict[@"timer"] = timer; - else if (groupedId != nil && !hasAnyTimers) - dict[@"groupedId"] = groupedId; - - id generatedItem = descriptionGenerator(dict, caption, entities, nil); - return generatedItem; + return image; + }; + + SSignal *trimmedVideoThumbnailSignal = [[TGMediaAssetImageSignals avAssetForVideoAsset:asset allowNetworkAccess:false] mapToSignal:^SSignal *(AVAsset *avAsset) + { + CGSize imageSize = TGFillSize(asset.dimensions, CGSizeMake(512, 512)); + return [[TGMediaAssetImageSignals videoThumbnailForAVAsset:avAsset size:imageSize timestamp:CMTimeMakeWithSeconds(trimStartValue, NSEC_PER_SEC)] map:^UIImage *(UIImage *image) + { + return cropVideoThumbnail(image, TGScaleToFill(asset.dimensions, CGSizeMake(512, 512)), asset.dimensions, true); + }]; + }]; + + SSignal *videoThumbnailSignal = [inlineThumbnailSignal(asset) map:^UIImage *(UIImage *image) + { + return cropVideoThumbnail(image, image.size, image.size, false); + }]; + + SSignal *thumbnailSignal = trimStartValue > FLT_EPSILON ? trimmedVideoThumbnailSignal : videoThumbnailSignal; + + TGMediaVideoConversionPreset preset = [TGMediaVideoConverter presetFromAdjustments:adjustments]; + CGSize dimensions = [TGMediaVideoConverter dimensionsFor:asset.originalSize adjustments:adjustments preset:preset]; + + TGCameraCapturedVideo *videoAsset = [[TGCameraCapturedVideo alloc] initWithAsset:asset livePhoto:true]; + [signals addObject:[thumbnailSignal mapToSignal:^SSignal *(UIImage *image) + { + return [videoAsset.avAsset map:^id(AVURLAsset *avAsset) { + NSTimeInterval duration = CMTimeGetSeconds(avAsset.duration); + if ([adjustments isKindOfClass:[TGVideoEditAdjustments class]]) { + TGVideoEditAdjustments *videoAdjustments = (TGVideoEditAdjustments *)adjustments; + duration = videoAdjustments.trimApplied ? (videoAdjustments.trimEndValue - videoAdjustments.trimStartValue) : duration; + } + + NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; + dict[@"type"] = @"cameraVideo"; + dict[@"url"] = avAsset.URL; + dict[@"previewImage"] = image; + dict[@"duration"] = @(duration); + dict[@"dimensions"] = [NSValue valueWithCGSize:dimensions]; + dict[@"adjustments"] = adjustments; + + if (adjustments.paintingData.stickers.count > 0) + dict[@"stickers"] = adjustments.paintingData.stickers; + if (timer != nil) + dict[@"timer"] = timer; + else if (groupedId != nil && !hasAnyTimers) + dict[@"groupedId"] = groupedId; + + id generatedItem = descriptionGenerator(dict, caption, entities, nil); + return generatedItem; + }]; }]]; } else diff --git a/submodules/LegacyComponents/Sources/TGMediaPickerGalleryInterfaceView.m b/submodules/LegacyComponents/Sources/TGMediaPickerGalleryInterfaceView.m index 638486cb1a..60ec2130fa 100644 --- a/submodules/LegacyComponents/Sources/TGMediaPickerGalleryInterfaceView.m +++ b/submodules/LegacyComponents/Sources/TGMediaPickerGalleryInterfaceView.m @@ -159,9 +159,9 @@ _muteButton.hidden = true; _muteButton.adjustsImageWhenHighlighted = false; [_muteButton setBackgroundImage:[TGPhotoEditorInterfaceAssets gifBackgroundImage] forState:UIControlStateNormal]; - [_muteButton setImage:[TGPhotoEditorInterfaceAssets gifIcon] forState:UIControlStateNormal]; - [_muteButton setImage:[TGPhotoEditorInterfaceAssets gifActiveIcon] forState:UIControlStateSelected]; - [_muteButton setImage:[TGPhotoEditorInterfaceAssets gifActiveIcon] forState:UIControlStateSelected | UIControlStateHighlighted]; + [_muteButton setImage:[TGPhotoEditorInterfaceAssets muteIcon] forState:UIControlStateNormal]; + [_muteButton setImage:[TGPhotoEditorInterfaceAssets muteActiveIcon] forState:UIControlStateSelected]; + [_muteButton setImage:[TGPhotoEditorInterfaceAssets muteActiveIcon] forState:UIControlStateSelected | UIControlStateHighlighted]; [_muteButton addTarget:self action:@selector(toggleSendAsGif) forControlEvents:UIControlEventTouchUpInside]; [_wrapperView addSubview:_muteButton]; @@ -574,8 +574,6 @@ [strongSelf->_portraitToolbarView setEditButtonsEnabled:available animated:true]; [strongSelf->_landscapeToolbarView setEditButtonsEnabled:available animated:true]; - - bool sendableAsGif = !strongSelf->_inhibitMute && [strongItemView isKindOfClass:[TGMediaPickerGalleryVideoItemView class]]; if ([strongSelf->_currentItem isKindOfClass:[TGMediaPickerGalleryVideoItem class]]) { TGMediaPickerGalleryVideoItem *item = (TGMediaPickerGalleryVideoItem *)strongSelf->_currentItem; @@ -586,6 +584,22 @@ strongSelf->_muteButton.hidden = !sendableAsGif; } }]]; + + UIImage *muteIcon = [TGPhotoEditorInterfaceAssets muteIcon]; + UIImage *muteActiveIcon = [TGPhotoEditorInterfaceAssets muteActiveIcon]; + if ([item isKindOfClass:[TGMediaPickerGalleryVideoItem class]]) { + TGMediaPickerGalleryVideoItem *videoGalleryItem = (TGMediaPickerGalleryVideoItem *)item; + if ([videoGalleryItem.editableMediaItem isKindOfClass:[TGMediaAsset class]]) { + TGMediaAsset *asset = (TGMediaAsset *)videoGalleryItem.editableMediaItem; + if (asset.type == TGMediaAssetPhotoType) { + muteIcon = [TGPhotoEditorInterfaceAssets gifIcon]; + muteActiveIcon = [TGPhotoEditorInterfaceAssets gifActiveIcon]; + } + } + } + [_muteButton setImage:muteIcon forState:UIControlStateNormal]; + [_muteButton setImage:muteActiveIcon forState:UIControlStateSelected]; + [_muteButton setImage:muteActiveIcon forState:UIControlStateSelected | UIControlStateHighlighted]; } - (TGPhotoEditorTab)currentTabs @@ -1264,7 +1278,7 @@ return; TGModernGalleryItemView *currentItemView = _currentItemView; - bool sendableAsGif = [currentItemView isKindOfClass:[TGMediaPickerGalleryVideoItemView class]]; // || ([currentItemView.item isKindOfClass:[TGMediaPickerGalleryPhotoItem class]]; && ((TGMediaPickerGalleryPhotoItem *)currentItemView.item).asset.subtypes & TGMediaAssetSubtypePhotoLive); + bool sendableAsGif = [currentItemView isKindOfClass:[TGMediaPickerGalleryVideoItemView class]]; if (sendableAsGif) [(TGMediaPickerGalleryVideoItemView *)currentItemView toggleSendAsGif]; } diff --git a/submodules/LegacyComponents/Sources/TGMediaPickerGalleryModel.m b/submodules/LegacyComponents/Sources/TGMediaPickerGalleryModel.m index 20692716e2..cb463180b6 100644 --- a/submodules/LegacyComponents/Sources/TGMediaPickerGalleryModel.m +++ b/submodules/LegacyComponents/Sources/TGMediaPickerGalleryModel.m @@ -352,7 +352,7 @@ _itemBeingEdited = item; - PGPhotoEditorValues *editorValues = (PGPhotoEditorValues *)[item.editingContext adjustmentsForItem:item.editableMediaItem]; + id adjustments = [item.editingContext adjustmentsForItem:item.editableMediaItem]; NSString *caption = [item.editingContext captionForItem:item.editableMediaItem]; @@ -365,6 +365,8 @@ TGPhotoEntitiesContainerView *entitiesView = nil; + id editableMediaItem = item.editableMediaItem; + bool isVideo = false; if ([editorReferenceView isKindOfClass:[UIImageView class]]) { @@ -389,13 +391,15 @@ entitiesView = [videoItemView entitiesView]; isVideo = true; + + editableMediaItem = videoItemView.editableMediaItem; } if (self.useGalleryImageAsEditableItemImage && self.storeOriginalImageForItem != nil) self.storeOriginalImageForItem(item.editableMediaItem, screenImage); TGPhotoEditorControllerIntent intent = isVideo ? TGPhotoEditorControllerVideoIntent : TGPhotoEditorControllerGenericIntent; - TGPhotoEditorController *controller = [[TGPhotoEditorController alloc] initWithContext:_context item:item.editableMediaItem intent:intent adjustments:editorValues caption:caption screenImage:screenImage availableTabs:_interfaceView.currentTabs selectedTab:tab]; + TGPhotoEditorController *controller = [[TGPhotoEditorController alloc] initWithContext:_context item:editableMediaItem intent:intent adjustments:adjustments caption:caption screenImage:screenImage availableTabs:_interfaceView.currentTabs selectedTab:tab]; controller.entitiesView = entitiesView; controller.editingContext = _editingContext; controller.stickersContext = _stickersContext; @@ -429,7 +433,7 @@ if (hasChanges) { if (didFinishEditingItem != nil) { - didFinishEditingItem(item.editableMediaItem, adjustments, resultImage, thumbnailImage); + didFinishEditingItem(editableMediaItem, adjustments, resultImage, thumbnailImage); } } @@ -448,7 +452,7 @@ return; if (strongSelf.didFinishRenderingFullSizeImage != nil) - strongSelf.didFinishRenderingFullSizeImage(item.editableMediaItem, image); + strongSelf.didFinishRenderingFullSizeImage(editableMediaItem, image); }; controller.captionSet = ^(NSString *caption, NSArray *entities) diff --git a/submodules/LegacyComponents/Sources/TGMediaPickerGalleryVideoItemView.m b/submodules/LegacyComponents/Sources/TGMediaPickerGalleryVideoItemView.m index 90fc17467f..5d69fcaa36 100644 --- a/submodules/LegacyComponents/Sources/TGMediaPickerGalleryVideoItemView.m +++ b/submodules/LegacyComponents/Sources/TGMediaPickerGalleryVideoItemView.m @@ -20,6 +20,8 @@ #import "TGMediaPickerGalleryItem.h" #import "TGMediaPickerGalleryVideoItem.h" +#import "TGCameraCapturedVideo.h" + #import #import @@ -96,6 +98,8 @@ SMetaDisposable *_downloadDisposable; SMetaDisposable *_currentAudioSession; + SVariable *_editableItemVariable; + UIEdgeInsets _safeAreaInset; bool _requestingThumbnails; @@ -127,6 +131,8 @@ _videoDurationDisposable = [[SMetaDisposable alloc] init]; _adjustmentsDisposable = [[SMetaDisposable alloc] init]; + + _editableItemVariable = [[SVariable alloc] init]; _containerView = [[UIView alloc] initWithFrame:self.bounds]; _containerView.clipsToBounds = true; @@ -434,23 +440,27 @@ [self.imageView setSignal:imageSignal]; + [_editableItemVariable set:[SSignal single:[self editableMediaItem]]]; + if (item.editingContext != nil) { - SSignal *adjustmentsSignal = [item.editingContext adjustmentsSignalForItem:item.editableMediaItem]; - [_adjustmentsDisposable setDisposable:[[adjustmentsSignal deliverOn:[SQueue mainQueue]] startWithNext:^(__unused id next) + SSignal *adjustmentsSignal = [[self editableItemSignal] mapToSignal:^SSignal *(id editableItem) { + return [item.editingContext adjustmentsSignalForItem:editableItem]; + }]; + [_adjustmentsDisposable setDisposable:[[adjustmentsSignal deliverOn:[SQueue mainQueue]] startWithNext:^(id adjustments) { __strong TGMediaPickerGalleryVideoItemView *strongSelf = weakSelf; if (strongSelf == nil) return; [strongSelf _layoutPlayerView]; - TGVideoEditAdjustments *adjustments = (TGVideoEditAdjustments *)[strongSelf.item.editingContext adjustmentsForItem:strongSelf.item.editableMediaItem]; strongSelf->_paintingImageView.image = adjustments.paintingData.image; - strongSelf->_sendAsGif = adjustments.sendAsGif; - [strongSelf _mutePlayer:adjustments.sendAsGif]; + id baseAdjustments = [strongSelf.item.editingContext adjustmentsForItem:strongSelf.item.editableMediaItem]; + strongSelf->_sendAsGif = baseAdjustments.sendAsGif; + [strongSelf _mutePlayer:baseAdjustments.sendAsGif]; - if (adjustments.sendAsGif || ([strongSelf itemIsLivePhoto])) + if (baseAdjustments.sendAsGif || ([strongSelf itemIsLivePhoto])) [strongSelf setPlayButtonHidden:true animated:false]; [strongSelf->_entitiesContainerView setupWithPaintingData:adjustments.paintingData]; @@ -1370,6 +1380,23 @@ #pragma mark - Edit Adjustments +- (SSignal *)editableItemSignal { + return [_editableItemVariable signal]; +} + +- (id)editableMediaItem { + TGVideoEditAdjustments *adjustments = (TGVideoEditAdjustments *)[self.item.editingContext adjustmentsForItem:self.item.editableMediaItem]; + if ([self itemIsLivePhoto]) { + if (adjustments.sendAsGif) { + return [[TGCameraCapturedVideo alloc] initWithAsset:self.item.editableMediaItem livePhoto:true]; + } else { + return self.item.editableMediaItem; + } + } else { + return self.item.editableMediaItem; + } +} + - (void)toggleSendAsGif { TGVideoEditAdjustments *adjustments = (TGVideoEditAdjustments *)[self.item.editingContext adjustmentsForItem:self.item.editableMediaItem]; @@ -1388,43 +1415,45 @@ trimEndValue = adjustments.trimEndValue; } } - NSTimeInterval trimDuration = trimEndValue - trimStartValue; +// NSTimeInterval trimDuration = trimEndValue - trimStartValue; bool sendAsGif = !adjustments.sendAsGif; - if (sendAsGif && _scrubberView.allowsTrimming) - { - if (trimDuration > TGVideoEditMaximumGifDuration) - { - trimEndValue = trimStartValue + TGVideoEditMaximumGifDuration; - - if (_scrubberView.value > trimEndValue) - { - [self stop]; - [_scrubberView setValue:_scrubberView.trimStartValue resetPosition:true]; - [self _seekToPosition:_scrubberView.value manual:true]; - } - - _scrubberView.trimStartValue = trimStartValue; - _scrubberView.trimEndValue = trimEndValue; - [_scrubberView setTrimApplied:true]; - [self updatePlayerRange:trimEndValue]; - } - } - else if (_shouldResetScrubber) - { - trimStartValue = 0.0; - trimEndValue = _videoDuration; - - _scrubberView.trimStartValue = trimStartValue; - _scrubberView.trimEndValue = trimEndValue; - - [_scrubberView setTrimApplied:false]; - [self updatePlayerRange:trimEndValue]; - } +// if (sendAsGif && _scrubberView.allowsTrimming) +// { +// if (trimDuration > TGVideoEditMaximumGifDuration) +// { +// trimEndValue = trimStartValue + TGVideoEditMaximumGifDuration; +// +// if (_scrubberView.value > trimEndValue) +// { +// [self stop]; +// [_scrubberView setValue:_scrubberView.trimStartValue resetPosition:true]; +// [self _seekToPosition:_scrubberView.value manual:true]; +// } +// +// _scrubberView.trimStartValue = trimStartValue; +// _scrubberView.trimEndValue = trimEndValue; +// [_scrubberView setTrimApplied:true]; +// [self updatePlayerRange:trimEndValue]; +// } +// } +// else if (_shouldResetScrubber) +// { +// trimStartValue = 0.0; +// trimEndValue = _videoDuration; +// +// _scrubberView.trimStartValue = trimStartValue; +// _scrubberView.trimEndValue = trimEndValue; +// +// [_scrubberView setTrimApplied:false]; +// [self updatePlayerRange:trimEndValue]; +// } TGVideoEditAdjustments *updatedAdjustments = [TGVideoEditAdjustments editAdjustmentsWithOriginalSize:_videoDimensions cropRect:cropRect cropOrientation:adjustments.cropOrientation cropRotation:adjustments.cropRotation cropLockedAspectRatio:adjustments.cropLockedAspectRatio cropMirrored:adjustments.cropMirrored trimStartValue:trimStartValue trimEndValue:trimEndValue toolValues:adjustments.toolValues paintingData:adjustments.paintingData sendAsGif:sendAsGif preset:adjustments.preset]; [self.item.editingContext setAdjustments:updatedAdjustments forItem:self.item.editableMediaItem]; + [_editableItemVariable set:[SSignal single:[self editableMediaItem]]]; + if (sendAsGif) { if (UIInterfaceOrientationIsPortrait([[LegacyComponentsGlobals provider] applicationStatusBarOrientation])) @@ -1552,7 +1581,7 @@ SSignal *avAsset = self.item.avAsset ?: [SSignal single:_player.currentItem.asset]; TGMediaEditingContext *editingContext = self.item.editingContext; - id editableItem = self.item.editableMediaItem; + id editableItem = self.editableMediaItem; SSignal *thumbnailsSignal = nil; if ([self.item.asset isKindOfClass:[TGMediaAsset class]] && ![self itemIsLivePhoto]) diff --git a/submodules/LegacyComponents/Sources/TGMediaPickerModernGalleryMixin.m b/submodules/LegacyComponents/Sources/TGMediaPickerModernGalleryMixin.m index 445bf65b70..3f86397b91 100644 --- a/submodules/LegacyComponents/Sources/TGMediaPickerModernGalleryMixin.m +++ b/submodules/LegacyComponents/Sources/TGMediaPickerModernGalleryMixin.m @@ -370,17 +370,17 @@ case TGMediaAssetGifType: { -// TGCameraCapturedVideo *convertedAsset = [[TGCameraCapturedVideo alloc] initWithAsset:asset]; -// galleryItem = [[TGMediaPickerGalleryVideoItem alloc] initWithAsset:convertedAsset]; - galleryItem = [[TGMediaPickerGalleryGifItem alloc] initWithAsset:asset]; + TGCameraCapturedVideo *convertedAsset = [[TGCameraCapturedVideo alloc] initWithAsset:asset livePhoto:false]; + galleryItem = [[TGMediaPickerGalleryVideoItem alloc] initWithAsset:convertedAsset]; +// galleryItem = [[TGMediaPickerGalleryGifItem alloc] initWithAsset:asset]; } break; default: { -// if (asset.subtypes & TGMediaAssetSubtypePhotoLive) -// galleryItem = [[TGMediaPickerGalleryVideoItem alloc] initWithAsset:asset]; -// else + if (asset.subtypes & TGMediaAssetSubtypePhotoLive) + galleryItem = [[TGMediaPickerGalleryVideoItem alloc] initWithAsset:asset]; + else galleryItem = [[TGMediaPickerGalleryPhotoItem alloc] initWithAsset:asset]; } break; diff --git a/submodules/LegacyComponents/Sources/TGPhotoEditorInterfaceAssets.m b/submodules/LegacyComponents/Sources/TGPhotoEditorInterfaceAssets.m index 262c029fb2..8beac5ce0e 100644 --- a/submodules/LegacyComponents/Sources/TGPhotoEditorInterfaceAssets.m +++ b/submodules/LegacyComponents/Sources/TGPhotoEditorInterfaceAssets.m @@ -135,16 +135,26 @@ return muteBackground; } -+ (UIImage *)gifIcon ++ (UIImage *)muteIcon { return TGComponentsImageNamed(@"PhotoEditorMute.png"); } -+ (UIImage *)gifActiveIcon ++ (UIImage *)muteActiveIcon { return TGTintedImage([self gifIcon], [self accentColor]); } ++ (UIImage *)gifIcon +{ + return TGTintedImage([UIImage imageNamed:@"Editor/Gif"], [self toolbarIconColor]); +} + ++ (UIImage *)gifActiveIcon +{ + return TGTintedImage([UIImage imageNamed:@"Editor/Gif"], [self accentColor]); +} + + (UIImage *)groupIcon { return TGTintedImage(TGComponentsImageNamed(@"PhotoEditorGroupPhotosIcon.png"), UIColorRGB(0x4cb4ff)); diff --git a/submodules/TelegramBaseController/Sources/TelegramBaseController.swift b/submodules/TelegramBaseController/Sources/TelegramBaseController.swift index 53d3b5a46b..2b1f9776e9 100644 --- a/submodules/TelegramBaseController/Sources/TelegramBaseController.swift +++ b/submodules/TelegramBaseController/Sources/TelegramBaseController.swift @@ -503,7 +503,7 @@ open class TelegramBaseController: ViewController, KeyShortcutResponder { } let mediaAccessoryPanel = MediaNavigationAccessoryPanel(context: self.context) - mediaAccessoryPanel.containerNode.headerNode.displayScrubber = type != .voice + mediaAccessoryPanel.containerNode.headerNode.displayScrubber = item.playbackData?.type != .instantVideo mediaAccessoryPanel.close = { [weak self] in if let strongSelf = self, let (_, _, _, _, type, _) = strongSelf.playlistStateAndType { strongSelf.context.sharedContext.mediaManager.setPlaylist(nil, type: type, control: SharedMediaPlayerControlAction.playback(.pause)) diff --git a/submodules/TelegramCore/Sources/PeersNearby.swift b/submodules/TelegramCore/Sources/PeersNearby.swift index 83d82b6e8a..2ab193029e 100644 --- a/submodules/TelegramCore/Sources/PeersNearby.swift +++ b/submodules/TelegramCore/Sources/PeersNearby.swift @@ -155,7 +155,7 @@ public final class PeersNearbyContext { var selfPeer: PeerNearby? for entry in updatedEntries { switch entry { - case let .selfPeer: + case .selfPeer: if let index = existingSelfPeer { entries[index] = entry } else { diff --git a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift index c8202c96e7..8e3220690a 100644 --- a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift +++ b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift @@ -4264,945 +4264,945 @@ public final class PresentationStrings: Equatable { public var DialogList_UnknownPinLimitError: String { return self._s[3812]! } public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[3813]! } public var ChatList_Context_Unmute: String { return self._s[3814]! } - public var Group_MessagePhotoUpdated: String { return self._s[3815]! } - public var Channel_BanUser_PermissionSendMedia: String { return self._s[3816]! } - public var Conversation_ContextMenuBan: String { return self._s[3817]! } - public var TwoStepAuth_EmailSent: String { return self._s[3818]! } - public var MessagePoll_NoVotes: String { return self._s[3819]! } - public var Wallet_Send_ErrorNotEnoughFundsTitle: String { return self._s[3820]! } - public var Passport_Language_is: String { return self._s[3822]! } - public var PeopleNearby_UsersEmpty: String { return self._s[3824]! } - public var Tour_Text5: String { return self._s[3825]! } + public var KeyCommand_SearchInChat: String { return self._s[3815]! } + public var Group_MessagePhotoUpdated: String { return self._s[3816]! } + public var Channel_BanUser_PermissionSendMedia: String { return self._s[3817]! } + public var Conversation_ContextMenuBan: String { return self._s[3818]! } + public var TwoStepAuth_EmailSent: String { return self._s[3819]! } + public var MessagePoll_NoVotes: String { return self._s[3820]! } + public var Wallet_Send_ErrorNotEnoughFundsTitle: String { return self._s[3821]! } + public var Passport_Language_is: String { return self._s[3823]! } + public var PeopleNearby_UsersEmpty: String { return self._s[3825]! } + public var Tour_Text5: String { return self._s[3826]! } public func Call_GroupFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3828]!, self._r[3828]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3829]!, self._r[3829]!, [_1, _2]) } - public var Undo_SecretChatDeleted: String { return self._s[3829]! } - public var SocksProxySetup_ShareQRCode: String { return self._s[3830]! } + public var Undo_SecretChatDeleted: String { return self._s[3830]! } + public var SocksProxySetup_ShareQRCode: String { return self._s[3831]! } public func VoiceOver_Chat_Size(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3831]!, self._r[3831]!, [_0]) + return formatWithArgumentRanges(self._s[3832]!, self._r[3832]!, [_0]) } - public var Forward_ErrorDisabledForChat: String { return self._s[3832]! } - public var LogoutOptions_ChangePhoneNumberText: String { return self._s[3833]! } - public var Paint_Edit: String { return self._s[3835]! } - public var ScheduledMessages_ReminderNotification: String { return self._s[3837]! } - public var Undo_DeletedGroup: String { return self._s[3839]! } - public var LoginPassword_ForgotPassword: String { return self._s[3840]! } - public var Wallet_WordImport_IncorrectTitle: String { return self._s[3841]! } - public var GroupInfo_GroupNamePlaceholder: String { return self._s[3842]! } + public var Forward_ErrorDisabledForChat: String { return self._s[3833]! } + public var LogoutOptions_ChangePhoneNumberText: String { return self._s[3834]! } + public var Paint_Edit: String { return self._s[3836]! } + public var ScheduledMessages_ReminderNotification: String { return self._s[3838]! } + public var Undo_DeletedGroup: String { return self._s[3840]! } + public var LoginPassword_ForgotPassword: String { return self._s[3841]! } + public var Wallet_WordImport_IncorrectTitle: String { return self._s[3842]! } + public var GroupInfo_GroupNamePlaceholder: String { return self._s[3843]! } public func Notification_Kicked(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3843]!, self._r[3843]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3844]!, self._r[3844]!, [_0, _1]) } - public var AppWallet_TransactionInfo_FeeInfoURL: String { return self._s[3844]! } - public var Conversation_InputTextCaptionPlaceholder: String { return self._s[3845]! } - public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3846]! } - public var Passport_Language_uz: String { return self._s[3847]! } - public var Conversation_PinMessageAlertGroup: String { return self._s[3848]! } - public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[3849]! } - public var Map_StopLiveLocation: String { return self._s[3851]! } - public var VoiceOver_MessageContextSend: String { return self._s[3853]! } - public var PasscodeSettings_Help: String { return self._s[3854]! } - public var NotificationsSound_Input: String { return self._s[3855]! } - public var Share_Title: String { return self._s[3858]! } - public var LogoutOptions_Title: String { return self._s[3859]! } - public var Wallet_Send_AddressText: String { return self._s[3860]! } - public var Login_TermsOfServiceAgree: String { return self._s[3861]! } - public var Compose_NewEncryptedChatTitle: String { return self._s[3862]! } - public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[3863]! } - public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[3864]! } - public var EnterPasscode_EnterTitle: String { return self._s[3865]! } + public var AppWallet_TransactionInfo_FeeInfoURL: String { return self._s[3845]! } + public var Conversation_InputTextCaptionPlaceholder: String { return self._s[3846]! } + public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3847]! } + public var Passport_Language_uz: String { return self._s[3848]! } + public var Conversation_PinMessageAlertGroup: String { return self._s[3849]! } + public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[3850]! } + public var Map_StopLiveLocation: String { return self._s[3852]! } + public var VoiceOver_MessageContextSend: String { return self._s[3854]! } + public var PasscodeSettings_Help: String { return self._s[3855]! } + public var NotificationsSound_Input: String { return self._s[3856]! } + public var Share_Title: String { return self._s[3859]! } + public var LogoutOptions_Title: String { return self._s[3860]! } + public var Wallet_Send_AddressText: String { return self._s[3861]! } + public var Login_TermsOfServiceAgree: String { return self._s[3862]! } + public var Compose_NewEncryptedChatTitle: String { return self._s[3863]! } + public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[3864]! } + public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[3865]! } + public var EnterPasscode_EnterTitle: String { return self._s[3866]! } public func Call_PrivacyErrorMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3866]!, self._r[3866]!, [_0]) + return formatWithArgumentRanges(self._s[3867]!, self._r[3867]!, [_0]) } - public var Settings_CopyPhoneNumber: String { return self._s[3867]! } - public var Conversation_AddToContacts: String { return self._s[3868]! } + public var Settings_CopyPhoneNumber: String { return self._s[3868]! } + public var Conversation_AddToContacts: String { return self._s[3869]! } public func VoiceOver_Chat_ReplyFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3869]!, self._r[3869]!, [_0]) + return formatWithArgumentRanges(self._s[3870]!, self._r[3870]!, [_0]) } - public var NotificationsSound_Keys: String { return self._s[3870]! } + public var NotificationsSound_Keys: String { return self._s[3871]! } public func Call_ParticipantVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3871]!, self._r[3871]!, [_0]) + return formatWithArgumentRanges(self._s[3872]!, self._r[3872]!, [_0]) } - public var Notification_MessageLifetime1w: String { return self._s[3872]! } - public var Message_Video: String { return self._s[3873]! } - public var AutoDownloadSettings_CellularTitle: String { return self._s[3874]! } + public var Notification_MessageLifetime1w: String { return self._s[3873]! } + public var Message_Video: String { return self._s[3874]! } + public var AutoDownloadSettings_CellularTitle: String { return self._s[3875]! } public func PUSH_CHANNEL_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3875]!, self._r[3875]!, [_1]) + return formatWithArgumentRanges(self._s[3876]!, self._r[3876]!, [_1]) } - public var Wallet_Receive_AmountInfo: String { return self._s[3878]! } - public var Stats_Overview: String { return self._s[3879]! } + public var Wallet_Receive_AmountInfo: String { return self._s[3879]! } + public var Stats_Overview: String { return self._s[3880]! } public func Notification_JoinedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3880]!, self._r[3880]!, [_0]) - } - public func PrivacySettings_LastSeenContactsPlus(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[3881]!, self._r[3881]!, [_0]) } - public var ChatListFolder_ExcludeChatsTitle: String { return self._s[3882]! } - public var Passport_Language_mk: String { return self._s[3883]! } - public var ChatListFolder_CategoryNonContacts: String { return self._s[3884]! } - public func Wallet_Time_PreciseDate_m2(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3885]!, self._r[3885]!, [_1, _2, _3]) + public func PrivacySettings_LastSeenContactsPlus(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3882]!, self._r[3882]!, [_0]) } - public var CreatePoll_CancelConfirmation: String { return self._s[3886]! } - public var MessagePoll_LabelAnonymousQuiz: String { return self._s[3887]! } - public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3889]! } - public var PrivacyPolicy_Decline: String { return self._s[3890]! } - public var Passport_Identity_DoesNotExpire: String { return self._s[3891]! } - public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[3892]! } - public var AuthSessions_AddDeviceIntro_Action: String { return self._s[3893]! } - public var Permissions_SiriAllow_v0: String { return self._s[3895]! } - public var Wallet_Month_ShortAugust: String { return self._s[3896]! } - public var Appearance_ThemeCarouselNight: String { return self._s[3897]! } + public var ChatListFolder_ExcludeChatsTitle: String { return self._s[3883]! } + public var Passport_Language_mk: String { return self._s[3884]! } + public var ChatListFolder_CategoryNonContacts: String { return self._s[3885]! } + public func Wallet_Time_PreciseDate_m2(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[3886]!, self._r[3886]!, [_1, _2, _3]) + } + public var CreatePoll_CancelConfirmation: String { return self._s[3887]! } + public var MessagePoll_LabelAnonymousQuiz: String { return self._s[3888]! } + public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3890]! } + public var PrivacyPolicy_Decline: String { return self._s[3891]! } + public var Passport_Identity_DoesNotExpire: String { return self._s[3892]! } + public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[3893]! } + public var AuthSessions_AddDeviceIntro_Action: String { return self._s[3894]! } + public var Permissions_SiriAllow_v0: String { return self._s[3896]! } + public var Wallet_Month_ShortAugust: String { return self._s[3897]! } + public var Appearance_ThemeCarouselNight: String { return self._s[3898]! } public func LOCAL_CHAT_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3898]!, self._r[3898]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[3899]!, self._r[3899]!, [_1, "\(_2)"]) } public func Notification_RenamedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3899]!, self._r[3899]!, [_0]) + return formatWithArgumentRanges(self._s[3900]!, self._r[3900]!, [_0]) } - public var Paint_Regular: String { return self._s[3900]! } - public var ChatSettings_AutoDownloadReset: String { return self._s[3901]! } - public var SocksProxySetup_ShareLink: String { return self._s[3902]! } - public var Wallet_Qr_Title: String { return self._s[3903]! } - public var BlockedUsers_SelectUserTitle: String { return self._s[3904]! } - public var VoiceOver_Chat_RecordModeVoiceMessage: String { return self._s[3906]! } - public var Wallet_Settings_Configuration: String { return self._s[3907]! } - public var GroupInfo_InviteByLink: String { return self._s[3908]! } - public var MessageTimer_Custom: String { return self._s[3909]! } - public var UserInfo_NotificationsDefaultEnabled: String { return self._s[3910]! } - public var Conversation_StopQuizConfirmationTitle: String { return self._s[3911]! } - public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3913]! } - public var Conversation_SendMessage_SetReminder: String { return self._s[3914]! } - public var VoiceOver_Chat_Selected: String { return self._s[3915]! } - public var Paint_Pen: String { return self._s[3916]! } - public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[3917]! } - public var Channel_Username_InvalidTaken: String { return self._s[3918]! } - public var Conversation_ClousStorageInfo_Description3: String { return self._s[3919]! } - public var Wallet_WordCheck_TryAgain: String { return self._s[3920]! } - public var Wallet_Info_TransactionPendingHeader: String { return self._s[3921]! } - public var Settings_ChatBackground: String { return self._s[3922]! } - public var Channel_Subscribers_Title: String { return self._s[3923]! } - public var Wallet_Receive_InvoiceUrlHeader: String { return self._s[3924]! } - public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[3925]! } - public var Watch_ConnectionDescription: String { return self._s[3926]! } - public var OldChannels_NoticeText: String { return self._s[3929]! } - public var Wallet_Configuration_ApplyErrorTitle: String { return self._s[3930]! } - public var IntentsSettings_SuggestBy: String { return self._s[3932]! } - public var Theme_ThemeChangedText: String { return self._s[3933]! } - public var ChatList_ArchivedChatsTitle: String { return self._s[3934]! } - public var Wallpaper_ResetWallpapers: String { return self._s[3935]! } - public var Wallet_Send_TransactionInProgress: String { return self._s[3936]! } - public var Conversation_SendDice: String { return self._s[3937]! } - public var EditProfile_Title: String { return self._s[3938]! } - public var NotificationsSound_Bamboo: String { return self._s[3940]! } - public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[3942]! } - public var Login_SmsRequestState2: String { return self._s[3943]! } - public var Passport_Language_ar: String { return self._s[3944]! } + public var Paint_Regular: String { return self._s[3901]! } + public var ChatSettings_AutoDownloadReset: String { return self._s[3902]! } + public var SocksProxySetup_ShareLink: String { return self._s[3903]! } + public var Wallet_Qr_Title: String { return self._s[3904]! } + public var BlockedUsers_SelectUserTitle: String { return self._s[3905]! } + public var VoiceOver_Chat_RecordModeVoiceMessage: String { return self._s[3907]! } + public var Wallet_Settings_Configuration: String { return self._s[3908]! } + public var GroupInfo_InviteByLink: String { return self._s[3909]! } + public var MessageTimer_Custom: String { return self._s[3910]! } + public var UserInfo_NotificationsDefaultEnabled: String { return self._s[3911]! } + public var Conversation_StopQuizConfirmationTitle: String { return self._s[3912]! } + public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3914]! } + public var Conversation_SendMessage_SetReminder: String { return self._s[3915]! } + public var VoiceOver_Chat_Selected: String { return self._s[3916]! } + public var Paint_Pen: String { return self._s[3917]! } + public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[3918]! } + public var Channel_Username_InvalidTaken: String { return self._s[3919]! } + public var Conversation_ClousStorageInfo_Description3: String { return self._s[3920]! } + public var Wallet_WordCheck_TryAgain: String { return self._s[3921]! } + public var Wallet_Info_TransactionPendingHeader: String { return self._s[3922]! } + public var Settings_ChatBackground: String { return self._s[3923]! } + public var Channel_Subscribers_Title: String { return self._s[3924]! } + public var Wallet_Receive_InvoiceUrlHeader: String { return self._s[3925]! } + public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[3926]! } + public var Watch_ConnectionDescription: String { return self._s[3927]! } + public var OldChannels_NoticeText: String { return self._s[3930]! } + public var Wallet_Configuration_ApplyErrorTitle: String { return self._s[3931]! } + public var IntentsSettings_SuggestBy: String { return self._s[3933]! } + public var Theme_ThemeChangedText: String { return self._s[3934]! } + public var ChatList_ArchivedChatsTitle: String { return self._s[3935]! } + public var Wallpaper_ResetWallpapers: String { return self._s[3936]! } + public var Wallet_Send_TransactionInProgress: String { return self._s[3937]! } + public var Conversation_SendDice: String { return self._s[3938]! } + public var EditProfile_Title: String { return self._s[3939]! } + public var NotificationsSound_Bamboo: String { return self._s[3941]! } + public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[3943]! } + public var Login_SmsRequestState2: String { return self._s[3944]! } + public var Passport_Language_ar: String { return self._s[3945]! } public func Message_AuthorPinnedGame(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3945]!, self._r[3945]!, [_0]) + return formatWithArgumentRanges(self._s[3946]!, self._r[3946]!, [_0]) } - public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[3946]! } - public var Wallet_Created_Text: String { return self._s[3947]! } - public var Conversation_MessageDialogEdit: String { return self._s[3949]! } - public var Wallet_Created_Proceed: String { return self._s[3950]! } - public var Wallet_Words_Done: String { return self._s[3951]! } - public var VoiceOver_Media_PlaybackPause: String { return self._s[3952]! } - public var ChatListFolder_NameChannels: String { return self._s[3953]! } + public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[3947]! } + public var Wallet_Created_Text: String { return self._s[3948]! } + public var Conversation_MessageDialogEdit: String { return self._s[3950]! } + public var Wallet_Created_Proceed: String { return self._s[3951]! } + public var Wallet_Words_Done: String { return self._s[3952]! } + public var VoiceOver_Media_PlaybackPause: String { return self._s[3953]! } + public var ChatListFolder_NameChannels: String { return self._s[3954]! } public func PUSH_AUTH_UNKNOWN(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3954]!, self._r[3954]!, [_1]) + return formatWithArgumentRanges(self._s[3955]!, self._r[3955]!, [_1]) } - public var Common_Close: String { return self._s[3955]! } - public var GroupInfo_PublicLink: String { return self._s[3956]! } - public var Channel_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[3957]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[3958]! } + public var Common_Close: String { return self._s[3956]! } + public var GroupInfo_PublicLink: String { return self._s[3957]! } + public var Channel_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[3958]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[3959]! } public func Channel_AdminLog_MessageToggleInvitesOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3962]!, self._r[3962]!, [_0]) + return formatWithArgumentRanges(self._s[3963]!, self._r[3963]!, [_0]) } - public var UserInfo_About_Placeholder: String { return self._s[3963]! } + public var UserInfo_About_Placeholder: String { return self._s[3964]! } public func Conversation_FileHowToText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3964]!, self._r[3964]!, [_0]) + return formatWithArgumentRanges(self._s[3965]!, self._r[3965]!, [_0]) } - public var GroupInfo_Permissions_SectionTitle: String { return self._s[3965]! } - public var Channel_Info_Banned: String { return self._s[3967]! } + public var GroupInfo_Permissions_SectionTitle: String { return self._s[3966]! } + public var Channel_Info_Banned: String { return self._s[3968]! } public func Time_MonthOfYear_m11(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3968]!, self._r[3968]!, [_0]) + return formatWithArgumentRanges(self._s[3969]!, self._r[3969]!, [_0]) } - public var Appearance_Other: String { return self._s[3969]! } - public var Passport_Language_my: String { return self._s[3970]! } - public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[3971]! } + public var Appearance_Other: String { return self._s[3970]! } + public var Passport_Language_my: String { return self._s[3971]! } + public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[3972]! } public func Time_PreciseDate_m9(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3972]!, self._r[3972]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3973]!, self._r[3973]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[3973]! } - public var IntentsSettings_SuggestedAndSpotlightChatsInfo: String { return self._s[3974]! } - public var Preview_CopyAddress: String { return self._s[3975]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[3974]! } + public var IntentsSettings_SuggestedAndSpotlightChatsInfo: String { return self._s[3975]! } + public var Preview_CopyAddress: String { return self._s[3976]! } public func DialogList_SinglePlayingGameSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3976]!, self._r[3976]!, [_0]) + return formatWithArgumentRanges(self._s[3977]!, self._r[3977]!, [_0]) } - public var KeyCommand_JumpToPreviousChat: String { return self._s[3977]! } - public var UserInfo_BotSettings: String { return self._s[3978]! } - public var LiveLocation_MenuStopAll: String { return self._s[3980]! } - public var Passport_PasswordCreate: String { return self._s[3981]! } - public var StickerSettings_MaskContextInfo: String { return self._s[3982]! } - public var Message_PinnedLocationMessage: String { return self._s[3983]! } - public var Map_Satellite: String { return self._s[3984]! } - public var Watch_Message_Unsupported: String { return self._s[3985]! } - public var Username_TooManyPublicUsernamesError: String { return self._s[3986]! } - public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[3987]! } + public var KeyCommand_JumpToPreviousChat: String { return self._s[3978]! } + public var UserInfo_BotSettings: String { return self._s[3979]! } + public var LiveLocation_MenuStopAll: String { return self._s[3981]! } + public var Passport_PasswordCreate: String { return self._s[3982]! } + public var StickerSettings_MaskContextInfo: String { return self._s[3983]! } + public var Message_PinnedLocationMessage: String { return self._s[3984]! } + public var Map_Satellite: String { return self._s[3985]! } + public var Watch_Message_Unsupported: String { return self._s[3986]! } + public var Username_TooManyPublicUsernamesError: String { return self._s[3987]! } + public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[3988]! } public func Notification_PinnedTextMessage(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3988]!, self._r[3988]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3989]!, self._r[3989]!, [_0, _1]) } public func Conversation_OpenBotLinkText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3989]!, self._r[3989]!, [_0]) + return formatWithArgumentRanges(self._s[3990]!, self._r[3990]!, [_0]) } - public var Wallet_WordImport_Continue: String { return self._s[3990]! } + public var Wallet_WordImport_Continue: String { return self._s[3991]! } public func TwoFactorSetup_EmailVerification_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3991]!, self._r[3991]!, [_0]) + return formatWithArgumentRanges(self._s[3992]!, self._r[3992]!, [_0]) } - public var Notifications_ChannelNotificationsHelp: String { return self._s[3992]! } - public var Privacy_Calls_P2PContacts: String { return self._s[3993]! } - public var NotificationsSound_None: String { return self._s[3994]! } - public var Wallet_TransactionInfo_StorageFeeHeader: String { return self._s[3995]! } - public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[3997]! } - public var AccessDenied_VoiceMicrophone: String { return self._s[3998]! } + public var Notifications_ChannelNotificationsHelp: String { return self._s[3993]! } + public var Privacy_Calls_P2PContacts: String { return self._s[3994]! } + public var NotificationsSound_None: String { return self._s[3995]! } + public var Wallet_TransactionInfo_StorageFeeHeader: String { return self._s[3996]! } + public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[3998]! } + public var AccessDenied_VoiceMicrophone: String { return self._s[3999]! } public func ApplyLanguage_ChangeLanguageAlreadyActive(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3999]!, self._r[3999]!, [_1]) + return formatWithArgumentRanges(self._s[4000]!, self._r[4000]!, [_1]) } - public var Cache_Indexing: String { return self._s[4000]! } - public var DialogList_RecentTitlePeople: String { return self._s[4002]! } - public var DialogList_EncryptionRejected: String { return self._s[4003]! } - public var GroupInfo_Administrators: String { return self._s[4004]! } - public var Passport_ScanPassportHelp: String { return self._s[4005]! } - public var Application_Name: String { return self._s[4006]! } - public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[4007]! } - public var Conversation_Timer_Title: String { return self._s[4008]! } - public var ChatList_PeerTypeGroup: String { return self._s[4009]! } - public var PeopleNearby_MakeVisible: String { return self._s[4011]! } - public var Appearance_ThemeCarouselDay: String { return self._s[4012]! } - public var Stats_GrowthTitle: String { return self._s[4013]! } - public var Passport_Identity_TranslationHelp: String { return self._s[4014]! } + public var Cache_Indexing: String { return self._s[4001]! } + public var DialogList_RecentTitlePeople: String { return self._s[4003]! } + public var DialogList_EncryptionRejected: String { return self._s[4004]! } + public var GroupInfo_Administrators: String { return self._s[4005]! } + public var Passport_ScanPassportHelp: String { return self._s[4006]! } + public var Application_Name: String { return self._s[4007]! } + public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[4008]! } + public var Conversation_Timer_Title: String { return self._s[4009]! } + public var ChatList_PeerTypeGroup: String { return self._s[4010]! } + public var PeopleNearby_MakeVisible: String { return self._s[4012]! } + public var Appearance_ThemeCarouselDay: String { return self._s[4013]! } + public var Stats_GrowthTitle: String { return self._s[4014]! } + public var Passport_Identity_TranslationHelp: String { return self._s[4015]! } public func VoiceOver_Chat_VideoMessageFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4015]!, self._r[4015]!, [_0]) - } - public func Notification_JoinedGroupByLink(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4016]!, self._r[4016]!, [_0]) } - public func DialogList_EncryptedChatStartedOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) { + public func Notification_JoinedGroupByLink(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4017]!, self._r[4017]!, [_0]) } - public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[4018]! } - public var Privacy_ChatsTitle: String { return self._s[4019]! } - public var DialogList_ClearHistoryConfirmation: String { return self._s[4020]! } - public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[4021]! } - public var Watch_Suggestion_HoldOn: String { return self._s[4022]! } - public var Group_EditAdmin_TransferOwnership: String { return self._s[4023]! } - public var WebBrowser_Title: String { return self._s[4024]! } - public var Group_LinkedChannel: String { return self._s[4025]! } - public var VoiceOver_Chat_SeenByRecipient: String { return self._s[4026]! } - public var SocksProxySetup_RequiredCredentials: String { return self._s[4027]! } - public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[4028]! } - public var Appearance_TextSize_UseSystem: String { return self._s[4029]! } - public var TwoStepAuth_EmailSkipAlert: String { return self._s[4030]! } - public var ScheduledMessages_RemindersTitle: String { return self._s[4032]! } - public var Channel_Setup_TypePublic: String { return self._s[4034]! } + public func DialogList_EncryptedChatStartedOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4018]!, self._r[4018]!, [_0]) + } + public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[4019]! } + public var Privacy_ChatsTitle: String { return self._s[4020]! } + public var DialogList_ClearHistoryConfirmation: String { return self._s[4021]! } + public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[4022]! } + public var Watch_Suggestion_HoldOn: String { return self._s[4023]! } + public var Group_EditAdmin_TransferOwnership: String { return self._s[4024]! } + public var WebBrowser_Title: String { return self._s[4025]! } + public var Group_LinkedChannel: String { return self._s[4026]! } + public var VoiceOver_Chat_SeenByRecipient: String { return self._s[4027]! } + public var SocksProxySetup_RequiredCredentials: String { return self._s[4028]! } + public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[4029]! } + public var Appearance_TextSize_UseSystem: String { return self._s[4030]! } + public var TwoStepAuth_EmailSkipAlert: String { return self._s[4031]! } + public var ScheduledMessages_RemindersTitle: String { return self._s[4033]! } + public var Channel_Setup_TypePublic: String { return self._s[4035]! } public func Channel_AdminLog_MessageToggleInvitesOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4035]!, self._r[4035]!, [_0]) + return formatWithArgumentRanges(self._s[4036]!, self._r[4036]!, [_0]) } - public var Channel_TypeSetup_Title: String { return self._s[4037]! } - public var MessagePoll_ViewResults: String { return self._s[4038]! } - public var Map_OpenInMaps: String { return self._s[4040]! } + public var Channel_TypeSetup_Title: String { return self._s[4038]! } + public var MessagePoll_ViewResults: String { return self._s[4039]! } + public var Map_OpenInMaps: String { return self._s[4041]! } public func PUSH_PINNED_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4041]!, self._r[4041]!, [_1]) + return formatWithArgumentRanges(self._s[4042]!, self._r[4042]!, [_1]) } - public var NotificationsSound_Tremolo: String { return self._s[4043]! } + public var NotificationsSound_Tremolo: String { return self._s[4044]! } public func Date_ChatDateHeaderYear(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4044]!, self._r[4044]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4045]!, self._r[4045]!, [_1, _2, _3]) } - public var ConversationProfile_UnknownAddMemberError: String { return self._s[4045]! } - public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[4046]! } - public var Passport_PasswordHelp: String { return self._s[4048]! } - public var Login_CodeExpiredError: String { return self._s[4049]! } - public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[4050]! } - public var Conversation_TitleUnmute: String { return self._s[4051]! } - public var Passport_Identity_ScansHelp: String { return self._s[4052]! } - public var Passport_Language_lo: String { return self._s[4053]! } - public var Camera_FlashAuto: String { return self._s[4054]! } - public var Conversation_OpenBotLinkOpen: String { return self._s[4055]! } - public var Common_Cancel: String { return self._s[4056]! } - public var DialogList_SavedMessagesTooltip: String { return self._s[4057]! } - public var TwoStepAuth_SetupPasswordTitle: String { return self._s[4058]! } - public var Appearance_TintAllColors: String { return self._s[4059]! } + public var ConversationProfile_UnknownAddMemberError: String { return self._s[4046]! } + public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[4047]! } + public var Passport_PasswordHelp: String { return self._s[4049]! } + public var Login_CodeExpiredError: String { return self._s[4050]! } + public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[4051]! } + public var Conversation_TitleUnmute: String { return self._s[4052]! } + public var Passport_Identity_ScansHelp: String { return self._s[4053]! } + public var Passport_Language_lo: String { return self._s[4054]! } + public var Camera_FlashAuto: String { return self._s[4055]! } + public var Conversation_OpenBotLinkOpen: String { return self._s[4056]! } + public var Common_Cancel: String { return self._s[4057]! } + public var DialogList_SavedMessagesTooltip: String { return self._s[4058]! } + public var TwoStepAuth_SetupPasswordTitle: String { return self._s[4059]! } + public var Appearance_TintAllColors: String { return self._s[4060]! } public func PUSH_MESSAGE_FWD(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4060]!, self._r[4060]!, [_1]) + return formatWithArgumentRanges(self._s[4061]!, self._r[4061]!, [_1]) } - public var Conversation_ReportSpamConfirmation: String { return self._s[4061]! } - public var ChatSettings_Title: String { return self._s[4063]! } - public var Passport_PasswordReset: String { return self._s[4064]! } - public var SocksProxySetup_TypeNone: String { return self._s[4065]! } - public var EditTheme_Title: String { return self._s[4068]! } - public var PhoneNumberHelp_Help: String { return self._s[4069]! } - public var Checkout_EnterPassword: String { return self._s[4070]! } - public var Activity_UploadingDocument: String { return self._s[4072]! } - public var Share_AuthTitle: String { return self._s[4073]! } - public var State_Connecting: String { return self._s[4074]! } - public var Profile_MessageLifetime1w: String { return self._s[4075]! } - public var Conversation_ContextMenuReport: String { return self._s[4076]! } - public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[4077]! } - public var AutoNightTheme_ScheduledTo: String { return self._s[4078]! } + public var Conversation_ReportSpamConfirmation: String { return self._s[4062]! } + public var ChatSettings_Title: String { return self._s[4064]! } + public var Passport_PasswordReset: String { return self._s[4065]! } + public var SocksProxySetup_TypeNone: String { return self._s[4066]! } + public var EditTheme_Title: String { return self._s[4069]! } + public var PhoneNumberHelp_Help: String { return self._s[4070]! } + public var Checkout_EnterPassword: String { return self._s[4071]! } + public var Activity_UploadingDocument: String { return self._s[4073]! } + public var Share_AuthTitle: String { return self._s[4074]! } + public var State_Connecting: String { return self._s[4075]! } + public var Profile_MessageLifetime1w: String { return self._s[4076]! } + public var Conversation_ContextMenuReport: String { return self._s[4077]! } + public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[4078]! } + public var AutoNightTheme_ScheduledTo: String { return self._s[4079]! } public func VoiceOver_Chat_AnonymousPollFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4079]!, self._r[4079]!, [_0]) + return formatWithArgumentRanges(self._s[4080]!, self._r[4080]!, [_0]) } - public var AuthSessions_Terminate: String { return self._s[4080]! } - public var Wallet_WordImport_CanNotRemember: String { return self._s[4081]! } - public var PeerInfo_PaneAudio: String { return self._s[4082]! } + public var AuthSessions_Terminate: String { return self._s[4081]! } + public var Wallet_WordImport_CanNotRemember: String { return self._s[4082]! } + public var PeerInfo_PaneAudio: String { return self._s[4083]! } public func Message_ForwardedPsa_covid(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4083]!, self._r[4083]!, [_0]) + return formatWithArgumentRanges(self._s[4084]!, self._r[4084]!, [_0]) } - public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[4085]! } - public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[4086]! } - public var PhotoEditor_Set: String { return self._s[4087]! } - public var EmptyGroupInfo_Title: String { return self._s[4088]! } - public var Login_PadPhoneHelp: String { return self._s[4090]! } - public var AutoDownloadSettings_TypeGroupChats: String { return self._s[4092]! } - public var PrivacyPolicy_DeclineLastWarning: String { return self._s[4094]! } - public var NotificationsSound_Complete: String { return self._s[4095]! } - public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[4096]! } - public var Group_Info_AdminLog: String { return self._s[4097]! } - public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[4098]! } + public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[4086]! } + public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[4087]! } + public var PhotoEditor_Set: String { return self._s[4088]! } + public var EmptyGroupInfo_Title: String { return self._s[4089]! } + public var Login_PadPhoneHelp: String { return self._s[4091]! } + public var AutoDownloadSettings_TypeGroupChats: String { return self._s[4093]! } + public var PrivacyPolicy_DeclineLastWarning: String { return self._s[4095]! } + public var NotificationsSound_Complete: String { return self._s[4096]! } + public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[4097]! } + public var Group_Info_AdminLog: String { return self._s[4098]! } + public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[4099]! } public func Wallet_Time_PreciseDate_m11(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4099]!, self._r[4099]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4100]!, self._r[4100]!, [_1, _2, _3]) } - public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[4100]! } - public var Group_Location_CreateInThisPlace: String { return self._s[4102]! } - public var Conversation_Admin: String { return self._s[4103]! } - public var Conversation_GifTooltip: String { return self._s[4104]! } - public var Passport_NotLoggedInMessage: String { return self._s[4105]! } + public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[4101]! } + public var Group_Location_CreateInThisPlace: String { return self._s[4103]! } + public var Conversation_Admin: String { return self._s[4104]! } + public var Conversation_GifTooltip: String { return self._s[4105]! } + public var Passport_NotLoggedInMessage: String { return self._s[4106]! } public func AutoDownloadSettings_OnFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4107]!, self._r[4107]!, [_0]) + return formatWithArgumentRanges(self._s[4108]!, self._r[4108]!, [_0]) } - public var Profile_MessageLifetimeForever: String { return self._s[4108]! } - public var SharedMedia_EmptyTitle: String { return self._s[4110]! } - public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[4112]! } - public var Username_Help: String { return self._s[4113]! } - public var DialogList_LanguageTooltip: String { return self._s[4115]! } - public var Map_LoadError: String { return self._s[4116]! } - public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[4117]! } - public var Channel_AdminLog_AddMembers: String { return self._s[4118]! } - public var ArchivedChats_IntroTitle2: String { return self._s[4119]! } - public var Notification_Exceptions_NewException: String { return self._s[4120]! } - public var TwoStepAuth_EmailTitle: String { return self._s[4121]! } - public var WatchRemote_AlertText: String { return self._s[4122]! } + public var Profile_MessageLifetimeForever: String { return self._s[4109]! } + public var SharedMedia_EmptyTitle: String { return self._s[4111]! } + public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[4113]! } + public var Username_Help: String { return self._s[4114]! } + public var DialogList_LanguageTooltip: String { return self._s[4116]! } + public var Map_LoadError: String { return self._s[4117]! } + public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[4118]! } + public var Channel_AdminLog_AddMembers: String { return self._s[4119]! } + public var ArchivedChats_IntroTitle2: String { return self._s[4120]! } + public var Notification_Exceptions_NewException: String { return self._s[4121]! } + public var TwoStepAuth_EmailTitle: String { return self._s[4122]! } + public var WatchRemote_AlertText: String { return self._s[4123]! } public func Wallet_Send_ConfirmationText(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4123]!, self._r[4123]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4124]!, self._r[4124]!, [_1, _2, _3]) } - public var ChatSettings_ConnectionType_Title: String { return self._s[4127]! } + public var ChatSettings_ConnectionType_Title: String { return self._s[4128]! } public func PUSH_PINNED_QUIZ(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4128]!, self._r[4128]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4129]!, self._r[4129]!, [_1, _2]) } public func Settings_CheckPhoneNumberTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4129]!, self._r[4129]!, [_0]) + return formatWithArgumentRanges(self._s[4130]!, self._r[4130]!, [_0]) } - public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[4130]! } - public var WebBrowser_DefaultBrowser: String { return self._s[4131]! } - public var Passport_Address_CountryPlaceholder: String { return self._s[4132]! } + public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[4131]! } + public var WebBrowser_DefaultBrowser: String { return self._s[4132]! } + public var Passport_Address_CountryPlaceholder: String { return self._s[4133]! } public func DialogList_AwaitingEncryption(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4133]!, self._r[4133]!, [_0]) + return formatWithArgumentRanges(self._s[4134]!, self._r[4134]!, [_0]) } public func Time_PreciseDate_m6(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4134]!, self._r[4134]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4135]!, self._r[4135]!, [_1, _2, _3]) } - public var Group_AdminLog_EmptyText: String { return self._s[4135]! } - public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[4136]! } - public var Conversation_PrivateChannelTooltip: String { return self._s[4138]! } - public var Wallet_Created_ExportErrorText: String { return self._s[4139]! } - public var ChatList_UndoArchiveText1: String { return self._s[4140]! } - public var ChatListFolder_IncludedSectionHeader: String { return self._s[4141]! } - public var AccessDenied_VideoMicrophone: String { return self._s[4142]! } - public var Conversation_ContextMenuStickerPackAdd: String { return self._s[4143]! } - public var Cache_ClearNone: String { return self._s[4144]! } - public var SocksProxySetup_FailedToConnect: String { return self._s[4145]! } - public var Permissions_NotificationsTitle_v0: String { return self._s[4146]! } + public var Group_AdminLog_EmptyText: String { return self._s[4136]! } + public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[4137]! } + public var Conversation_PrivateChannelTooltip: String { return self._s[4139]! } + public var Wallet_Created_ExportErrorText: String { return self._s[4140]! } + public var ChatList_UndoArchiveText1: String { return self._s[4141]! } + public var ChatListFolder_IncludedSectionHeader: String { return self._s[4142]! } + public var AccessDenied_VideoMicrophone: String { return self._s[4143]! } + public var Conversation_ContextMenuStickerPackAdd: String { return self._s[4144]! } + public var Cache_ClearNone: String { return self._s[4145]! } + public var SocksProxySetup_FailedToConnect: String { return self._s[4146]! } + public var Permissions_NotificationsTitle_v0: String { return self._s[4147]! } public func Channel_AdminLog_MessageEdited(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4147]!, self._r[4147]!, [_0]) + return formatWithArgumentRanges(self._s[4148]!, self._r[4148]!, [_0]) } - public var Passport_Identity_Country: String { return self._s[4148]! } + public var Passport_Identity_Country: String { return self._s[4149]! } public func ChatSettings_AutoDownloadSettings_TypeFile(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4149]!, self._r[4149]!, [_0]) - } - public func Notification_CreatedChat(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4150]!, self._r[4150]!, [_0]) } - public var Exceptions_AddToExceptions: String { return self._s[4151]! } - public var AccessDenied_Settings: String { return self._s[4152]! } - public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[4153]! } - public var Month_ShortMay: String { return self._s[4155]! } - public var Compose_NewGroup: String { return self._s[4157]! } - public var Group_Setup_TypePrivate: String { return self._s[4159]! } - public var Login_PadPhoneHelpTitle: String { return self._s[4161]! } - public var Appearance_ThemeDayClassic: String { return self._s[4162]! } - public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[4163]! } - public var AutoDownloadSettings_OffForAll: String { return self._s[4164]! } - public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[4165]! } - public var Conversation_typing: String { return self._s[4167]! } - public var Undo_ScheduledMessagesCleared: String { return self._s[4168]! } - public var Paint_Masks: String { return self._s[4169]! } - public var Contacts_DeselectAll: String { return self._s[4170]! } - public func Wallet_Updated_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4171]!, self._r[4171]!, [_0]) + public func Notification_CreatedChat(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4151]!, self._r[4151]!, [_0]) } - public var CreatePoll_MultipleChoiceQuizAlert: String { return self._s[4172]! } - public var Username_InvalidTaken: String { return self._s[4173]! } - public var Call_StatusNoAnswer: String { return self._s[4174]! } - public var TwoStepAuth_EmailAddSuccess: String { return self._s[4175]! } - public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[4176]! } - public var Passport_Identity_Selfie: String { return self._s[4177]! } - public var Login_InfoLastNamePlaceholder: String { return self._s[4178]! } - public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[4179]! } - public var Conversation_ClearSecretHistory: String { return self._s[4180]! } - public var PeopleNearby_Description: String { return self._s[4182]! } - public var NetworkUsageSettings_Title: String { return self._s[4183]! } - public var Your_cards_security_code_is_invalid: String { return self._s[4185]! } - public var Stats_EnabledNotifications: String { return self._s[4186]! } + public var Exceptions_AddToExceptions: String { return self._s[4152]! } + public var AccessDenied_Settings: String { return self._s[4153]! } + public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[4154]! } + public var Month_ShortMay: String { return self._s[4156]! } + public var Compose_NewGroup: String { return self._s[4158]! } + public var Group_Setup_TypePrivate: String { return self._s[4160]! } + public var Login_PadPhoneHelpTitle: String { return self._s[4162]! } + public var Appearance_ThemeDayClassic: String { return self._s[4163]! } + public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[4164]! } + public var AutoDownloadSettings_OffForAll: String { return self._s[4165]! } + public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[4166]! } + public var Conversation_typing: String { return self._s[4168]! } + public var Undo_ScheduledMessagesCleared: String { return self._s[4169]! } + public var Paint_Masks: String { return self._s[4170]! } + public var Contacts_DeselectAll: String { return self._s[4171]! } + public func Wallet_Updated_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4172]!, self._r[4172]!, [_0]) + } + public var CreatePoll_MultipleChoiceQuizAlert: String { return self._s[4173]! } + public var Username_InvalidTaken: String { return self._s[4174]! } + public var Call_StatusNoAnswer: String { return self._s[4175]! } + public var TwoStepAuth_EmailAddSuccess: String { return self._s[4176]! } + public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[4177]! } + public var Passport_Identity_Selfie: String { return self._s[4178]! } + public var Login_InfoLastNamePlaceholder: String { return self._s[4179]! } + public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[4180]! } + public var Conversation_ClearSecretHistory: String { return self._s[4181]! } + public var PeopleNearby_Description: String { return self._s[4183]! } + public var NetworkUsageSettings_Title: String { return self._s[4184]! } + public var Your_cards_security_code_is_invalid: String { return self._s[4186]! } + public var Stats_EnabledNotifications: String { return self._s[4187]! } public func Notification_LeftChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4188]!, self._r[4188]!, [_0]) + return formatWithArgumentRanges(self._s[4189]!, self._r[4189]!, [_0]) } public func Call_CallInProgressMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4189]!, self._r[4189]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4190]!, self._r[4190]!, [_1, _2]) } - public var SaveIncomingPhotosSettings_From: String { return self._s[4191]! } - public var VoiceOver_Navigation_Search: String { return self._s[4192]! } - public var Map_LiveLocationTitle: String { return self._s[4193]! } - public var Login_InfoAvatarAdd: String { return self._s[4194]! } - public var Passport_Identity_FilesView: String { return self._s[4195]! } - public var ChatListFolderSettings_Title: String { return self._s[4196]! } - public var UserInfo_GenericPhoneLabel: String { return self._s[4197]! } - public var Privacy_Calls_NeverAllow: String { return self._s[4198]! } - public var VoiceOver_Chat_File: String { return self._s[4199]! } - public var Wallet_Settings_DeleteWalletInfo: String { return self._s[4200]! } + public var SaveIncomingPhotosSettings_From: String { return self._s[4192]! } + public var VoiceOver_Navigation_Search: String { return self._s[4193]! } + public var Map_LiveLocationTitle: String { return self._s[4194]! } + public var Login_InfoAvatarAdd: String { return self._s[4195]! } + public var Passport_Identity_FilesView: String { return self._s[4196]! } + public var ChatListFolderSettings_Title: String { return self._s[4197]! } + public var UserInfo_GenericPhoneLabel: String { return self._s[4198]! } + public var Privacy_Calls_NeverAllow: String { return self._s[4199]! } + public var VoiceOver_Chat_File: String { return self._s[4200]! } + public var Wallet_Settings_DeleteWalletInfo: String { return self._s[4201]! } public func Contacts_AddPhoneNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4201]!, self._r[4201]!, [_0]) + return formatWithArgumentRanges(self._s[4202]!, self._r[4202]!, [_0]) } - public var ChatList_EmptyChatList: String { return self._s[4203]! } - public var ContactInfo_PhoneNumberHidden: String { return self._s[4204]! } - public var TwoStepAuth_ConfirmationText: String { return self._s[4205]! } - public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[4206]! } + public var ChatList_EmptyChatList: String { return self._s[4204]! } + public var ContactInfo_PhoneNumberHidden: String { return self._s[4205]! } + public var TwoStepAuth_ConfirmationText: String { return self._s[4206]! } + public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[4207]! } public func PUSH_CHAT_MESSAGE_VIDEOS(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4207]!, self._r[4207]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4208]!, self._r[4208]!, [_1, _2, _3]) } - public var Channel_AdminLogFilter_AdminsAll: String { return self._s[4208]! } - public var Wallet_Intro_CreateErrorText: String { return self._s[4209]! } - public var Tour_Title2: String { return self._s[4210]! } - public var Wallet_Sent_ViewWallet: String { return self._s[4211]! } - public var Conversation_FileOpenIn: String { return self._s[4212]! } - public var Checkout_ErrorPrecheckoutFailed: String { return self._s[4213]! } - public var Wallet_Send_ErrorInvalidAddress: String { return self._s[4214]! } - public var Wallpaper_Set: String { return self._s[4215]! } - public var Passport_Identity_Translations: String { return self._s[4217]! } + public var Channel_AdminLogFilter_AdminsAll: String { return self._s[4209]! } + public var Wallet_Intro_CreateErrorText: String { return self._s[4210]! } + public var Tour_Title2: String { return self._s[4211]! } + public var Wallet_Sent_ViewWallet: String { return self._s[4212]! } + public var Conversation_FileOpenIn: String { return self._s[4213]! } + public var Checkout_ErrorPrecheckoutFailed: String { return self._s[4214]! } + public var Wallet_Send_ErrorInvalidAddress: String { return self._s[4215]! } + public var Wallpaper_Set: String { return self._s[4216]! } + public var Passport_Identity_Translations: String { return self._s[4218]! } public func Channel_AdminLog_MessageChangedChannelAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4218]!, self._r[4218]!, [_0]) + return formatWithArgumentRanges(self._s[4219]!, self._r[4219]!, [_0]) } - public var Channel_LeaveChannel: String { return self._s[4219]! } + public var Channel_LeaveChannel: String { return self._s[4220]! } public func PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4220]!, self._r[4220]!, [_1]) + return formatWithArgumentRanges(self._s[4221]!, self._r[4221]!, [_1]) } - public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[4222]! } - public var PhotoEditor_HighlightsTint: String { return self._s[4223]! } - public var MessagePoll_LabelPoll: String { return self._s[4224]! } - public var Passport_Email_Delete: String { return self._s[4225]! } - public var Conversation_Mute: String { return self._s[4227]! } - public var Channel_AddBotAsAdmin: String { return self._s[4228]! } - public var Channel_AdminLog_CanSendMessages: String { return self._s[4230]! } - public var Wallet_Configuration_BlockchainNameChangedText: String { return self._s[4231]! } - public var ChatSettings_IntentsSettings: String { return self._s[4233]! } - public var Channel_Management_LabelOwner: String { return self._s[4234]! } + public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[4223]! } + public var PhotoEditor_HighlightsTint: String { return self._s[4224]! } + public var MessagePoll_LabelPoll: String { return self._s[4225]! } + public var Passport_Email_Delete: String { return self._s[4226]! } + public var Conversation_Mute: String { return self._s[4228]! } + public var Channel_AddBotAsAdmin: String { return self._s[4229]! } + public var Channel_AdminLog_CanSendMessages: String { return self._s[4231]! } + public var Wallet_Configuration_BlockchainNameChangedText: String { return self._s[4232]! } + public var ChatSettings_IntentsSettings: String { return self._s[4234]! } + public var Channel_Management_LabelOwner: String { return self._s[4235]! } public func Notification_PassportValuesSentMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4235]!, self._r[4235]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4236]!, self._r[4236]!, [_1, _2]) } - public var Calls_CallTabDescription: String { return self._s[4236]! } - public var Passport_Identity_NativeNameHelp: String { return self._s[4237]! } - public var Common_No: String { return self._s[4238]! } - public var Weekday_Sunday: String { return self._s[4239]! } - public var Notification_Reply: String { return self._s[4240]! } - public var Conversation_ViewMessage: String { return self._s[4241]! } + public var Calls_CallTabDescription: String { return self._s[4237]! } + public var Passport_Identity_NativeNameHelp: String { return self._s[4238]! } + public var Common_No: String { return self._s[4239]! } + public var Weekday_Sunday: String { return self._s[4240]! } + public var Notification_Reply: String { return self._s[4241]! } + public var Conversation_ViewMessage: String { return self._s[4242]! } public func Checkout_SavePasswordTimeoutAndFaceId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4242]!, self._r[4242]!, [_0]) - } - public func Map_LiveLocationPrivateDescription(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4243]!, self._r[4243]!, [_0]) } + public func Map_LiveLocationPrivateDescription(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4244]!, self._r[4244]!, [_0]) + } public func Wallet_Time_PreciseDate_m7(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4244]!, self._r[4244]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4245]!, self._r[4245]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[4245]! } - public var Wallet_Send_Title: String { return self._s[4246]! } - public var Message_PinnedDocumentMessage: String { return self._s[4247]! } - public var Wallet_Info_RefreshErrorText: String { return self._s[4248]! } - public var DialogList_TabTitle: String { return self._s[4250]! } - public var ChatSettings_AutoPlayTitle: String { return self._s[4251]! } - public var Passport_FieldEmail: String { return self._s[4252]! } - public var Conversation_UnpinMessageAlert: String { return self._s[4253]! } - public var Passport_Address_TypeBankStatement: String { return self._s[4254]! } - public var Wallet_SecureStorageReset_Title: String { return self._s[4255]! } - public var Passport_Identity_ExpiryDate: String { return self._s[4256]! } - public var Privacy_Calls_P2P: String { return self._s[4257]! } + public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[4246]! } + public var Wallet_Send_Title: String { return self._s[4247]! } + public var Message_PinnedDocumentMessage: String { return self._s[4248]! } + public var Wallet_Info_RefreshErrorText: String { return self._s[4249]! } + public var DialogList_TabTitle: String { return self._s[4251]! } + public var ChatSettings_AutoPlayTitle: String { return self._s[4252]! } + public var Passport_FieldEmail: String { return self._s[4253]! } + public var Conversation_UnpinMessageAlert: String { return self._s[4254]! } + public var Passport_Address_TypeBankStatement: String { return self._s[4255]! } + public var Wallet_SecureStorageReset_Title: String { return self._s[4256]! } + public var Passport_Identity_ExpiryDate: String { return self._s[4257]! } + public var Privacy_Calls_P2P: String { return self._s[4258]! } public func CancelResetAccount_Success(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4259]!, self._r[4259]!, [_0]) + return formatWithArgumentRanges(self._s[4260]!, self._r[4260]!, [_0]) } - public var SocksProxySetup_UseForCallsHelp: String { return self._s[4260]! } + public var SocksProxySetup_UseForCallsHelp: String { return self._s[4261]! } public func PUSH_CHAT_ALBUM(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4261]!, self._r[4261]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4262]!, self._r[4262]!, [_1, _2]) } - public var Stickers_ClearRecent: String { return self._s[4262]! } - public var EnterPasscode_ChangeTitle: String { return self._s[4263]! } - public var TwoFactorSetup_Email_Title: String { return self._s[4264]! } - public var Passport_InfoText: String { return self._s[4265]! } - public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[4266]! } + public var Stickers_ClearRecent: String { return self._s[4263]! } + public var EnterPasscode_ChangeTitle: String { return self._s[4264]! } + public var TwoFactorSetup_Email_Title: String { return self._s[4265]! } + public var Passport_InfoText: String { return self._s[4266]! } + public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[4267]! } public func Login_InvalidPhoneEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4267]!, self._r[4267]!, [_0]) + return formatWithArgumentRanges(self._s[4268]!, self._r[4268]!, [_0]) } public func Time_PreciseDate_m3(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4268]!, self._r[4268]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[4269]!, self._r[4269]!, [_1, _2, _3]) } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[4269]! } - public var ScheduledMessages_PollUnavailable: String { return self._s[4270]! } - public var VoiceOver_Navigation_Compose: String { return self._s[4271]! } - public var Passport_Identity_EditDriversLicense: String { return self._s[4272]! } - public var Conversation_TapAndHoldToRecord: String { return self._s[4274]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[4275]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[4270]! } + public var ScheduledMessages_PollUnavailable: String { return self._s[4271]! } + public var VoiceOver_Navigation_Compose: String { return self._s[4272]! } + public var Passport_Identity_EditDriversLicense: String { return self._s[4273]! } + public var Conversation_TapAndHoldToRecord: String { return self._s[4275]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[4276]! } public func Notification_CallTimeFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4276]!, self._r[4276]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4277]!, self._r[4277]!, [_1, _2]) } - public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[4279]! } - public var ChatSettings_OpenLinksIn: String { return self._s[4280]! } - public var Map_HomeAndWorkTitle: String { return self._s[4281]! } + public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[4280]! } + public var ChatSettings_OpenLinksIn: String { return self._s[4281]! } + public var Map_HomeAndWorkTitle: String { return self._s[4282]! } public func Generic_OpenHiddenLinkAlert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4283]!, self._r[4283]!, [_0]) + return formatWithArgumentRanges(self._s[4284]!, self._r[4284]!, [_0]) } - public var DialogList_Unread: String { return self._s[4284]! } + public var DialogList_Unread: String { return self._s[4285]! } public func PUSH_CHAT_MESSAGE_GIF(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4285]!, self._r[4285]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4286]!, self._r[4286]!, [_1, _2]) } - public var User_DeletedAccount: String { return self._s[4286]! } - public var ChatList_TabIconFoldersTooltipEmptyFolders: String { return self._s[4287]! } - public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[4288]! } + public var User_DeletedAccount: String { return self._s[4287]! } + public var ChatList_TabIconFoldersTooltipEmptyFolders: String { return self._s[4288]! } + public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[4289]! } public func Watch_Time_ShortYesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4289]!, self._r[4289]!, [_0]) + return formatWithArgumentRanges(self._s[4290]!, self._r[4290]!, [_0]) } - public var UserInfo_NotificationsDefault: String { return self._s[4290]! } - public var SharedMedia_CategoryMedia: String { return self._s[4291]! } - public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[4292]! } - public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[4293]! } - public var Watch_ChatList_Compose: String { return self._s[4294]! } - public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[4295]! } - public var AutoDownloadSettings_Delimeter: String { return self._s[4296]! } - public var Watch_Microphone_Access: String { return self._s[4297]! } - public var Group_Setup_HistoryHeader: String { return self._s[4298]! } - public var Map_SetThisLocation: String { return self._s[4299]! } - public var Appearance_ThemePreview_Chat_2_ReplyName: String { return self._s[4300]! } - public var Activity_UploadingPhoto: String { return self._s[4301]! } - public var Conversation_Edit: String { return self._s[4303]! } - public var Group_ErrorSendRestrictedMedia: String { return self._s[4304]! } - public var Login_TermsOfServiceDecline: String { return self._s[4305]! } - public var Message_PinnedContactMessage: String { return self._s[4306]! } + public var UserInfo_NotificationsDefault: String { return self._s[4291]! } + public var SharedMedia_CategoryMedia: String { return self._s[4292]! } + public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[4293]! } + public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[4294]! } + public var Watch_ChatList_Compose: String { return self._s[4295]! } + public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[4296]! } + public var AutoDownloadSettings_Delimeter: String { return self._s[4297]! } + public var Watch_Microphone_Access: String { return self._s[4298]! } + public var Group_Setup_HistoryHeader: String { return self._s[4299]! } + public var Map_SetThisLocation: String { return self._s[4300]! } + public var Appearance_ThemePreview_Chat_2_ReplyName: String { return self._s[4301]! } + public var Activity_UploadingPhoto: String { return self._s[4302]! } + public var Conversation_Edit: String { return self._s[4304]! } + public var Group_ErrorSendRestrictedMedia: String { return self._s[4305]! } + public var Login_TermsOfServiceDecline: String { return self._s[4306]! } + public var Message_PinnedContactMessage: String { return self._s[4307]! } public func Channel_AdminLog_MessageRestrictedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4307]!, self._r[4307]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4308]!, self._r[4308]!, [_1, _2]) } public func Login_PhoneBannedEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4308]!, self._r[4308]!, [_1, _2, _3, _4, _5]) + return formatWithArgumentRanges(self._s[4309]!, self._r[4309]!, [_1, _2, _3, _4, _5]) } - public var Appearance_LargeEmoji: String { return self._s[4309]! } - public var TwoStepAuth_AdditionalPassword: String { return self._s[4311]! } - public var EditTheme_Edit_Preview_IncomingReplyText: String { return self._s[4312]! } + public var Appearance_LargeEmoji: String { return self._s[4310]! } + public var TwoStepAuth_AdditionalPassword: String { return self._s[4312]! } + public var EditTheme_Edit_Preview_IncomingReplyText: String { return self._s[4313]! } public func PUSH_CHAT_DELETE_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4313]!, self._r[4313]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4314]!, self._r[4314]!, [_1, _2]) } - public var Passport_Phone_EnterOtherNumber: String { return self._s[4314]! } - public var Message_PinnedPhotoMessage: String { return self._s[4315]! } - public var Passport_FieldPhone: String { return self._s[4316]! } - public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[4317]! } - public var Stats_NotificationsTitle: String { return self._s[4318]! } - public var ChatSettings_AutoPlayGifs: String { return self._s[4319]! } - public var InfoPlist_NSCameraUsageDescription: String { return self._s[4321]! } - public var Conversation_Call: String { return self._s[4322]! } - public var Common_TakePhoto: String { return self._s[4324]! } - public var Group_EditAdmin_RankTitle: String { return self._s[4325]! } - public var Wallet_Receive_CommentHeader: String { return self._s[4326]! } - public var Channel_NotificationLoading: String { return self._s[4327]! } + public var Passport_Phone_EnterOtherNumber: String { return self._s[4315]! } + public var Message_PinnedPhotoMessage: String { return self._s[4316]! } + public var Passport_FieldPhone: String { return self._s[4317]! } + public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[4318]! } + public var Stats_NotificationsTitle: String { return self._s[4319]! } + public var ChatSettings_AutoPlayGifs: String { return self._s[4320]! } + public var InfoPlist_NSCameraUsageDescription: String { return self._s[4322]! } + public var Conversation_Call: String { return self._s[4323]! } + public var Common_TakePhoto: String { return self._s[4325]! } + public var Group_EditAdmin_RankTitle: String { return self._s[4326]! } + public var Wallet_Receive_CommentHeader: String { return self._s[4327]! } + public var Channel_NotificationLoading: String { return self._s[4328]! } public func Notification_Exceptions_Sound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4328]!, self._r[4328]!, [_0]) - } - public func ScheduledMessages_ScheduledDate(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4329]!, self._r[4329]!, [_0]) } + public func ScheduledMessages_ScheduledDate(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4330]!, self._r[4330]!, [_0]) + } public func PUSH_CHANNEL_MESSAGE_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4330]!, self._r[4330]!, [_1]) + return formatWithArgumentRanges(self._s[4331]!, self._r[4331]!, [_1]) } - public var Permissions_SiriTitle_v0: String { return self._s[4331]! } + public var Permissions_SiriTitle_v0: String { return self._s[4332]! } public func VoiceOver_Chat_VoiceMessageFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4332]!, self._r[4332]!, [_0]) - } - public func Login_ResetAccountProtected_Text(_ _0: String) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4333]!, self._r[4333]!, [_0]) } - public var Channel_MessagePhotoRemoved: String { return self._s[4334]! } - public var Wallet_Info_ReceiveGrams: String { return self._s[4335]! } - public var ClearCache_FreeSpace: String { return self._s[4336]! } - public var Appearance_BubbleCorners_Apply: String { return self._s[4337]! } - public var Common_edit: String { return self._s[4338]! } - public var PrivacySettings_AuthSessions: String { return self._s[4339]! } - public var Month_ShortJune: String { return self._s[4340]! } - public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[4341]! } - public var Call_ReportSend: String { return self._s[4342]! } - public var Watch_LastSeen_JustNow: String { return self._s[4343]! } - public var Notifications_MessageNotifications: String { return self._s[4344]! } - public var WallpaperSearch_ColorGreen: String { return self._s[4345]! } - public var BroadcastListInfo_AddRecipient: String { return self._s[4347]! } - public var Group_Status: String { return self._s[4348]! } + public func Login_ResetAccountProtected_Text(_ _0: String) -> (String, [(Int, NSRange)]) { + return formatWithArgumentRanges(self._s[4334]!, self._r[4334]!, [_0]) + } + public var Channel_MessagePhotoRemoved: String { return self._s[4335]! } + public var Wallet_Info_ReceiveGrams: String { return self._s[4336]! } + public var ClearCache_FreeSpace: String { return self._s[4337]! } + public var Appearance_BubbleCorners_Apply: String { return self._s[4338]! } + public var Common_edit: String { return self._s[4339]! } + public var PrivacySettings_AuthSessions: String { return self._s[4340]! } + public var Month_ShortJune: String { return self._s[4341]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[4342]! } + public var Call_ReportSend: String { return self._s[4343]! } + public var Watch_LastSeen_JustNow: String { return self._s[4344]! } + public var Notifications_MessageNotifications: String { return self._s[4345]! } + public var WallpaperSearch_ColorGreen: String { return self._s[4346]! } + public var BroadcastListInfo_AddRecipient: String { return self._s[4348]! } + public var Group_Status: String { return self._s[4349]! } public func AutoNightTheme_LocationHelp(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4349]!, self._r[4349]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4350]!, self._r[4350]!, [_0, _1]) } - public var TextFormat_AddLinkTitle: String { return self._s[4350]! } - public var ShareMenu_ShareTo: String { return self._s[4351]! } - public var Conversation_Moderate_Ban: String { return self._s[4352]! } + public var TextFormat_AddLinkTitle: String { return self._s[4351]! } + public var ShareMenu_ShareTo: String { return self._s[4352]! } + public var Conversation_Moderate_Ban: String { return self._s[4353]! } public func Conversation_DeleteMessagesFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4353]!, self._r[4353]!, [_0]) + return formatWithArgumentRanges(self._s[4354]!, self._r[4354]!, [_0]) } - public var SharedMedia_ViewInChat: String { return self._s[4354]! } - public var Map_LiveLocationFor8Hours: String { return self._s[4355]! } + public var SharedMedia_ViewInChat: String { return self._s[4355]! } + public var Map_LiveLocationFor8Hours: String { return self._s[4356]! } public func PUSH_PINNED_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4356]!, self._r[4356]!, [_1]) + return formatWithArgumentRanges(self._s[4357]!, self._r[4357]!, [_1]) } public func PUSH_PINNED_POLL(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4357]!, self._r[4357]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4358]!, self._r[4358]!, [_1, _2]) } public func Map_AccurateTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4359]!, self._r[4359]!, [_0]) + return formatWithArgumentRanges(self._s[4360]!, self._r[4360]!, [_0]) } - public var Map_OpenInHereMaps: String { return self._s[4360]! } - public var Appearance_ReduceMotion: String { return self._s[4361]! } + public var Map_OpenInHereMaps: String { return self._s[4361]! } + public var Appearance_ReduceMotion: String { return self._s[4362]! } public func PUSH_MESSAGE_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4362]!, self._r[4362]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4363]!, self._r[4363]!, [_1, _2]) } - public var Channel_Setup_TypePublicHelp: String { return self._s[4363]! } - public var Passport_Identity_EditInternalPassport: String { return self._s[4364]! } - public var PhotoEditor_Skip: String { return self._s[4365]! } - public func MuteExpires_Hours(_ value: Int32) -> String { + public var Channel_Setup_TypePublicHelp: String { return self._s[4364]! } + public var Passport_Identity_EditInternalPassport: String { return self._s[4365]! } + public var PhotoEditor_Skip: String { return self._s[4366]! } + public func Call_Seconds(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, stringValue) } - public func VoiceOver_Chat_ContactPhoneNumberCount(_ value: Int32) -> String { + public func Invitation_Members(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, _1, _2) + public func MessageTimer_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, stringValue) } - public func Media_ShareVideo(_ value: Int32) -> String { + public func MessageTimer_ShortMinutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_StatusSubscribers(_ value: Int32) -> String { + public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, stringValue) } - public func PeopleNearby_ShowMorePeople(_ value: Int32) -> String { + public func MuteFor_Hours(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notifications_Exceptions(_ value: Int32) -> String { + public func StickerPack_AddMaskCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, stringValue) } - public func ChatListFilter_ShowMoreChats(_ value: Int32) -> String { + public func MessageTimer_Seconds(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, stringValue) } - public func OldChannels_InactiveMonth(_ value: Int32) -> String { + public func Media_ShareVideo(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, stringValue) } - public func PollResults_ShowMore(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedLocations(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, _1, _2) + return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, _1, _2) } - public func ForwardedGifs(_ value: Int32) -> String { + public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Conversation_StatusSubscribers(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) } - public func SharedMedia_Link(_ value: Int32) -> String { + public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func Conversation_SelectedMessages(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue) } - public func Watch_UserInfo_Mute(_ value: Int32) -> String { + public func ForwardedMessages(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, stringValue) } - public func ChatList_MessagePhotos(_ value: Int32) -> String { + public func SharedMedia_File(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue) + public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, _1, _2) } - public func StickerPack_AddStickerCount(_ value: Int32) -> String { + public func AttachmentMenu_SendGif(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_Hours(_ value: Int32) -> String { + public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, stringValue) } - public func Media_SharePhoto(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, stringValue) + public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, _2, _1, _3) } - public func ForwardedAudios(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue) + public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, _1, _2) } - public func MessageTimer_Seconds(_ value: Int32) -> String { + public func Call_ShortSeconds(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, _1, _2) + public func StickerPack_AddStickerCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, stringValue) } - public func OldChannels_InactiveWeek(_ value: Int32) -> String { + public func SharedMedia_Photo(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue) } - public func VoiceOver_Chat_PollVotes(_ value: Int32) -> String { + public func SharedMedia_Generic(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue) } - public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { + public func Notification_GameScoreSimple(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_ShortWeeks(_ value: Int32) -> String { + public func ChatList_SelectedChats(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue) } - public func GroupInfo_ParticipantCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, _1, _2) + return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, _2, _1, _3) } - public func Call_Minutes(_ value: Int32) -> String { + public func PollResults_ShowMore(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_Leave(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MuteFor_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_MessageForwards(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) - } - public func UserCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusOnline(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedStickers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_File(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func MuteExpires_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) - } - public func QuickSend_Photos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Map_ETAHours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_SelectedChats(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func ForwardedPhotos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Generic(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) } public func AttachmentMenu_SendVideo(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue) } - public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { + public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func SharedMedia_Link(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue) } - public func GroupInfo_ShowMoreMembers(_ value: Int32) -> String { + public func OldChannels_InactiveWeek(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_InactiveYear(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedGifs(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_UserInfo_Mute(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedPhotos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_MessageViews(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) + } + public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) } public func MessageTimer_ShortDays(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) } - public func Contacts_InviteContacts(_ value: Int32) -> String { + public func SharedMedia_Video(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func VoiceOver_Chat_PollOptionCount(_ value: Int32) -> String { + public func ForwardedLocations(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue) } - public func ChatList_DeleteConfirmation(_ value: Int32) -> String { + public func AttachmentMenu_SendItem(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedPolls(_ value: Int32) -> String { + public func QuickSend_Photos(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessagePoll_VotedCount(_ value: Int32) -> String { + public func ForwardedContacts(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue) } public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteFor_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Passport_Scans(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Wallet_Updated_HoursAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_Exceptions(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LastSeen_HoursAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Contacts_ImportersCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_ShortHours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedVideoMessages(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MuteExpires_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Years(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Weeks(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedFiles(_ value: Int32) -> String { + public func MessageTimer_ShortWeeks(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue) } - public func StickerPack_AddMaskCount(_ value: Int32) -> String { + public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) @@ -5212,326 +5212,327 @@ public final class PresentationStrings: Equatable { let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, stringValue) } - public func Passport_Scans(_ value: Int32) -> String { + public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, stringValue) } - public func StickerPack_StickerCount(_ value: Int32) -> String { + public func MuteExpires_Minutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, _1, _2) + public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, _2, _1, _3) + public func VoiceOver_Chat_ContactPhoneNumberCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, stringValue) } - public func Contacts_ImportersCount(_ value: Int32) -> String { + public func GroupInfo_ParticipantCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue) } - public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { + public func Media_ShareItem(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Wallet_Updated_HoursAgo(_ value: Int32) -> String { + public func MessagePoll_VotedCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortHours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_MessageVideos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) - } - public func LastSeen_HoursAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Wallet_Updated_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_ShareItem(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedVideos(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Years(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_Seconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_MessageViews(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) - } - public func InstantPage_Views(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Video(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_DeletedChats(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessagePoll_QuizCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedVideoMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) - } - public func InviteText_ContactsCountText(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_ShortMinutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortMinutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Theme_UsersCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Minutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSelfSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Call_ShortSeconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Months(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) } public func OldChannels_GroupFormat(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) } - public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String { + public func MuteExpires_Hours(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue) } - public func AttachmentMenu_SendItem(_ value: Int32) -> String { + public func LiveLocation_MenuChatsCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { + public func ChatList_MessagePhotos(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue) } - public func Invitation_Members(_ value: Int32) -> String { + public func ChatList_MessageVideos(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[108 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue) } - public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { + public func Notification_GameScoreExtended(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[109 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + public func Conversation_StatusOnline(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatListFilter_ShowMoreChats(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_PollVotes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[110 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func ForwardedContacts(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[111 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[112 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[113 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func MuteFor_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[114 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_Weeks(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[115 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_SelectedMessages(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[116 * 6 + Int(form.rawValue)]!, stringValue) - } - public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[117 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_StatusMembers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[118 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[119 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func LastSeen_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[120 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[121 * 6 + Int(form.rawValue)]!, _0, _1) - } - public func OldChannels_InactiveYear(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[122 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, _2, _1, _3) } public func VoiceOver_Chat_ContactEmailCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[123 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue) } - public func MuteExpires_Minutes(_ value: Int32) -> String { + public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[124 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) } - public func AttachmentMenu_SendGif(_ value: Int32) -> String { + public func GroupInfo_ShowMoreMembers(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[125 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue) } - public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { + public func Map_ETAHours(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[126 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notification_GameScoreSimple(_ value: Int32) -> String { + public func CreatePoll_AddMoreOptions(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[127 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue) } - public func StickerPack_RemoveStickerCount(_ value: Int32) -> String { + public func ForwardedPolls(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[128 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) } - public func SharedMedia_Photo(_ value: Int32) -> String { + public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Conversation_StatusMembers(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[129 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) } - public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { + public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[130 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue) } public func Map_ETAMinutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[131 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedAudios(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_DeletedChats(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func StickerPack_StickerCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Wallet_Updated_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedFiles(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Contacts_InviteContacts(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue) + } + public func UserCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_MessageForwards(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_Leave(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedVideos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[108 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func MessageTimer_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[109 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[110 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Theme_UsersCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[111 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[112 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func MessagePoll_QuizCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[113 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_InactiveMonth(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[114 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[115 * 6 + Int(form.rawValue)]!, stringValue) } public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[132 * 6 + Int(form.rawValue)]!, _1, _2) + return String(format: self._ps[116 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Media_SharePhoto(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[117 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[118 * 6 + Int(form.rawValue)]!, stringValue) + } + public func InviteText_ContactsCountText(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[119 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_Minutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[120 * 6 + Int(form.rawValue)]!, stringValue) + } + public func AttachmentMenu_SendPhoto(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[121 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_PollOptionCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[122 * 6 + Int(form.rawValue)]!, stringValue) + } + public func MessageTimer_Months(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[123 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[124 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[125 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func ChatList_DeleteConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[126 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[127 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Call_ShortMinutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[128 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[129 * 6 + Int(form.rawValue)]!, _0, _1) + } + public func PeopleNearby_ShowMorePeople(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[130 * 6 + Int(form.rawValue)]!, stringValue) + } + public func InstantPage_Views(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[131 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ForwardedStickers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[132 * 6 + Int(form.rawValue)]!, stringValue) } public init(primaryComponent: PresentationStringsComponent, secondaryComponent: PresentationStringsComponent?, groupingSeparator: String) { diff --git a/submodules/TelegramUI/Resources/PresentationStrings.mapping b/submodules/TelegramUI/Resources/PresentationStrings.mapping index 2c3b952f62566be9b1d972cf086e9dc2fd66c4ad..f854e25a9905af7df41a72388aac8267739d7c05 100644 GIT binary patch delta 7733 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 b{LM5+VEmo5aW>-i8c;r_!2X* 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 ZS1T_x-wU3|<2aDTce*c@aEY-(@V^AA2gm>b diff --git a/submodules/TelegramUI/Sources/ChatController.swift b/submodules/TelegramUI/Sources/ChatController.swift index 8511d3895f..331a840742 100644 --- a/submodules/TelegramUI/Sources/ChatController.swift +++ b/submodules/TelegramUI/Sources/ChatController.swift @@ -9069,7 +9069,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G }) } }), - KeyShortcut(input: "F", modifiers: [.command], action: { [weak self] in + KeyShortcut(title: strings.KeyCommand_SearchInChat, input: "F", modifiers: [.command], action: { [weak self] in if let strongSelf = self { strongSelf.beginMessageSearch("") } diff --git a/submodules/TelegramUI/Sources/PeerInfo/Panes/PeerInfoListPaneNode.swift b/submodules/TelegramUI/Sources/PeerInfo/Panes/PeerInfoListPaneNode.swift index b4dab234ff..414c34cc5c 100644 --- a/submodules/TelegramUI/Sources/PeerInfo/Panes/PeerInfoListPaneNode.swift +++ b/submodules/TelegramUI/Sources/PeerInfo/Panes/PeerInfoListPaneNode.swift @@ -213,7 +213,7 @@ final class PeerInfoListPaneNode: ASDisplayNode, PeerInfoPaneNode { } let mediaAccessoryPanel = MediaNavigationAccessoryPanel(context: self.context) - mediaAccessoryPanel.containerNode.headerNode.displayScrubber = type != .voice + mediaAccessoryPanel.containerNode.headerNode.displayScrubber = item.playbackData?.type != .instantVideo mediaAccessoryPanel.close = { [weak self] in if let strongSelf = self, let (_, _, _, _, type, _) = strongSelf.playlistStateAndType { strongSelf.context.sharedContext.mediaManager.setPlaylist(nil, type: type, control: SharedMediaPlayerControlAction.playback(.pause)) diff --git a/submodules/WebSearchUI/Sources/LegacyWebSearchGallery.swift b/submodules/WebSearchUI/Sources/LegacyWebSearchGallery.swift index c9158573a6..dbf1098e8f 100644 --- a/submodules/WebSearchUI/Sources/LegacyWebSearchGallery.swift +++ b/submodules/WebSearchUI/Sources/LegacyWebSearchGallery.swift @@ -421,14 +421,51 @@ public func legacyEnqueueWebSearchMessages(_ selectionState: TGMediaSelectionCon var signals: [Any] = [] for result in results { let editableItem = LegacyWebSearchItem(result: result) - if editingState.adjustments(for: editableItem) != nil { + if let adjustments = editingState.adjustments(for: editableItem) { + var animated = false + if let entities = adjustments.paintingData?.entities { + for entity in entities { + if let paintEntity = entity as? TGPhotoPaintEntity, paintEntity.animated { + animated = true + break + } + } + } + if let imageSignal = editingState.imageSignal(for: editableItem) { let signal = imageSignal.map { image -> Any in if let image = image as? UIImage { - let dict: [AnyHashable: Any] = [ + var dict: [AnyHashable: Any] = [ "type": "editedPhoto", "image": image ] + + if animated { + dict["isAnimation"] = true + if let photoEditorValues = adjustments as? PGPhotoEditorValues { + dict["adjustments"] = TGVideoEditAdjustments(photoEditorValues: photoEditorValues) + } + + let filePath = NSTemporaryDirectory().appending("/gifvideo_\(arc4random()).jpg") + let data = image.jpegData(compressionQuality: 0.8) + if let data = data { + let _ = try? data.write(to: URL(fileURLWithPath: filePath), options: []) + } + dict["url"] = NSURL(fileURLWithPath: filePath) + + if adjustments.cropApplied(forAvatar: false) || adjustments.hasPainting() || adjustments.toolsApplied() { + var paintingImage: UIImage? = adjustments.paintingData?.stillImage + if paintingImage == nil { + paintingImage = adjustments.paintingData?.image + } + + let thumbnailImage = TGPhotoEditorVideoExtCrop(image, paintingImage, adjustments.cropOrientation, adjustments.cropRotation, adjustments.cropRect, adjustments.cropMirrored, TGScaleToFill(image.size, CGSize(width: 512.0, height: 512.0)), adjustments.originalSize, true, true, true) + if let thumbnailImage = thumbnailImage { + dict["previewImage"] = thumbnailImage + } + } + } + return legacyAssetPickerItemGenerator()(dict, nil, nil, nil) as Any } else { return SSignal.complete()