From 8d39e8d3f5e19c0b0469b4adf0ffcb4d72bb88d6 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Fri, 30 Apr 2021 14:54:11 +0400 Subject: [PATCH 1/4] Video Chat Improvements --- .../Sources/VoiceChatController.swift | 193 ++++++++++-------- .../Sources/VoiceChatTitleNode.swift | 3 + .../Contents.json | 13 +- .../airpods-b515@3x.png | Bin 4642 -> 0 bytes .../ic_call_airpodsmax.pdf | Bin 0 -> 4959 bytes 5 files changed, 113 insertions(+), 96 deletions(-) delete mode 100644 submodules/TelegramUI/Images.xcassets/Call/CallAirpodsMaxButton.imageset/airpods-b515@3x.png create mode 100644 submodules/TelegramUI/Images.xcassets/Call/CallAirpodsMaxButton.imageset/ic_call_airpodsmax.pdf diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatController.swift b/submodules/TelegramCallsUI/Sources/VoiceChatController.swift index 5619b8498e..5c094f0ebe 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatController.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatController.swift @@ -749,7 +749,6 @@ public final class VoiceChatController: ViewController { private var enqueuedTransitions: [ListTransition] = [] private var enqueuedTileTransitions: [ListTransition] = [] - private var floatingHeaderOffset: CGFloat? private var validLayout: (ContainerViewLayout, CGFloat)? private var didSetContentsReady: Bool = false @@ -1054,7 +1053,7 @@ public final class VoiceChatController: ViewController { if let (layout, navigationHeight) = strongSelf.validLayout { strongSelf.containerLayoutUpdated(layout, navigationHeight: navigationHeight, transition: .animated(duration: 0.3, curve: .easeInOut)) } - strongSelf.updateFloatingHeaderOffset(offset: strongSelf.currentContentOffset ?? 0.0, transition: .animated(duration: 0.3, curve: .easeInOut), completion: { + strongSelf.updateDecorationsLayout(transition: .animated(duration: 0.3, curve: .easeInOut), completion: { strongSelf.animatingExpansion = false }) } @@ -1663,8 +1662,6 @@ public final class VoiceChatController: ViewController { self.topPanelNode.addSubnode(self.closeButton) self.topPanelNode.addSubnode(self.topCornersNode) - self.bottomPanelNode.addSubnode(self.bottomCornersNode) - self.bottomPanelNode.addSubnode(self.bottomPanelBackgroundNode) self.bottomPanelNode.addSubnode(self.audioButton) if let _ = self.mainVideoContainerNode { self.bottomPanelNode.addSubnode(self.cameraButton) @@ -1689,6 +1686,8 @@ public final class VoiceChatController: ViewController { self.contentContainer.addSubnode(self.leftBorderNode) self.contentContainer.addSubnode(self.rightBorderNode) self.contentContainer.addSubnode(self.bottomPanelCoverNode) + self.contentContainer.addSubnode(self.bottomCornersNode) + self.contentContainer.addSubnode(self.bottomPanelBackgroundNode) self.contentContainer.addSubnode(self.bottomPanelNode) self.contentContainer.addSubnode(self.timerNode) self.contentContainer.addSubnode(self.scheduleTextNode) @@ -1895,7 +1894,7 @@ public final class VoiceChatController: ViewController { if let strongSelf = self { strongSelf.currentContentOffset = offset if !strongSelf.animatingExpansion && !strongSelf.animatingInsertion && strongSelf.panGestureArguments == nil && !strongSelf.animatingAppearance { - strongSelf.updateFloatingHeaderOffset(offset: offset, transition: transition) + strongSelf.updateDecorationsLayout(transition: transition) } } } @@ -2028,7 +2027,7 @@ public final class VoiceChatController: ViewController { })) self.titleNode.tapped = { [weak self] in - if let strongSelf = self { + if let strongSelf = self, !strongSelf.isScheduling { if strongSelf.callState?.canManageCall ?? false { strongSelf.openTitleEditing() } else if !strongSelf.titleNode.recordingIconNode.isHidden { @@ -2110,7 +2109,7 @@ public final class VoiceChatController: ViewController { if let (layout, navigationHeight) = strongSelf.validLayout { strongSelf.containerLayoutUpdated(layout, navigationHeight: navigationHeight, transition: .animated(duration: 0.3, curve: .easeInOut)) - strongSelf.updateFloatingHeaderOffset(offset: strongSelf.currentContentOffset ?? 0.0, transition: .animated(duration: 0.3, curve: .easeInOut)) + strongSelf.updateDecorationsLayout(transition: .animated(duration: 0.3, curve: .easeInOut)) } } if let (peerId, _) = minimalVisiblePeerid { @@ -2158,7 +2157,7 @@ public final class VoiceChatController: ViewController { if let (layout, navigationHeight) = strongSelf.validLayout { strongSelf.containerLayoutUpdated(layout, navigationHeight: navigationHeight, transition: .animated(duration: 0.3, curve: .easeInOut)) - strongSelf.updateFloatingHeaderOffset(offset: strongSelf.currentContentOffset ?? 0.0, transition: .animated(duration: 0.3, curve: .easeInOut)) + strongSelf.updateDecorationsLayout(transition: .animated(duration: 0.3, curve: .easeInOut)) } } if let (peerId, _) = minimalVisiblePeerid { @@ -2182,7 +2181,7 @@ public final class VoiceChatController: ViewController { if let (layout, navigationHeight) = strongSelf.validLayout { strongSelf.containerLayoutUpdated(layout, navigationHeight: navigationHeight, transition: .animated(duration: 0.3, curve: .easeInOut)) - strongSelf.updateFloatingHeaderOffset(offset: strongSelf.currentContentOffset ?? 0.0, transition: .animated(duration: 0.3, curve: .easeInOut)) + strongSelf.updateDecorationsLayout(transition: .animated(duration: 0.3, curve: .easeInOut)) } } } @@ -3222,20 +3221,11 @@ public final class VoiceChatController: ViewController { } private var bringVideoToBackOnCompletion = false - private func updateFloatingHeaderOffset(offset: CGFloat, transition: ContainedViewLayoutTransition, completion: (() -> Void)? = nil) { + private func updateDecorationsLayout(transition: ContainedViewLayoutTransition, completion: (() -> Void)? = nil) { guard let (layout, _) = self.validLayout else { return } - - let layoutTopInset: CGFloat = max(layout.statusBarHeight ?? 0.0, layout.safeInsets.top) - let listTopInset = layoutTopInset + topPanelHeight - let bottomPanelHeight = self.effectiveBottomAreaHeight + layout.intrinsicInsets.bottom - - var size = layout.size - if case .regular = layout.metrics.widthClass { - size.width = floor(min(size.width, size.height) * 0.5) - } - + var isLandscape = false var effectiveDisplayMode = self.displayMode if case .compact = layout.metrics.widthClass, layout.size.width > layout.size.height { @@ -3246,7 +3236,24 @@ public final class VoiceChatController: ViewController { } } - let listSize = CGSize(width: size.width, height: layout.size.height - listTopInset - bottomPanelHeight) + let layoutTopInset: CGFloat = max(layout.statusBarHeight ?? 0.0, layout.safeInsets.top) + let listTopInset = isLandscape ? topPanelHeight : layoutTopInset + topPanelHeight + let bottomPanelHeight = isLandscape ? layout.intrinsicInsets.bottom : self.effectiveBottomAreaHeight + layout.intrinsicInsets.bottom + + var size = layout.size + if case .regular = layout.metrics.widthClass { + size.width = floor(min(size.width, size.height) * 0.5) + } + + let contentWidth: CGFloat + if case .regular = layout.metrics.widthClass { + size.width = floor(min(size.width, size.height) * 0.5) + contentWidth = size.width + } else { + contentWidth = isLandscape ? min(530.0, size.width - 210.0) : size.width + } + + let listSize = CGSize(width: contentWidth, height: layout.size.height - listTopInset - bottomPanelHeight) let topInset: CGFloat if let (panInitialTopInset, panOffset) = self.panGestureArguments { if self.isExpanded { @@ -3270,9 +3277,8 @@ public final class VoiceChatController: ViewController { } } - - let offset = (bottomEdge.isZero ? 0.0 : offset) + topInset - self.floatingHeaderOffset = offset + let currentContentOffset = self.currentContentOffset ?? 0.0 + let offset = (bottomEdge.isZero ? 0.0 : currentContentOffset) + topInset if bottomEdge.isZero { bottomEdge = self.listNode.frame.minY + 46.0 + 56.0 @@ -3282,7 +3288,7 @@ public final class VoiceChatController: ViewController { let panelOffset = max(layoutTopInset, rawPanelOffset) let topPanelFrame: CGRect if isLandscape { - topPanelFrame = CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: CGSize(width: size.width, height: 0.0)) + topPanelFrame = CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: CGSize(width: size.width, height: topPanelHeight)) } else { topPanelFrame = CGRect(origin: CGPoint(x: 0.0, y: panelOffset), size: CGSize(width: size.width, height: topPanelHeight)) } @@ -3374,8 +3380,8 @@ public final class VoiceChatController: ViewController { let leftBorderFrame: CGRect let rightBorderFrame: CGRect if isLandscape { - leftBorderFrame = CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: CGSize(width: layout.safeInsets.left, height: layout.size.height)) - rightBorderFrame = CGRect(origin: CGPoint(x: size.width - layout.safeInsets.right, y: 0.0), size: CGSize(width: layout.safeInsets.right, height: layout.size.height)) + leftBorderFrame = CGRect(origin: CGPoint(x: 0.0, y: topPanelFrame.maxY - 16.0), size: CGSize(width: (size.width - contentWidth) / 2.0 + sideInset, height: layout.size.height)) + rightBorderFrame = CGRect(origin: CGPoint(x: size.width - (size.width - contentWidth) / 2.0 - sideInset, y: topPanelFrame.maxY - 16.0), size: CGSize(width: layout.safeInsets.right + (size.width - contentWidth) / 2.0 + sideInset, height: layout.size.height)) } else { leftBorderFrame = CGRect(origin: CGPoint(x: 0.0, y: topPanelFrame.maxY - 16.0), size: CGSize(width: sideInset, height: layout.size.height)) rightBorderFrame = CGRect(origin: CGPoint(x: size.width - sideInset, y: topPanelFrame.maxY - 16.0), size: CGSize(width: sideInset, height: layout.size.height)) @@ -3409,10 +3415,15 @@ public final class VoiceChatController: ViewController { self.topPanelBackgroundNode.frame = CGRect(x: 0.0, y: topPanelHeight - 24.0, width: size.width, height: min(topPanelFrame.height, 24.0)) let listMaxY = listTopInset + listSize.height - let bottomOffset: CGFloat = min(0.0, bottomEdge - listMaxY) + var bottomOffset: CGFloat = min(0.0, bottomEdge - listMaxY) let bottomDelta = self.effectiveBottomAreaHeight - bottomAreaHeight - let bottomCornersFrame = CGRect(origin: CGPoint(x: sideInset, y: -50.0 + bottomOffset + bottomDelta), size: CGSize(width: size.width - sideInset * 2.0, height: 50.0)) + bottomOffset += layout.size.height - bottomPanelHeight + + var bottomCornersFrame = CGRect(origin: CGPoint(x: sideInset + floorToScreenPixels((size.width - contentWidth) / 2.0), y: -50.0 + bottomOffset + bottomDelta), size: CGSize(width: contentWidth - sideInset * 2.0, height: 50.0)) + + + let previousBottomCornersFrame = self.bottomCornersNode.frame if !bottomCornersFrame.equalTo(previousBottomCornersFrame) { self.bottomCornersNode.frame = bottomCornersFrame @@ -3451,8 +3462,10 @@ public final class VoiceChatController: ViewController { topEdgeFrame = CGRect(x: 0.0, y: 0.0, width: size.width, height: topPanelHeight) } + var isLandscape = false var effectiveDisplayMode = self.displayMode if case .compact = layout.metrics.widthClass, layout.size.width > layout.size.height { + isLandscape = true if case .fullscreen = effectiveDisplayMode { } else { effectiveDisplayMode = .fullscreen(controlsHidden: false) @@ -3461,7 +3474,11 @@ public final class VoiceChatController: ViewController { let backgroundColor: UIColor if case .fullscreen = effectiveDisplayMode { - backgroundColor = fullscreenBackgroundColor + if isLandscape { + backgroundColor = isFullscreen ? panelBackgroundColor : secondaryPanelBackgroundColor + } else { + backgroundColor = fullscreenBackgroundColor + } } else if self.isScheduling || self.callState?.scheduleTimestamp != nil { backgroundColor = panelBackgroundColor } else { @@ -3507,7 +3524,7 @@ public final class VoiceChatController: ViewController { } private func updateTitle(slide: Bool = false, transition: ContainedViewLayoutTransition) { - guard let (layout, _) = self.validLayout else { + guard let _ = self.validLayout else { return } var title = self.currentTitle @@ -3534,12 +3551,7 @@ public final class VoiceChatController: ViewController { } } - var size = layout.size - if case .regular = layout.metrics.widthClass { - size.width = floor(min(size.width, size.height) * 0.5) - } - - self.titleNode.update(size: CGSize(width: size.width, height: 44.0), title: title, subtitle: subtitle, slide: slide, transition: transition) + self.titleNode.update(size: CGSize(width: self.titleNode.bounds.width, height: 44.0), title: title, subtitle: subtitle, slide: slide, transition: transition) } private func updateButtons(animated: Bool) { @@ -3660,8 +3672,12 @@ public final class VoiceChatController: ViewController { self.validLayout = (layout, navigationHeight) var size = layout.size + let contentWidth: CGFloat if case .regular = layout.metrics.widthClass { size.width = floor(min(size.width, size.height) * 0.5) + contentWidth = size.width + } else { + contentWidth = isLandscape ? min(530.0, size.width - 210.0) : size.width } let isScheduled = self.isScheduling || self.callState?.scheduleTimestamp != nil @@ -3679,7 +3695,7 @@ public final class VoiceChatController: ViewController { if !self.isFullscreen { self.isExpanded = true self.updateIsFullscreen(true) - self.tileListNode.isHidden = false +// self.tileListNode.isHidden = false } if case .fullscreen = effectiveDisplayMode { } else { @@ -3703,34 +3719,37 @@ public final class VoiceChatController: ViewController { } } } - + + transition.updateFrame(node: self.titleNode, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((size.width - contentWidth) / 2.0), y: 10.0), size: CGSize(width: contentWidth, height: 44.0))) self.updateTitle(transition: transition) - transition.updateFrame(node: self.titleNode, frame: CGRect(origin: CGPoint(x: 0.0, y: 10.0), size: CGSize(width: size.width, height: 44.0))) - transition.updateFrame(node: self.optionsButton, frame: CGRect(origin: CGPoint(x: 20.0, y: 18.0), size: CGSize(width: 28.0, height: 28.0))) - transition.updateFrame(node: self.closeButton, frame: CGRect(origin: CGPoint(x: size.width - 20.0 - 28.0, y: 18.0), size: CGSize(width: 28.0, height: 28.0))) + + transition.updateFrame(node: self.optionsButton, frame: CGRect(origin: CGPoint(x: 20.0 + floorToScreenPixels((size.width - contentWidth) / 2.0), y: 18.0), size: CGSize(width: 28.0, height: 28.0))) + transition.updateFrame(node: self.closeButton, frame: CGRect(origin: CGPoint(x: size.width - floorToScreenPixels((size.width - contentWidth) / 2.0) - 20.0 - 28.0, y: 18.0), size: CGSize(width: 28.0, height: 28.0))) transition.updateFrame(node: self.dimNode, frame: CGRect(origin: CGPoint(), size: layout.size)) transition.updateFrame(node: self.contentContainer, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((layout.size.width - size.width) / 2.0), y: 0.0), size: size)) let layoutTopInset: CGFloat = max(layout.statusBarHeight ?? 0.0, layout.safeInsets.top) let sideInset: CGFloat = 16.0 + var insets = UIEdgeInsets() - insets.left = layout.safeInsets.left + sideInset - insets.right = layout.safeInsets.right + sideInset + insets.left = sideInset + (isLandscape ? 0.0 : layout.safeInsets.left) + insets.right = sideInset + (isLandscape ? 0.0 : layout.safeInsets.right) + + let topEdgeOffset: CGFloat + if let statusBarHeight = layout.statusBarHeight { + topEdgeOffset = statusBarHeight + } else { + topEdgeOffset = 44.0 + } if isLandscape { - transition.updateFrame(node: self.topPanelEdgeNode, frame: CGRect(x: 0.0, y: 0.0, width: size.width, height: 0.0)) + transition.updateFrame(node: self.topPanelEdgeNode, frame: CGRect(x: 0.0, y: -topEdgeOffset, width: size.width, height: topPanelHeight + topEdgeOffset)) } else if let _ = self.panGestureArguments { } else { let topEdgeFrame: CGRect if self.isFullscreen { - let offset: CGFloat - if let statusBarHeight = layout.statusBarHeight { - offset = statusBarHeight - } else { - offset = 44.0 - } - topEdgeFrame = CGRect(x: 0.0, y: -offset, width: size.width, height: topPanelHeight + offset) + topEdgeFrame = CGRect(x: 0.0, y: -topEdgeOffset, width: size.width, height: topPanelHeight + topEdgeOffset) } else { topEdgeFrame = CGRect(x: 0.0, y: 0.0, width: size.width, height: topPanelHeight) } @@ -3741,15 +3760,15 @@ public final class VoiceChatController: ViewController { var listTopInset = layoutTopInset + topPanelHeight var topCornersY = topPanelHeight if isLandscape { - listTopInset = 0.0 - topCornersY = -50.0 + listTopInset = topPanelHeight +// topCornersY = -50.0 } else if self.mainVideoContainerNode != nil && self.isFullscreen { let videoContainerHeight = min(mainVideoHeight, layout.size.width) listTopInset += videoContainerHeight topCornersY += videoContainerHeight } - let listSize = CGSize(width: size.width, height: layout.size.height - listTopInset - bottomPanelHeight) - + + let listSize = CGSize(width: contentWidth, height: layout.size.height - listTopInset - (isLandscape ? layout.intrinsicInsets.bottom : bottomPanelHeight)) let topInset: CGFloat if let (panInitialTopInset, panOffset) = self.panGestureArguments { if self.isExpanded { @@ -3763,7 +3782,7 @@ public final class VoiceChatController: ViewController { topInset = listSize.height - 46.0 - floor(56.0 * 3.5) } - transition.updateFrame(node: self.listNode, frame: CGRect(origin: CGPoint(x: 0.0, y: listTopInset + topInset), size: listSize)) + transition.updateFrame(node: self.listNode, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((size.width - contentWidth) / 2.0), y: listTopInset + topInset), size: listSize)) let (duration, curve) = listViewAnimationDurationAndCurve(transition: transition) self.listNode.transaction(deleteIndices: [], insertIndicesAndItems: [], updateIndicesAndItems: [], options: [.Synchronous, .LowLatency], scrollToItem: nil, updateSizeAndInsets: ListViewUpdateSizeAndInsets(size: listSize, insets: insets, duration: duration, curve: curve), stationaryItemRange: nil, updateOpaqueState: nil, completion: { _ in }) @@ -3796,20 +3815,20 @@ public final class VoiceChatController: ViewController { self.tileListNode.transform = tileListTransform self.tileListNode.transaction(deleteIndices: [], insertIndicesAndItems: [], updateIndicesAndItems: [], options: [.Synchronous, .LowLatency], scrollToItem: nil, updateSizeAndInsets: tileListUpdateSizeAndInsets, stationaryItemRange: nil, updateOpaqueState: nil, completion: { _ in }) - transition.updateFrame(node: self.topCornersNode, frame: CGRect(origin: CGPoint(x: sideInset, y: topCornersY), size: CGSize(width: size.width - sideInset * 2.0, height: 50.0))) + transition.updateFrame(node: self.topCornersNode, frame: CGRect(origin: CGPoint(x: sideInset + floorToScreenPixels((size.width - contentWidth) / 2.0), y: topCornersY), size: CGSize(width: contentWidth - sideInset * 2.0, height: 50.0))) var bottomPanelFrame = CGRect(origin: CGPoint(x: 0.0, y: layout.size.height - bottomPanelHeight), size: CGSize(width: size.width, height: bottomPanelHeight)) let bottomPanelCoverHeight = bottomAreaHeight + layout.intrinsicInsets.bottom let bottomPanelCoverFrame = CGRect(origin: CGPoint(x: 0.0, y: layout.size.height - bottomPanelCoverHeight), size: CGSize(width: size.width, height: bottomPanelCoverHeight)) if isLandscape { - transition.updateAlpha(node: self.closeButton, alpha: 0.0) - transition.updateAlpha(node: self.optionsButton, alpha: 0.0) - transition.updateAlpha(node: self.titleNode, alpha: 0.0) +// transition.updateAlpha(node: self.closeButton, alpha: 0.0) +// transition.updateAlpha(node: self.optionsButton, alpha: 0.0) +// transition.updateAlpha(node: self.titleNode, alpha: 0.0) bottomPanelFrame = CGRect(origin: CGPoint(x: layout.size.width - fullscreenBottomAreaHeight - layout.safeInsets.right, y: 0.0), size: CGSize(width: fullscreenBottomAreaHeight + layout.safeInsets.right, height: layout.size.height)) } else { - transition.updateAlpha(node: self.closeButton, alpha: 1.0) - transition.updateAlpha(node: self.optionsButton, alpha: self.optionsButton.isUserInteractionEnabled ? 1.0 : 0.0) - transition.updateAlpha(node: self.titleNode, alpha: 1.0) +// transition.updateAlpha(node: self.closeButton, alpha: 1.0) +// transition.updateAlpha(node: self.optionsButton, alpha: self.optionsButton.isUserInteractionEnabled ? 1.0 : 0.0) +// transition.updateAlpha(node: self.titleNode, alpha: 1.0) } transition.updateFrame(node: self.bottomPanelCoverNode, frame: bottomPanelCoverFrame) transition.updateFrame(node: self.bottomPanelNode, frame: bottomPanelFrame) @@ -3856,16 +3875,26 @@ public final class VoiceChatController: ViewController { forthButtonFrame = rightButtonFrame case let .fullscreen(controlsHidden): smallButtons = true - let sideInset: CGFloat = 26.0 + if isLandscape { - let spacing = floor((layout.size.height - sideInset * 2.0 - sideButtonSize.height * 4.0) / 3.0) + let sideInset: CGFloat + let buttonsCount: Int + if self.mainVideoContainerNode == nil { + sideInset = 42.0 + buttonsCount = 3 + } else { + sideInset = 26.0 + buttonsCount = 4 + } + let spacing = floor((layout.size.height - sideInset * 2.0 - sideButtonSize.height * CGFloat(buttonsCount)) / (CGFloat(buttonsCount - 1))) let x = controlsHidden ? fullscreenBottomAreaHeight + layout.safeInsets.right + 30.0: floor((fullscreenBottomAreaHeight - sideButtonSize.width) / 2.0) forthButtonFrame = CGRect(origin: CGPoint(x: x, y: sideInset), size: sideButtonSize) let thirdButtonPreFrame = CGRect(origin: CGPoint(x: x, y: sideInset + sideButtonSize.height + spacing), size: sideButtonSize) thirdButtonFrame = CGRect(origin: CGPoint(x: floor(thirdButtonPreFrame.midX - centralButtonSize.width / 2.0), y: floor(thirdButtonPreFrame.midY - centralButtonSize.height / 2.0)), size: centralButtonSize) - secondButtonFrame = CGRect(origin: CGPoint(x: x, y: layout.size.height - sideInset - sideButtonSize.height - spacing - sideButtonSize.height), size: sideButtonSize) + secondButtonFrame = CGRect(origin: CGPoint(x: x, y: thirdButtonPreFrame.maxY + spacing), size: sideButtonSize) firstButtonFrame = CGRect(origin: CGPoint(x: x, y: layout.size.height - sideInset - sideButtonSize.height), size: sideButtonSize) } else { + let sideInset: CGFloat = 26.0 let spacing = floor((layout.size.width - sideInset * 2.0 - sideButtonSize.width * 4.0) / 3.0) let y = controlsHidden ? self.effectiveBottomAreaHeight + layout.intrinsicInsets.bottom + 30.0: floor((self.effectiveBottomAreaHeight - sideButtonSize.height) / 2.0) firstButtonFrame = CGRect(origin: CGPoint(x: sideInset, y: y), size: sideButtonSize) @@ -3998,7 +4027,7 @@ public final class VoiceChatController: ViewController { guard let (layout, navigationHeight) = self.validLayout else { return } - self.updateFloatingHeaderOffset(offset: 0.0, transition: .immediate) + self.updateDecorationsLayout(transition: .immediate) self.animatingAppearance = true @@ -4123,9 +4152,7 @@ public final class VoiceChatController: ViewController { itemsCount -= 1 } itemsHeight += CGFloat(itemsCount) * 56.0 - - let layoutTopInset: CGFloat = max(layout.statusBarHeight ?? 0.0, layout.safeInsets.top) - + let sideInset: CGFloat = 16.0 var insets = UIEdgeInsets() insets.left = layout.safeInsets.left + sideInset @@ -4136,7 +4163,8 @@ public final class VoiceChatController: ViewController { size.width = floor(min(size.width, size.height) * 0.5) } - let bottomPanelHeight = self.effectiveBottomAreaHeight + layout.intrinsicInsets.bottom + let bottomPanelHeight = self.isLandscape ? layout.intrinsicInsets.bottom : self.effectiveBottomAreaHeight + layout.intrinsicInsets.bottom + let layoutTopInset: CGFloat = max(layout.statusBarHeight ?? 0.0, layout.safeInsets.top) let listTopInset = layoutTopInset + topPanelHeight let listSize = CGSize(width: size.width, height: layout.size.height - listTopInset - bottomPanelHeight) @@ -4158,9 +4186,9 @@ public final class VoiceChatController: ViewController { return } if isFirstTime { - strongSelf.updateFloatingHeaderOffset(offset: strongSelf.currentContentOffset ?? 0.0, transition: .immediate) + strongSelf.updateDecorationsLayout(transition: .immediate) } else if strongSelf.animatingInsertion { - strongSelf.updateFloatingHeaderOffset(offset: strongSelf.currentContentOffset ?? 0.0, transition: .animated(duration: 0.2, curve: .easeInOut)) + strongSelf.updateDecorationsLayout(transition: .animated(duration: 0.2, curve: .easeInOut)) } strongSelf.animatingInsertion = false if !strongSelf.didSetContentsReady { @@ -4226,12 +4254,7 @@ public final class VoiceChatController: ViewController { entries.append(.invite(self.presentationData.theme, self.presentationData.strings, inviteIsLink ? self.presentationData.strings.VoiceChat_Share : self.presentationData.strings.VoiceChat_InviteMember, inviteIsLink)) } - if let _ = self.effectiveSpeakerWithVideo { - index += 1 - } - var pinnedEntry: ListEntry? - for member in callMembers.0 { if processedPeerIds.contains(member.peer.id) { continue @@ -4520,7 +4543,7 @@ public final class VoiceChatController: ViewController { if let (layout, navigationHeight) = self.validLayout { self.containerLayoutUpdated(layout, navigationHeight: navigationHeight, transition: .immediate) - self.updateFloatingHeaderOffset(offset: self.currentContentOffset ?? 0.0, transition: .immediate) + self.updateDecorationsLayout(transition: .immediate) } if !self.isExpanded { @@ -4568,7 +4591,7 @@ public final class VoiceChatController: ViewController { if let (layout, navigationHeight) = self.validLayout { self.containerLayoutUpdated(layout, navigationHeight: navigationHeight, transition: .animated(duration: 0.3, curve: .easeInOut)) } - self.updateFloatingHeaderOffset(offset: self.currentContentOffset ?? 0.0, transition: .animated(duration: 0.3, curve: .easeInOut), completion: { + self.updateDecorationsLayout(transition: .animated(duration: 0.3, curve: .easeInOut), completion: { self.animatingExpansion = false }) } else { @@ -4578,7 +4601,7 @@ public final class VoiceChatController: ViewController { if let (layout, navigationHeight) = self.validLayout { self.containerLayoutUpdated(layout, navigationHeight: navigationHeight, transition: .animated(duration: 0.3, curve: .easeInOut)) } - self.updateFloatingHeaderOffset(offset: self.currentContentOffset ?? 0.0, transition: .animated(duration: 0.3, curve: .easeInOut), completion: { + self.updateDecorationsLayout(transition: .animated(duration: 0.3, curve: .easeInOut), completion: { self.animatingExpansion = false }) } @@ -4606,7 +4629,7 @@ public final class VoiceChatController: ViewController { if let (layout, navigationHeight) = self.validLayout { self.containerLayoutUpdated(layout, navigationHeight: navigationHeight, transition: .animated(duration: 0.3, curve: .easeInOut)) } - self.updateFloatingHeaderOffset(offset: self.currentContentOffset ?? 0.0, transition: .animated(duration: 0.3, curve: .easeInOut), completion: { + self.updateDecorationsLayout(transition: .animated(duration: 0.3, curve: .easeInOut), completion: { self.animatingExpansion = false }) } else if !isScheduling { @@ -4617,7 +4640,7 @@ public final class VoiceChatController: ViewController { if let (layout, navigationHeight) = self.validLayout { self.containerLayoutUpdated(layout, navigationHeight: navigationHeight, transition: .animated(duration: 0.3, curve: .easeInOut)) } - self.updateFloatingHeaderOffset(offset: self.currentContentOffset ?? 0.0, transition: .animated(duration: 0.3, curve: .easeInOut), completion: { + self.updateDecorationsLayout(transition: .animated(duration: 0.3, curve: .easeInOut), completion: { self.animatingExpansion = false }) } @@ -4641,7 +4664,7 @@ public final class VoiceChatController: ViewController { if let (layout, navigationHeight) = self.validLayout { self.containerLayoutUpdated(layout, navigationHeight: navigationHeight, transition: .animated(duration: 0.3, curve: .easeInOut)) } - self.updateFloatingHeaderOffset(offset: self.currentContentOffset ?? 0.0, transition: .animated(duration: 0.3, curve: .easeInOut), completion: { + self.updateDecorationsLayout(transition: .animated(duration: 0.3, curve: .easeInOut), completion: { self.animatingExpansion = false }) default: diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatTitleNode.swift b/submodules/TelegramCallsUI/Sources/VoiceChatTitleNode.swift index 853a0128e5..5d2569a4d3 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatTitleNode.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatTitleNode.swift @@ -66,6 +66,9 @@ final class VoiceChatTitleNode: ASDisplayNode { } func update(size: CGSize, title: String, subtitle: String, slide: Bool, transition: ContainedViewLayoutTransition) { + guard !size.width.isZero else { + return + } var titleUpdated = false if let previousTitle = self.titleNode.attributedText?.string { titleUpdated = previousTitle != title diff --git a/submodules/TelegramUI/Images.xcassets/Call/CallAirpodsMaxButton.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Call/CallAirpodsMaxButton.imageset/Contents.json index 360b4f2588..795a18ba91 100644 --- a/submodules/TelegramUI/Images.xcassets/Call/CallAirpodsMaxButton.imageset/Contents.json +++ b/submodules/TelegramUI/Images.xcassets/Call/CallAirpodsMaxButton.imageset/Contents.json @@ -1,17 +1,8 @@ { "images" : [ { - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "airpods-b515@3x.png", - "idiom" : "universal", - "scale" : "3x" + "filename" : "ic_call_airpodsmax.pdf", + "idiom" : "universal" } ], "info" : { diff --git a/submodules/TelegramUI/Images.xcassets/Call/CallAirpodsMaxButton.imageset/airpods-b515@3x.png b/submodules/TelegramUI/Images.xcassets/Call/CallAirpodsMaxButton.imageset/airpods-b515@3x.png deleted file mode 100644 index cf735b34c9a9ae76a30865d2438810cf7d869ac2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4642 zcmX|^WmFX0*TshhN$HNEq?@682uYEY9J-X290`dT5DAeIWGImiham-28mXa?E*Vm! z`^Epe)^peToxSf_XWjc{e>rd?11-`Aj1K?+0I80)hVi|M-lIT>dtVd!4}fT=7eouWMj?P-nFP#0{9ku)*AzF~<&mrP=;sAg}Y>7F6^}A`>j-@_8T5ai@ z+EiziD1bOnB663b38upyMd5&ty{eW#Q)$I4!_S}a%$g=j?n$EAc25<#M;T(mK}fi= z{R1vV#a`IKS^M>V(A|>a?|J`W#or&pa3c3L-)aEWumB+r&62>>_ey+| zaDos+D+64W=jZf&*j*P6O6Th#zBudyw>cmDstqxB=M=%=40NZw5P{YHrVs%88W#Hp zUv6Vr0OPymrai%C4Y)45bf3NfNmQ`xdI8A*KU)Q1dzJ`|ALgO4!9&I9cbUBfVJ%_k zwUP@j}jXbu*tJ%!Z?SBrUE~g_-b>B?@Q^@5PGDrY24sXP160!vj)&#^;ISn-Q$( zmHUkDl-ry(4Xci-O9)%Zia|mi#-@8j^dU6Gp>CG&=j$P8Iw@zUu zs^jhI_jC6voMUwe$q>yY^_A&r#Y6XLG<0++!L{GJ`si!#GrL>Fgz9U@8iO4Y=Csf+ z+hxGA%0C~XaZ(a|0Bq~88U766IgAo*so=*TRATF~2-d%8#?v-^r^RaSs@36$Cs{9- zDMol^DRC8~`{Gb)4-#0WnB#KC_h2FkT#a=3UHjwpFG_Not)zNbCbr0|U>jtJNIUFN zVhlEnCz@~T{XilRMPms~2$SYycQyCpDQ(dZ=agRyP5;R6_zr-0@#jT|examoI_ZtgZ zV=&$fVZ!VMucdpYPo+h`wo6e^=ET8+{0z{YkCkvhxiVfE454@6) zSIdUXe`7%u4-okKtlKhRBs?`F)34P%vyMO)isJFF%m8oa*n3-~t zt(*Ay;NRR-Bp)ZYnS}B%XEPDfY{vO$kX~5t6-FSZjS-a;KaKkbO(s<<)82)rFNvE@ zMsxN#nUW|wGL0o~X_Iiuy&6>~;nt-50XZmO=6%bdsk&RS{$0qIJeRb>iW#vcI8RK@ z+O?ekGC4AN(*2rUih{g5dw}s`%wYLe%TQ}yEqFTRhSX)) z1@h<38=QX8`f)@cwp$W)^>ZQ%zn**iGBjYvum_@D8%Bj2iKKO#=jd^c9+CM`!Lq&YZRvL%Pa zUr3Zjl#UX+$L>)s20QCT`K0M8I?HPrD_PB=%yt>4qD~xY ze1X-;;VFK}Jh2iO&i7j6zChu?5f_NT9_Jz(!nmEn>t z%SC=fW(GtDyq^Gvf~SC1sfzt8>m>DA){m=!2Rv-NcHGK9aAy|*C!-kkh7bc~x@CbA;}ZlE=917H`6T_dvCXk^ zcT!{pvUHAd?sQIY&wZ|Y&U7vwDdK*%?Y1Se6|?0Nu(@rrBZ--xz)Vk0pNuAr4~^Rt zwpyLFy=Y|B8BrC{OD;A4)Tn=eTvUhZEtx56v%HnES=+Y)Q*SJSbN;HE@l9S++O*lk2!F7yZlbh?+H_Y-Rf85Dy%21~Zd81cx39S`wqLTZHJ|^s zj_IA4OLx|k*a5vQ$wP&u{m`utjga(E$*}8v%x?clC)@CxnI)0M

n&G3H&n zuy?63eOrArsi0X}FX7g=3v?S)QoP%GlH789q3XwmV#8wStWEe<*JpSI&thUjGEFZl z9LIOJ$<+63jb+WXCn8ft4`%q;;GBDmvyQ7yN=Ml}6un znUx$vI*vD#`hQ{@;BxxpygwX12w$7~kM7!H z;E|2xW$$-n?2t39^U)ydtA~f(AN`&+Bd<4scVMgbt`6!~A-;z*-8*z070agAM*W{F z%fnk^TG!)i6xyGiOWT;-*`h*ZeVcJ6PGrSSAy}3MeVkL+& zc@c8d@Mp)$iW4P0Av0m}ob!di%<16i#9ozrmi)HIkcWWh-8|poY@LAbbhcc6OUuG$ zYv!Kn*`w3r-MspG*Y*A5J+^S6}wWM{+p zuO@zEV1$AU4dtLWdf&4XU5iFOUMXE)jaOApQT@gqW>Gu{YR3?4l4}VE+qtc$ z1zgSMMa$y^{r-^%?S|%EnUeoxo4EEo?l=t$4r1OR+4H*M!<4p?Hh0Kg&h4=iwonEic|*t^>AZHk_|H&2b3kY z6ce^2=sqZPsvAwwBQr37tBK2KY~`1{MkFq@Ak`3IF7AyeAj{*21l*6oqeuPI?9J=K zi#B-)2aWS*Z6il*OJC0x3C?_%qV9@u6yKyk^7NJdqzVlP{#~zL+~Z@q?vmbt;ZzlE z?$gm|-c|jS$#;4QP6|qYgsMzS$q|=seG@A{xkj3K4T*1{U7G@e%|b+aXuLz{k$s{| z0WBl-KF?n6n|0S;4Ev-|KF#$RuK0BE;HX#|ZAh&vP+nS`5@MF~X4-*GVy{snL1Ju> zlFnijY4K4_cNVWM!GTTp{a+^(SDGAjAsj86H(_`zQA){eP|_9{%vM|a*35!urS~fC zT}mNvgB1$O+WCRfHnsgcqRPo{YP!Am;(HsRv`A~f*AH`P^#vngsSeEiH?c6f6*GnJ z=CaI`{;sroH*dnwyg6d5cpy}_xBsneW3hLoIZN%vy7-*LrwN^SVQxeB*=odAt@p9M0pWRoirUezMYNbnrGj)P(kdDseUr}j1tAolQPugK2_|;Qx0CoRo`bF#6Q=0@~^HZzF=n+%8A?F6lAGwcSKr`!s4d=7oAv4sf`NVPjP&IG#8lOgX zK>kp)HtpDcp|N{!;V53{F7aCYjaO)2qFX1pM4a8pmiaOk60EiS*lAFCzM4poI0Ssd zqF800rqZ4B0|9mye{>pR@;Tq+Gi&2YYG17Om#s>5%0QsN1b0KS8`Z!AS0d9|;Z=^r z2WcD}QybT=IGu_;PgW`9;%Ne8edx@bB8j&j!{jTeKM~GNa|r1P=_P)xzDrks7Hg*9 z1M{r20HasaEZ*-+Ns+rXG{Ly^XMSX4y|LJZ1)wxmh9}Y{(=LyKMWp2juC5PcRXDy2 z6;32BcmIZH#c8MN>jcK1Iv=OGQSKTadnmCskQ_z?cR{3S!3CAC%8Fck z)c3gqm?RmTqSeTICwX78vP=ZnFaG36q$=o{y>YJ9I!p~&2#jaVZz|*R(QrA)td8#X z-5+!<_K5#hu^}kgrZ4r=A*+Xvb`+iBCbsZY9eS5^?R_WkC&+x6nC#2>EN;?M`uo%X Nbif80)oS+9{|AHDxLyDN diff --git a/submodules/TelegramUI/Images.xcassets/Call/CallAirpodsMaxButton.imageset/ic_call_airpodsmax.pdf b/submodules/TelegramUI/Images.xcassets/Call/CallAirpodsMaxButton.imageset/ic_call_airpodsmax.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3661b17240ce5050f0d2dc654f9c0e529920adf1 GIT binary patch literal 4959 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 Date: Fri, 30 Apr 2021 19:19:59 +0400 Subject: [PATCH 2/4] Video Chat Improvements --- .../Telegram-iOS/en.lproj/Localizable.strings | 5 +- .../VoiceChatCameraPreviewController.swift | 589 +- .../Sources/VoiceChatController.swift | 56 +- .../Sources/VoiceChatParticipantItem.swift | 224 +- .../Sources/PresentationStrings.swift | 6279 +++++++++-------- .../Contents.json | 2 +- .../ic_cam_flip.pdf} | Bin 4602 -> 4396 bytes .../Contents.json | 2 +- .../ic_voicesharing.pdf} | Bin 4792 -> 4165 bytes .../Contents.json | 2 +- .../ic_voicecamera.pdf} | Bin 4773 -> 4146 bytes .../Call/StatusVolume.imageset/Contents.json | 12 + .../ic_voicevolumeon.pdf | Bin 0 -> 4415 bytes .../StatusVolumeOff.imageset/Contents.json | 12 + .../ic_voicevolumeoff.pdf | Bin 0 -> 4269 bytes .../Resources/PresentationStrings.mapping | Bin 172053 -> 172104 bytes 16 files changed, 3681 insertions(+), 3502 deletions(-) rename submodules/TelegramUI/Images.xcassets/Call/{Volume.imageset/volsmall.pdf => CallSwitchCameraButton.imageset/ic_cam_flip.pdf} (69%) rename submodules/TelegramUI/Images.xcassets/Call/{Volume.imageset => StatusScreen.imageset}/Contents.json (74%) rename submodules/TelegramUI/Images.xcassets/Call/{Video.imageset/ic_vc_camera.pdf => StatusScreen.imageset/ic_voicesharing.pdf} (64%) rename submodules/TelegramUI/Images.xcassets/Call/{Video.imageset => StatusVideo.imageset}/Contents.json (75%) rename submodules/TelegramUI/Images.xcassets/Call/{CallSwitchCameraButton.imageset/ic_call_flip.pdf => StatusVideo.imageset/ic_voicecamera.pdf} (59%) create mode 100644 submodules/TelegramUI/Images.xcassets/Call/StatusVolume.imageset/Contents.json create mode 100644 submodules/TelegramUI/Images.xcassets/Call/StatusVolume.imageset/ic_voicevolumeon.pdf create mode 100644 submodules/TelegramUI/Images.xcassets/Call/StatusVolumeOff.imageset/Contents.json create mode 100644 submodules/TelegramUI/Images.xcassets/Call/StatusVolumeOff.imageset/ic_voicevolumeoff.pdf diff --git a/Telegram/Telegram-iOS/en.lproj/Localizable.strings b/Telegram/Telegram-iOS/en.lproj/Localizable.strings index 4b87246673..3a16b21051 100644 --- a/Telegram/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram/Telegram-iOS/en.lproj/Localizable.strings @@ -6463,5 +6463,6 @@ Sorry for the inconvenience."; "Calls.StartNewCall" = "Start New Call"; "VoiceChat.VideoPreviewTitle" = "Video Preview"; -"VoiceChat.VideoPreviewDescription" = "Place your face in the area above for better experience."; -"VoiceChat.VideoPreviewShare" = "Share Video"; +"VoiceChat.VideoPreviewDescription" = "Are you sure you want to share your video?"; +"VoiceChat.VideoPreviewShareCamera" = "Share Camera Video"; +"VoiceChat.VideoPreviewShareScreen" = "Share Screen"; diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatCameraPreviewController.swift b/submodules/TelegramCallsUI/Sources/VoiceChatCameraPreviewController.swift index d94c701cf8..f80ee4e067 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatCameraPreviewController.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatCameraPreviewController.swift @@ -1,283 +1,388 @@ import Foundation import UIKit -import SwiftSignalKit -import AsyncDisplayKit import Display +import AsyncDisplayKit import Postbox import TelegramCore import SyncCore -import TelegramPresentationData +import SwiftSignalKit import AccountContext -import UrlEscaping +import TelegramPresentationData +import SolidRoundedButtonNode +import PresentationDataUtils +import UIKitRuntimeUtils -private final class VoiceChatCameraPreviewAlertContentNode: AlertContentNode { - private let strings: PresentationStrings - private let title: String - private let text: String - - private let backgroundNode: ASDisplayNode - private let maskNode: ASImageNode - - private let titleNode: ASTextNode - private let textNode: ASTextNode - - private let actionNodesSeparator: ASDisplayNode - private let actionNodes: [TextAlertContentActionNode] - private let actionVerticalSeparators: [ASDisplayNode] - - private let disposable = MetaDisposable() - - private var validLayout: CGSize? - - private let hapticFeedback = HapticFeedback() - - override var dismissOnOutsideTap: Bool { - return self.isUserInteractionEnabled +final class VoiceChatCameraPreviewController: ViewController { + private var controllerNode: VoiceChatCameraPreviewControllerNode { + return self.displayNode as! VoiceChatCameraPreviewControllerNode } - init(theme: AlertControllerTheme, ptheme: PresentationTheme, strings: PresentationStrings, actions: [TextAlertAction], title: String, text: String) { - self.strings = strings - self.title = title - self.text = text + private let context: AccountContext + + private var animatedIn = false + + private let shareCamera: () -> Void + private let switchCamera: () -> Void + private let shareScreen: () -> Void + + private var presentationDataDisposable: Disposable? + + init(context: AccountContext, shareCamera: @escaping () -> Void, switchCamera: @escaping () -> Void, shareScreen: @escaping () -> Void) { + self.context = context + self.shareCamera = shareCamera + self.switchCamera = switchCamera + self.shareScreen = shareScreen - self.backgroundNode = ASDisplayNode() - self.backgroundNode.clipsToBounds = true - self.backgroundNode.backgroundColor = UIColor(rgb: 0x161619) + super.init(navigationBarPresentationData: nil) - self.maskNode = ASImageNode() - self.maskNode.displaysAsynchronously = false - self.maskNode.contentMode = .scaleToFill - self.maskNode.image = generateImage(CGSize(width: 300.0, height: 400.0), rotatedContext: { size, context in - let bounds = CGRect(origin: CGPoint(), size: size) - context.clear(bounds) - - context.setFillColor(UIColor(rgb: 0x000000, alpha: 0.3).cgColor) - context.fill(bounds) - - context.setBlendMode(.clear) - context.fillEllipse(in: CGRect(x: 27.0, y: 37.0, width: 246.0, height: 300.0)) + self.statusBar.statusBarStyle = .Ignore + + self.blocksBackgroundWhenInOverlay = true + + self.presentationDataDisposable = (context.sharedContext.presentationData + |> deliverOnMainQueue).start(next: { [weak self] presentationData in + if let strongSelf = self { + strongSelf.controllerNode.updatePresentationData(presentationData) + } }) - self.titleNode = ASTextNode() - self.titleNode.maximumNumberOfLines = 2 - self.textNode = ASTextNode() - self.textNode.maximumNumberOfLines = 8 - - self.actionNodesSeparator = ASDisplayNode() - self.actionNodesSeparator.isLayerBacked = true - - self.actionNodes = actions.map { action -> TextAlertContentActionNode in - return TextAlertContentActionNode(theme: theme, action: action) - } - - var actionVerticalSeparators: [ASDisplayNode] = [] - if actions.count > 1 { - for _ in 0 ..< actions.count - 1 { - let separatorNode = ASDisplayNode() - separatorNode.isLayerBacked = true - actionVerticalSeparators.append(separatorNode) - } - } - self.actionVerticalSeparators = actionVerticalSeparators - - super.init() - - self.addSubnode(self.backgroundNode) - self.addSubnode(self.titleNode) - self.addSubnode(self.textNode) - self.addSubnode(self.actionNodesSeparator) - - for actionNode in self.actionNodes { - self.addSubnode(actionNode) - } - - for separatorNode in self.actionVerticalSeparators { - self.addSubnode(separatorNode) - } - - self.backgroundNode.addSubnode(self.maskNode) - - self.updateTheme(theme) + self.statusBar.statusBarStyle = .Ignore + } + + required init(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") } deinit { - self.disposable.dispose() + self.presentationDataDisposable?.dispose() } - override func updateTheme(_ theme: AlertControllerTheme) { - self.titleNode.attributedText = NSAttributedString(string: self.title, font: Font.bold(17.0), textColor: theme.primaryColor, paragraphAlignment: .center) - self.textNode.attributedText = NSAttributedString(string: self.text, font: Font.regular(13.0), textColor: theme.primaryColor, paragraphAlignment: .center) + override public func loadDisplayNode() { + self.displayNode = VoiceChatCameraPreviewControllerNode(context: self.context) + self.controllerNode.shareCamera = { [weak self] in + self?.shareCamera() + self?.dismiss() + } + self.controllerNode.switchCamera = { [weak self] in + self?.switchCamera() + } + self.controllerNode.shareScreen = { [weak self] in + self?.shareScreen() + self?.dismiss() + } + self.controllerNode.dismiss = { [weak self] in + self?.presentingViewController?.dismiss(animated: false, completion: nil) + } + self.controllerNode.cancel = { [weak self] in + self?.dismiss() + } + } + + override public func loadView() { + super.loadView() + } + + override public func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + + if !self.animatedIn { + self.animatedIn = true + self.controllerNode.animateIn() + } + } + + override public func dismiss(completion: (() -> Void)? = nil) { + self.controllerNode.animateOut(completion: completion) + } + + override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { + super.containerLayoutUpdated(layout, transition: transition) + + self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition) + } +} - self.actionNodesSeparator.backgroundColor = theme.separatorColor - for actionNode in self.actionNodes { - actionNode.updateTheme(theme) - } - for separatorNode in self.actionVerticalSeparators { - separatorNode.backgroundColor = theme.separatorColor - } - - if let size = self.validLayout { - _ = self.updateLayout(size: size, transition: .immediate) - } - } +private class VoiceChatCameraPreviewControllerNode: ViewControllerTracingNode, UIScrollViewDelegate { + private let context: AccountContext + private var presentationData: PresentationData - override func updateLayout(size: CGSize, transition: ContainedViewLayoutTransition) -> CGSize { - var size = size - size.width = min(size.width, 300.0) - let measureSize = CGSize(width: size.width - 16.0 * 2.0, height: CGFloat.greatestFiniteMagnitude) + private let dimNode: ASDisplayNode + private let wrappingScrollNode: ASScrollNode + private let contentContainerNode: ASDisplayNode + private let effectNode: ASDisplayNode + private let backgroundNode: ASDisplayNode + private let contentBackgroundNode: ASDisplayNode + private let titleNode: ASTextNode + private let previewContainerNode: ASDisplayNode + private let cameraButton: SolidRoundedButtonNode + private let screenButton: SolidRoundedButtonNode + private let cancelButton: SolidRoundedButtonNode + + private let switchCameraButton: HighlightTrackingButtonNode + private let switchCameraEffectView: UIVisualEffectView + private let switchCameraIconNode: ASImageNode + + private var containerLayout: (ContainerViewLayout, CGFloat)? + + var shareCamera: (() -> Void)? + var switchCamera: (() -> Void)? + var shareScreen: (() -> Void)? + var dismiss: (() -> Void)? + var cancel: (() -> Void)? + + init(context: AccountContext) { + self.context = context + self.presentationData = context.sharedContext.currentPresentationData.with { $0 } - let hadValidLayout = self.validLayout != nil - self.validLayout = size + self.wrappingScrollNode = ASScrollNode() + self.wrappingScrollNode.view.alwaysBounceVertical = true + self.wrappingScrollNode.view.delaysContentTouches = false + self.wrappingScrollNode.view.canCancelContentTouches = true - var origin: CGPoint = CGPoint(x: 0.0, y: 18.0) - let spacing: CGFloat = 3.0 + self.dimNode = ASDisplayNode() + self.dimNode.backgroundColor = UIColor(white: 0.0, alpha: 0.5) - let videoHeight: CGFloat = 400.0 - origin.y += videoHeight + self.contentContainerNode = ASDisplayNode() + self.contentContainerNode.isOpaque = false + + self.backgroundNode = ASDisplayNode() + self.backgroundNode.clipsToBounds = true + self.backgroundNode.cornerRadius = 16.0 - let titleSize = self.titleNode.measure(measureSize) - transition.updateFrame(node: self.titleNode, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((size.width - titleSize.width) / 2.0), y: origin.y), size: titleSize)) - origin.y += titleSize.height + 4.0 + let backgroundColor = UIColor(rgb: 0x1c1c1e) + let textColor: UIColor = .white + let buttonColor: UIColor = UIColor(rgb: 0x2b2b2f) + let buttonTextColor: UIColor = .white + let blurStyle: UIBlurEffect.Style = .dark - let textSize = self.textNode.measure(measureSize) - transition.updateFrame(node: self.textNode, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((size.width - textSize.width) / 2.0), y: origin.y), size: textSize)) - origin.y += textSize.height + 6.0 + self.effectNode = ASDisplayNode(viewBlock: { + return UIVisualEffectView(effect: UIBlurEffect(style: blurStyle)) + }) - let actionButtonHeight: CGFloat = 44.0 - var minActionsWidth: CGFloat = 0.0 - let maxActionWidth: CGFloat = floor(size.width / CGFloat(self.actionNodes.count)) - let actionTitleInsets: CGFloat = 8.0 + self.contentBackgroundNode = ASDisplayNode() + self.contentBackgroundNode.backgroundColor = backgroundColor - var effectiveActionLayout = TextAlertContentActionLayout.horizontal - for actionNode in self.actionNodes { - let actionTitleSize = actionNode.titleNode.updateLayout(CGSize(width: maxActionWidth, height: actionButtonHeight)) - if case .horizontal = effectiveActionLayout, actionTitleSize.height > actionButtonHeight * 0.6667 { - effectiveActionLayout = .vertical + let title = self.presentationData.strings.VoiceChat_VideoPreviewTitle + + self.titleNode = ASTextNode() + self.titleNode.attributedText = NSAttributedString(string: title, font: Font.bold(17.0), textColor: textColor) + + self.cameraButton = SolidRoundedButtonNode(theme: SolidRoundedButtonTheme(theme: self.presentationData.theme), font: .bold, height: 52.0, cornerRadius: 11.0, gloss: false) + self.cameraButton.title = self.presentationData.strings.VoiceChat_VideoPreviewShareCamera + + self.screenButton = SolidRoundedButtonNode(theme: SolidRoundedButtonTheme(backgroundColor: buttonColor, foregroundColor: buttonTextColor), font: .bold, height: 52.0, cornerRadius: 11.0, gloss: false) + self.screenButton.title = self.presentationData.strings.VoiceChat_VideoPreviewShareScreen + + self.cancelButton = SolidRoundedButtonNode(theme: SolidRoundedButtonTheme(backgroundColor: buttonColor, foregroundColor: buttonTextColor), font: .regular, height: 52.0, cornerRadius: 11.0, gloss: false) + self.cancelButton.title = self.presentationData.strings.Common_Cancel + + self.previewContainerNode = ASDisplayNode() + self.previewContainerNode.cornerRadius = 11.0 + self.previewContainerNode.backgroundColor = .black + + self.switchCameraButton = HighlightTrackingButtonNode() + self.switchCameraEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .dark)) + self.switchCameraEffectView.clipsToBounds = true + self.switchCameraEffectView.layer.cornerRadius = 24.0 + self.switchCameraEffectView.isUserInteractionEnabled = false + + self.switchCameraIconNode = ASImageNode() + self.switchCameraIconNode.displaysAsynchronously = false + self.switchCameraIconNode.image = generateTintedImage(image: UIImage(bundleImageName: "Call/CallSwitchCameraButton"), color: .white) + self.switchCameraIconNode.contentMode = .center + + super.init() + + self.backgroundColor = nil + self.isOpaque = false + + self.dimNode.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.dimTapGesture(_:)))) + self.addSubnode(self.dimNode) + + self.wrappingScrollNode.view.delegate = self + self.addSubnode(self.wrappingScrollNode) + + self.wrappingScrollNode.addSubnode(self.backgroundNode) + self.wrappingScrollNode.addSubnode(self.contentContainerNode) + + self.backgroundNode.addSubnode(self.effectNode) + self.backgroundNode.addSubnode(self.contentBackgroundNode) + self.contentContainerNode.addSubnode(self.titleNode) + self.contentContainerNode.addSubnode(self.cameraButton) + self.contentContainerNode.addSubnode(self.screenButton) + self.contentContainerNode.addSubnode(self.cancelButton) + + self.contentContainerNode.addSubnode(self.previewContainerNode) + + self.previewContainerNode.addSubnode(self.switchCameraButton) + self.switchCameraButton.view.addSubview(self.switchCameraEffectView) + self.switchCameraButton.addSubnode(self.switchCameraIconNode) + + self.cameraButton.pressed = { [weak self] in + if let strongSelf = self { + strongSelf.shareCamera?() } - switch effectiveActionLayout { - case .horizontal: - minActionsWidth += actionTitleSize.width + actionTitleInsets - case .vertical: - minActionsWidth = max(minActionsWidth, actionTitleSize.width + actionTitleInsets) + } + self.screenButton.pressed = { [weak self] in + if let strongSelf = self { + strongSelf.shareScreen?() + } + } + self.cancelButton.pressed = { [weak self] in + if let strongSelf = self { + strongSelf.cancel?() } } - let insets = UIEdgeInsets(top: 18.0, left: 18.0, bottom: 18.0, right: 18.0) - - var contentWidth = max(titleSize.width, minActionsWidth) - contentWidth = max(contentWidth, 300.0) - - var actionsHeight: CGFloat = 0.0 - switch effectiveActionLayout { - case .horizontal: - actionsHeight = actionButtonHeight - case .vertical: - actionsHeight = actionButtonHeight * CGFloat(self.actionNodes.count) - } - - let resultWidth = contentWidth - let resultSize = CGSize(width: resultWidth, height: titleSize.height + textSize.height + spacing + videoHeight + spacing + actionsHeight + insets.top + insets.bottom) - - transition.updateFrame(node: self.backgroundNode, frame: CGRect(origin: CGPoint(), size: CGSize(width: resultWidth, height: videoHeight))) - transition.updateFrame(node: self.maskNode, frame: CGRect(origin: CGPoint(), size: CGSize(width: resultWidth, height: videoHeight))) - - transition.updateFrame(node: self.actionNodesSeparator, frame: CGRect(origin: CGPoint(x: 0.0, y: resultSize.height - actionsHeight - UIScreenPixel), size: CGSize(width: resultSize.width, height: UIScreenPixel))) - - var actionOffset: CGFloat = 0.0 - let actionWidth: CGFloat = floor(resultSize.width / CGFloat(self.actionNodes.count)) - var separatorIndex = -1 - var nodeIndex = 0 - for actionNode in self.actionNodes { - if separatorIndex >= 0 { - let separatorNode = self.actionVerticalSeparators[separatorIndex] - switch effectiveActionLayout { - case .horizontal: - transition.updateFrame(node: separatorNode, frame: CGRect(origin: CGPoint(x: actionOffset - UIScreenPixel, y: resultSize.height - actionsHeight), size: CGSize(width: UIScreenPixel, height: actionsHeight - UIScreenPixel))) - case .vertical: - transition.updateFrame(node: separatorNode, frame: CGRect(origin: CGPoint(x: 0.0, y: resultSize.height - actionsHeight + actionOffset - UIScreenPixel), size: CGSize(width: resultSize.width, height: UIScreenPixel))) + self.switchCameraButton.addTarget(self, action: #selector(self.switchCameraPressed), forControlEvents: .touchUpInside) + self.switchCameraButton.highligthedChanged = { [weak self] highlighted in + if let strongSelf = self { + if highlighted { + let transition: ContainedViewLayoutTransition = .animated(duration: 0.3, curve: .spring) + transition.updateSublayerTransformScale(node: strongSelf.switchCameraButton, scale: 0.9) + } else { + let transition: ContainedViewLayoutTransition = .animated(duration: 0.5, curve: .spring) + transition.updateSublayerTransformScale(node: strongSelf.switchCameraButton, scale: 1.0) } } - separatorIndex += 1 - - let currentActionWidth: CGFloat - switch effectiveActionLayout { - case .horizontal: - if nodeIndex == self.actionNodes.count - 1 { - currentActionWidth = resultSize.width - actionOffset - } else { - currentActionWidth = actionWidth - } - case .vertical: - currentActionWidth = resultSize.width - } - - let actionNodeFrame: CGRect - switch effectiveActionLayout { - case .horizontal: - actionNodeFrame = CGRect(origin: CGPoint(x: actionOffset, y: resultSize.height - actionsHeight), size: CGSize(width: currentActionWidth, height: actionButtonHeight)) - actionOffset += currentActionWidth - case .vertical: - actionNodeFrame = CGRect(origin: CGPoint(x: 0.0, y: resultSize.height - actionsHeight + actionOffset), size: CGSize(width: currentActionWidth, height: actionButtonHeight)) - actionOffset += actionButtonHeight - } - - transition.updateFrame(node: actionNode, frame: actionNodeFrame) - - nodeIndex += 1 } - - if !hadValidLayout { - Queue.mainQueue().after(0.1) { - self.maskNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) - self.maskNode.layer.animateSpring(from: 1.4 as NSNumber, to: 1.0 as NSNumber, keyPath: "transform.scale", duration: 0.4, initialVelocity: 0.0, damping: 104.0) - } - } - - return resultSize } -} + + @objc private func switchCameraPressed() { + self.switchCamera?() + } + + func updatePresentationData(_ presentationData: PresentationData) { + self.presentationData = presentationData + } + + override func didLoad() { + super.didLoad() + + if #available(iOSApplicationExtension 11.0, iOS 11.0, *) { + self.wrappingScrollNode.view.contentInsetAdjustmentBehavior = .never + } + } + + @objc func dimTapGesture(_ recognizer: UITapGestureRecognizer) { + if case .ended = recognizer.state { + self.cancel?() + } + } + + func animateIn() { + self.dimNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.4) + + let offset = self.bounds.size.height - self.contentBackgroundNode.frame.minY + + let dimPosition = self.dimNode.layer.position + self.dimNode.layer.animatePosition(from: CGPoint(x: dimPosition.x, y: dimPosition.y - offset), to: dimPosition, duration: 0.3, timingFunction: kCAMediaTimingFunctionSpring) + + let transition = ContainedViewLayoutTransition.animated(duration: 0.4, curve: .spring) + let targetBounds = self.bounds + self.bounds = self.bounds.offsetBy(dx: 0.0, dy: -offset) + transition.animateView({ + self.bounds = targetBounds + }) + } + + func animateOut(completion: (() -> Void)? = nil) { + var dimCompleted = false + var offsetCompleted = false + + let internalCompletion: () -> Void = { [weak self] in + if let strongSelf = self, dimCompleted && offsetCompleted { + strongSelf.dismiss?() + } + completion?() + } + + self.dimNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.3, removeOnCompletion: false, completion: { _ in + dimCompleted = true + internalCompletion() + }) + + let offset = self.bounds.size.height - self.contentBackgroundNode.frame.minY + let dimPosition = self.dimNode.layer.position + self.dimNode.layer.animatePosition(from: dimPosition, to: CGPoint(x: dimPosition.x, y: dimPosition.y - offset), duration: 0.3, timingFunction: kCAMediaTimingFunctionSpring, removeOnCompletion: false) + self.layer.animateBoundsOriginYAdditive(from: 0.0, to: -offset, duration: 0.3, timingFunction: kCAMediaTimingFunctionSpring, removeOnCompletion: false, completion: { _ in + offsetCompleted = true + internalCompletion() + }) + } + + override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { + if self.bounds.contains(point) { + if !self.contentBackgroundNode.bounds.contains(self.convert(point, to: self.contentBackgroundNode)) { + return self.dimNode.view + } + } + return super.hitTest(point, with: event) + } + + func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { + let contentOffset = scrollView.contentOffset + let additionalTopHeight = max(0.0, -contentOffset.y) + + if additionalTopHeight >= 30.0 { + self.cancel?() + } + } + + func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) { + self.containerLayout = (layout, navigationBarHeight) + + var insets = layout.insets(options: [.statusBar, .input]) + let cleanInsets = layout.insets(options: [.statusBar]) + insets.top = max(10.0, insets.top) + + let buttonOffset: CGFloat = 120.0 -func voiceChatCameraPreviewController(sharedContext: SharedAccountContext, account: Account, forceTheme: PresentationTheme?, title: String, text: String, apply: @escaping () -> Void) -> AlertController { - var presentationData = sharedContext.currentPresentationData.with { $0 } - if let forceTheme = forceTheme { - presentationData = presentationData.withUpdated(theme: forceTheme) - } - - var dismissImpl: ((Bool) -> Void)? - var applyImpl: (() -> Void)? - - let actions: [TextAlertAction] = [TextAlertAction(type: .genericAction, title: presentationData.strings.Common_Cancel, action: { - dismissImpl?(true) - }), TextAlertAction(type: .defaultAction, title: presentationData.strings.VoiceChat_VideoPreviewShare, action: { - applyImpl?() - })] - - let contentNode = VoiceChatCameraPreviewAlertContentNode(theme: AlertControllerTheme(presentationData: presentationData), ptheme: presentationData.theme, strings: presentationData.strings, actions: actions, title: title, text: text) - applyImpl = { [weak contentNode] in - guard let contentNode = contentNode else { - return - } - dismissImpl?(true) + let bottomInset: CGFloat = 10.0 + cleanInsets.bottom + let titleHeight: CGFloat = 54.0 + var contentHeight = titleHeight + bottomInset + 52.0 + 17.0 + let innerContentHeight: CGFloat = layout.size.height - contentHeight - 160.0 + contentHeight = titleHeight + bottomInset + 52.0 + 17.0 + innerContentHeight + buttonOffset - } - - let controller = AlertController(theme: AlertControllerTheme(presentationData: presentationData), contentNode: contentNode) - let presentationDataDisposable = sharedContext.presentationData.start(next: { [weak controller, weak contentNode] presentationData in - var presentationData = presentationData - if let forceTheme = forceTheme { - presentationData = presentationData.withUpdated(theme: forceTheme) + let width = horizontalContainerFillingSizeForLayout(layout: layout, sideInset: layout.safeInsets.left) + + let previewInset: CGFloat = 16.0 + let sideInset = floor((layout.size.width - width) / 2.0) + let contentContainerFrame = CGRect(origin: CGPoint(x: sideInset, y: layout.size.height - contentHeight), size: CGSize(width: width, height: contentHeight)) + let contentFrame = contentContainerFrame + + var backgroundFrame = CGRect(origin: CGPoint(x: contentFrame.minX, y: contentFrame.minY), size: CGSize(width: contentFrame.width, height: contentFrame.height + 2000.0)) + if backgroundFrame.minY < contentFrame.minY { + backgroundFrame.origin.y = contentFrame.minY } - controller?.theme = AlertControllerTheme(presentationData: presentationData) - }) - controller.dismissed = { - presentationDataDisposable.dispose() + transition.updateFrame(node: self.backgroundNode, frame: backgroundFrame) + transition.updateFrame(node: self.effectNode, frame: CGRect(origin: CGPoint(), size: backgroundFrame.size)) + transition.updateFrame(node: self.contentBackgroundNode, frame: CGRect(origin: CGPoint(), size: backgroundFrame.size)) + transition.updateFrame(node: self.wrappingScrollNode, frame: CGRect(origin: CGPoint(), size: layout.size)) + transition.updateFrame(node: self.dimNode, frame: CGRect(origin: CGPoint(), size: layout.size)) + + let titleSize = self.titleNode.measure(CGSize(width: width, height: titleHeight)) + let titleFrame = CGRect(origin: CGPoint(x: floor((contentFrame.width - titleSize.width) / 2.0), y: 18.0), size: titleSize) + transition.updateFrame(node: self.titleNode, frame: titleFrame) + + let previewSize = CGSize(width: contentFrame.width - previewInset * 2.0, height: contentHeight - 243.0 - bottomInset) + transition.updateFrame(node: self.previewContainerNode, frame: CGRect(origin: CGPoint(x: previewInset, y: 56.0), size: previewSize)) + + let switchCameraFrame = CGRect(x: previewSize.width - 48.0 - 16.0, y: previewSize.height - 48.0 - 16.0, width: 48.0, height: 48.0) + transition.updateFrame(node: self.switchCameraButton, frame: switchCameraFrame) + transition.updateFrame(view: self.switchCameraEffectView, frame: CGRect(origin: CGPoint(), size: switchCameraFrame.size)) + transition.updateFrame(node: self.switchCameraIconNode, frame: CGRect(origin: CGPoint(), size: switchCameraFrame.size)) + + let buttonInset: CGFloat = 16.0 + let cameraButtonHeight = self.cameraButton.updateLayout(width: contentFrame.width - buttonInset * 2.0, transition: transition) + transition.updateFrame(node: self.cameraButton, frame: CGRect(x: buttonInset, y: contentHeight - cameraButtonHeight - insets.bottom - 16.0 - buttonOffset, width: contentFrame.width, height: cameraButtonHeight)) + + let screenButtonHeight = self.screenButton.updateLayout(width: contentFrame.width - buttonInset * 2.0, transition: transition) + transition.updateFrame(node: self.screenButton, frame: CGRect(x: buttonInset, y: contentHeight - cameraButtonHeight - 8.0 - screenButtonHeight - insets.bottom - 16.0, width: contentFrame.width, height: screenButtonHeight)) + + let cancelButtonHeight = self.cancelButton.updateLayout(width: contentFrame.width - buttonInset * 2.0, transition: transition) + transition.updateFrame(node: self.cancelButton, frame: CGRect(x: buttonInset, y: contentHeight - cancelButtonHeight - insets.bottom - 16.0, width: contentFrame.width, height: cancelButtonHeight)) + + transition.updateFrame(node: self.contentContainerNode, frame: contentContainerFrame) } - dismissImpl = { [weak controller, weak contentNode] animated in - if animated { - controller?.dismissAnimated() - } else { - controller?.dismiss() - } - } - return controller } diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatController.swift b/submodules/TelegramCallsUI/Sources/VoiceChatController.swift index f2ecc2046a..addd42ef7e 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatController.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatController.swift @@ -429,7 +429,8 @@ public final class VoiceChatController: ViewController { var isMyPeer: Bool var ssrc: UInt32? var effectiveVideoEndpointId: String? - var presence: TelegramUserPresence? + var hasVideo: Bool + var hasScreencast: Bool var activityTimestamp: Int32 var state: State var muteState: GroupCallParticipantsContext.Participant.MuteState? @@ -447,7 +448,8 @@ public final class VoiceChatController: ViewController { isMyPeer: Bool, ssrc: UInt32?, effectiveVideoEndpointId: String?, - presence: TelegramUserPresence?, + hasVideo: Bool, + hasScreencast: Bool, activityTimestamp: Int32, state: State, muteState: GroupCallParticipantsContext.Participant.MuteState?, @@ -464,7 +466,8 @@ public final class VoiceChatController: ViewController { self.isMyPeer = isMyPeer self.ssrc = ssrc self.effectiveVideoEndpointId = effectiveVideoEndpointId - self.presence = presence + self.hasVideo = hasVideo + self.hasScreencast = hasScreencast self.activityTimestamp = activityTimestamp self.state = state self.muteState = muteState @@ -497,9 +500,6 @@ public final class VoiceChatController: ViewController { if lhs.effectiveVideoEndpointId != rhs.effectiveVideoEndpointId { return false } - if lhs.presence != rhs.presence { - return false - } if lhs.activityTimestamp != rhs.activityTimestamp { return false } @@ -622,7 +622,7 @@ public final class VoiceChatController: ViewController { }) case let .peer(peerEntry): let peer = peerEntry.peer - + var text: VoiceChatParticipantItem.ParticipantText var expandedText: VoiceChatParticipantItem.ParticipantText? let icon: VoiceChatParticipantItem.Icon @@ -632,11 +632,16 @@ public final class VoiceChatController: ViewController { state = .listening } - let textIcon: VoiceChatParticipantItem.ParticipantText.Icon? + var textIcon = VoiceChatParticipantItem.ParticipantText.TextIcon() + if peerEntry.hasVideo { + textIcon.insert(.video) + } + if peerEntry.hasScreencast { + textIcon.insert(.screen) + } if peerEntry.volume != nil { - textIcon = .volume + textIcon.insert(.volume) } else { - textIcon = nil } let yourText: String if (peerEntry.about?.isEmpty ?? true) && peer.smallProfileImage == nil { @@ -699,7 +704,7 @@ public final class VoiceChatController: ViewController { let revealOptions: [VoiceChatParticipantItem.RevealOption] = [] - return VoiceChatParticipantItem(presentationData: ItemListPresentationData(presentationData), dateTimeFormat: presentationData.dateTimeFormat, nameDisplayOrder: presentationData.nameDisplayOrder, context: context, peer: peer, ssrc: peerEntry.ssrc, presence: peerEntry.presence, text: text, expandedText: expandedText, icon: icon, style: peerEntry.style, enabled: true, transparent: transparent, pinned: peerEntry.pinned, selectable: true, getAudioLevel: { return interaction.getAudioLevel(peer.id) }, getVideo: { + return VoiceChatParticipantItem(presentationData: ItemListPresentationData(presentationData), dateTimeFormat: presentationData.dateTimeFormat, nameDisplayOrder: presentationData.nameDisplayOrder, context: context, peer: peer, ssrc: peerEntry.ssrc, presence: nil, text: text, expandedText: expandedText, icon: icon, style: peerEntry.style, enabled: true, transparent: transparent, pinned: peerEntry.pinned, selectable: true, getAudioLevel: { return interaction.getAudioLevel(peer.id) }, getVideo: { if let endpointId = peerEntry.effectiveVideoEndpointId { return interaction.getPeerVideo(endpointId, peerEntry.style != .list) } else { @@ -3235,14 +3240,12 @@ public final class VoiceChatController: ViewController { self.call.disableVideo() self.call.disableScreencast() } else { - #if DEBUG - //self.call.requestScreencast() - self.call.requestVideo() - return; - #endif - - let controller = voiceChatCameraPreviewController(sharedContext: self.context.sharedContext, account: self.context.account, forceTheme: self.darkTheme, title: self.presentationData.strings.VoiceChat_VideoPreviewTitle, text: self.presentationData.strings.VoiceChat_VideoPreviewDescription, apply: { [weak self] in + let controller = VoiceChatCameraPreviewController(context: self.context, shareCamera: { [weak self] in self?.call.requestVideo() + }, switchCamera: { [weak self] in + self?.call.switchVideoCamera() + }, shareScreen: { [weak self] in + self?.call.requestScreencast() }) self.controller?.present(controller, in: .window(.root)) } @@ -3879,13 +3882,14 @@ public final class VoiceChatController: ViewController { // transition.updateAlpha(node: self.optionsButton, alpha: self.optionsButton.isUserInteractionEnabled ? 1.0 : 0.0) // transition.updateAlpha(node: self.titleNode, alpha: 1.0) } + transition.updateAlpha(node: self.optionsButton, alpha: self.optionsButton.isUserInteractionEnabled ? 1.0 : 0.0) transition.updateFrame(node: self.bottomPanelCoverNode, frame: bottomPanelCoverFrame) transition.updateFrame(node: self.bottomPanelNode, frame: bottomPanelFrame) if let pickerView = self.pickerView { transition.updateFrame(view: pickerView, frame: CGRect(x: 0.0, y: layout.size.height - bottomPanelHeight - 216.0, width: size.width, height: 216.0)) } - + let timerFrame = CGRect(x: 0.0, y: layout.size.height - bottomPanelHeight - 216.0, width: size.width, height: 216.0) transition.updateFrame(node: self.timerNode, frame: timerFrame) self.timerNode.update(size: timerFrame.size, scheduleTime: self.callState?.scheduleTimestamp, transition: .immediate) @@ -4362,7 +4366,8 @@ public final class VoiceChatController: ViewController { isMyPeer: self.callState?.myPeerId == member.peer.id, ssrc: member.ssrc, effectiveVideoEndpointId: member.presentationEndpointId ?? member.videoEndpointId, - presence: nil, + hasVideo: member.videoEndpointId != nil, + hasScreencast: member.presentationEndpointId != nil, activityTimestamp: Int32.max - 1 - index, state: memberState, muteState: memberMuteState, @@ -4382,7 +4387,8 @@ public final class VoiceChatController: ViewController { isMyPeer: self.callState?.myPeerId == member.peer.id, ssrc: member.ssrc, effectiveVideoEndpointId: member.presentationEndpointId ?? member.videoEndpointId, - presence: nil, + hasVideo: member.videoEndpointId != nil, + hasScreencast: member.presentationEndpointId != nil, activityTimestamp: Int32.max - 1 - index, state: memberState, muteState: memberMuteState, @@ -4400,11 +4406,12 @@ public final class VoiceChatController: ViewController { if memberPeer.id == self.effectiveSpeakerWithVideo?.0 { pinnedEntry = .peer(PeerEntry( peer: memberPeer, - about: member.about, + about: nil, isMyPeer: self.callState?.myPeerId == member.peer.id, ssrc: member.ssrc, effectiveVideoEndpointId: member.presentationEndpointId ?? member.videoEndpointId, - presence: nil, + hasVideo: false, + hasScreencast: false, activityTimestamp: Int32.max - 1 - index, state: memberState, muteState: memberMuteState, @@ -4431,7 +4438,8 @@ public final class VoiceChatController: ViewController { isMyPeer: false, ssrc: nil, effectiveVideoEndpointId: nil, - presence: nil, + hasVideo: false, + hasScreencast: false, activityTimestamp: Int32.max - 1 - index, state: .invited, muteState: nil, diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatParticipantItem.swift b/submodules/TelegramCallsUI/Sources/VoiceChatParticipantItem.swift index b4ea1ad777..7b0bc0762f 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatParticipantItem.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatParticipantItem.swift @@ -25,10 +25,21 @@ final class VoiceChatParticipantItem: ListViewItem { case tile(isLandscape: Bool) } - enum ParticipantText { - public enum Icon { - case volume - case video + enum ParticipantText: Equatable { + public struct TextIcon: OptionSet { + public var rawValue: Int32 + + public init(rawValue: Int32) { + self.rawValue = rawValue + } + + public init() { + self.rawValue = 0 + } + + public static let volume = TextIcon(rawValue: 1 << 0) + public static let video = TextIcon(rawValue: 1 << 1) + public static let screen = TextIcon(rawValue: 1 << 2) } public enum TextColor { @@ -39,7 +50,7 @@ final class VoiceChatParticipantItem: ListViewItem { } case presence - case text(String, Icon?, TextColor) + case text(String, TextIcon, TextColor) case none } @@ -179,7 +190,7 @@ private let borderImage = generateImage(CGSize(width: tileSize.width, height: ti context.clear(bounds) context.setLineWidth(borderLineWidth) - context.setStrokeColor(accentColor.cgColor) + context.setStrokeColor(constructiveColor.cgColor) context.addPath(UIBezierPath(roundedRect: bounds.insetBy(dx: (borderLineWidth - UIScreenPixel) / 2.0, dy: (borderLineWidth - UIScreenPixel) / 2.0), cornerRadius: backgroundCornerRadius - UIScreenPixel).cgPath) context.strokePath() @@ -196,23 +207,108 @@ private let fadeImage = generateImage(CGSize(width: 1.0, height: 30.0), rotatedC }) private class VoiceChatParticipantStatusNode: ASDisplayNode { - private let iconNode: ASImageNode + private var iconNodes: [ASImageNode] private let textNode: TextNode + private var currentParams: (CGSize, VoiceChatParticipantItem.ParticipantText)? + override init() { - self.iconNode = ASImageNode() - self.iconNode.displaysAsynchronously = false - + self.iconNodes = [] self.textNode = TextNode() + self.textNode.isUserInteractionEnabled = false + self.textNode.contentMode = .left + self.textNode.contentsScale = UIScreen.main.scale super.init() - self.addSubnode(self.iconNode) self.addSubnode(self.textNode) } - func update() { + func asyncLayout() -> (_ size: CGSize, _ text: VoiceChatParticipantItem.ParticipantText, _ transparent: Bool) -> (CGSize, () -> Void) { + let makeTextLayout = TextNode.asyncLayout(self.textNode) + return { size, text, transparent in + let statusFont = Font.regular(14.0) + + var attributedString: NSAttributedString? + var color: UIColor = .white + var hasVolume = false + var hasVideo = false + var hasScreen = false + switch text { + case let .text(text, textIcon, textColor): + hasVolume = textIcon.contains(.volume) + hasVideo = textIcon.contains(.video) + hasScreen = textIcon.contains(.screen) + + var textColorValue: UIColor + switch textColor { + case .generic: + textColorValue = UIColor(rgb: 0x98989e) + case .accent: + textColorValue = accentColor + case .constructive: + textColorValue = constructiveColor + case .destructive: + textColorValue = destructiveColor + } + if transparent { + textColorValue = UIColor(rgb: 0xffffff, alpha: 0.65) + } + color = textColorValue + attributedString = NSAttributedString(string: text, font: statusFont, textColor: textColorValue) + default: + break + } + + let (textLayout, textApply) = makeTextLayout(TextNodeLayoutArguments(attributedString: attributedString, backgroundColor: nil, maximumNumberOfLines: 1, truncationType: .end, constrainedSize: CGSize(width: size.width, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets())) + + let iconSize = CGSize(width: 16.0, height: 16.0) + let spacing: CGFloat = 3.0 + var contentSize = textLayout.size + var icons: [UIImage] = [] + if hasVolume, let image = generateTintedImage(image: UIImage(bundleImageName: "Call/StatusVolume"), color: color) { + icons.append(image) + } + if hasVideo, let image = generateTintedImage(image: UIImage(bundleImageName: "Call/StatusVideo"), color: color) { + icons.append(image) + } + if hasScreen, let image = generateTintedImage(image: UIImage(bundleImageName: "Call/StatusScreen"), color: color) { + icons.append(image) + } + contentSize.width += (iconSize.width + spacing) * CGFloat(icons.count) + + return (contentSize, { [weak self] in + guard let strongSelf = self else { + return + } + + strongSelf.currentParams = (size, text) + + for i in 0 ..< icons.count { + let iconNode: ASImageNode + if strongSelf.iconNodes.count >= i + 1 { + iconNode = strongSelf.iconNodes[i] + } else { + iconNode = ASImageNode() + strongSelf.addSubnode(iconNode) + strongSelf.iconNodes.append(iconNode) + } + iconNode.frame = CGRect(origin: CGPoint(x: (iconSize.width + spacing) * CGFloat(i), y: 0.0), size: iconSize) + + iconNode.image = icons[i] + } + if strongSelf.iconNodes.count > icons.count { + for i in icons.count ..< strongSelf.iconNodes.count { + strongSelf.iconNodes[i].image = nil + } + } + + + let _ = textApply() + strongSelf.textNode.frame = CGRect(origin: CGPoint(x: (iconSize.width + spacing) * CGFloat(icons.count), y: 0.0), size: textLayout.size) + }) + } } } @@ -237,9 +333,8 @@ class VoiceChatParticipantItemNode: ItemListRevealOptionsItemNode { private let pinIconNode: ASImageNode private let contentWrapperNode: ASDisplayNode private let titleNode: TextNode - private let statusIconNode: ASImageNode - private let statusNode: TextNode - private let expandedStatusNode: TextNode + private let statusNode: VoiceChatParticipantStatusNode + private let expandedStatusNode: VoiceChatParticipantStatusNode private var credibilityIconNode: ASImageNode? private var avatarTransitionNode: ASImageNode? @@ -332,18 +427,11 @@ class VoiceChatParticipantItemNode: ItemListRevealOptionsItemNode { self.titleNode.contentMode = .left self.titleNode.contentsScale = UIScreen.main.scale - self.statusIconNode = ASImageNode() - self.statusIconNode.displaysAsynchronously = false - - self.statusNode = TextNode() + self.statusNode = VoiceChatParticipantStatusNode() self.statusNode.isUserInteractionEnabled = false - self.statusNode.contentMode = .left - self.statusNode.contentsScale = UIScreen.main.scale - self.expandedStatusNode = TextNode() + self.expandedStatusNode = VoiceChatParticipantStatusNode() self.expandedStatusNode.isUserInteractionEnabled = false - self.expandedStatusNode.contentMode = .left - self.expandedStatusNode.contentsScale = UIScreen.main.scale self.expandedStatusNode.alpha = 0.0 self.actionContainerNode = ASDisplayNode() @@ -366,7 +454,6 @@ class VoiceChatParticipantItemNode: ItemListRevealOptionsItemNode { self.offsetContainerNode.addSubnode(self.videoContainerNode) self.offsetContainerNode.addSubnode(self.contentWrapperNode) self.contentWrapperNode.addSubnode(self.titleNode) - self.contentWrapperNode.addSubnode(self.statusIconNode) self.contentWrapperNode.addSubnode(self.statusNode) self.contentWrapperNode.addSubnode(self.expandedStatusNode) self.contentWrapperNode.addSubnode(self.actionContainerNode) @@ -877,8 +964,8 @@ class VoiceChatParticipantItemNode: ItemListRevealOptionsItemNode { func asyncLayout() -> (_ item: VoiceChatParticipantItem, _ params: ListViewItemLayoutParams, _ first: Bool, _ last: Bool) -> (ListViewItemNodeLayout, (Bool, Bool) -> Void) { let makeTitleLayout = TextNode.asyncLayout(self.titleNode) - let makeStatusLayout = TextNode.asyncLayout(self.statusNode) - let makeExpandedStatusLayout = TextNode.asyncLayout(self.expandedStatusNode) + let makeStatusLayout = self.statusNode.asyncLayout() + let makeExpandedStatusLayout = self.expandedStatusNode.asyncLayout() var currentDisabledOverlayNode = self.disabledOverlayNode let currentItem = self.layoutParams?.0 @@ -891,11 +978,8 @@ class VoiceChatParticipantItemNode: ItemListRevealOptionsItemNode { } var titleFont = item.style == .list ? Font.regular(17.0) : Font.regular(12.0) - let statusFont = Font.regular(14.0) var titleAttributedString: NSAttributedString? - var statusAttributedString: NSAttributedString? - var expandedStatusAttributedString: NSAttributedString? let rightInset: CGFloat = params.rightInset @@ -960,60 +1044,15 @@ class VoiceChatParticipantItemNode: ItemListRevealOptionsItemNode { } var wavesColor = UIColor(rgb: 0x34c759) - switch item.text { - case .presence: - if let user = item.peer as? TelegramUser, let botInfo = user.botInfo { - let botStatus: String - if botInfo.flags.contains(.hasAccessToChatHistory) { - botStatus = item.presentationData.strings.Bot_GroupStatusReadsHistory - } else { - botStatus = item.presentationData.strings.Bot_GroupStatusDoesNotReadHistory - } - statusAttributedString = NSAttributedString(string: botStatus, font: statusFont, textColor: item.presentationData.theme.list.itemSecondaryTextColor) - } else if let presence = item.presence as? TelegramUserPresence { - let timestamp = CFAbsoluteTimeGetCurrent() + NSTimeIntervalSince1970 - let (string, _) = stringAndActivityForUserPresence(strings: item.presentationData.strings, dateTimeFormat: item.dateTimeFormat, presence: presence, relativeTo: Int32(timestamp)) - statusAttributedString = NSAttributedString(string: string, font: statusFont, textColor: item.presentationData.theme.list.itemSecondaryTextColor) - } else { - statusAttributedString = NSAttributedString(string: item.presentationData.strings.LastSeen_Offline, font: statusFont, textColor: item.presentationData.theme.list.itemSecondaryTextColor) - } - case let .text(text, textIcon, textColor): - var textColorValue: UIColor - switch textColor { - case .generic: - textColorValue = item.presentationData.theme.list.itemSecondaryTextColor - case .accent: - textColorValue = item.presentationData.theme.list.itemAccentColor - wavesColor = textColorValue - case .constructive: - textColorValue = constructiveColor - case .destructive: - textColorValue = destructiveColor - wavesColor = textColorValue - } - if item.transparent && item.style == .list { - textColorValue = UIColor(rgb: 0xffffff, alpha: 0.65) - } - statusAttributedString = NSAttributedString(string: text, font: statusFont, textColor: textColorValue) - case .none: - break - } - - if let expandedText = item.expandedText, case let .text(text, _, textColor) = expandedText { - let textColorValue: UIColor + if case let .text(_, _, textColor) = item.text { switch textColor { - case .generic: - textColorValue = item.presentationData.theme.list.itemSecondaryTextColor - case .accent: - textColorValue = item.presentationData.theme.list.itemAccentColor - case .constructive: - textColorValue = constructiveColor - case .destructive: - textColorValue = destructiveColor + case .accent: + wavesColor = accentColor + case .destructive: + wavesColor = destructiveColor + default: + break } - expandedStatusAttributedString = NSAttributedString(string: text, font: statusFont, textColor: textColorValue) - } else { - expandedStatusAttributedString = statusAttributedString } let leftInset: CGFloat = 58.0 + params.leftInset @@ -1051,13 +1090,14 @@ class VoiceChatParticipantItemNode: ItemListRevealOptionsItemNode { constrainedWidth = params.width - 24.0 - 10.0 } let (titleLayout, titleApply) = makeTitleLayout(TextNodeLayoutArguments(attributedString: titleAttributedString, backgroundColor: nil, maximumNumberOfLines: 1, truncationType: .end, constrainedSize: CGSize(width: constrainedWidth, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets())) - let (statusLayout, statusApply) = makeStatusLayout(TextNodeLayoutArguments(attributedString: statusAttributedString, backgroundColor: nil, maximumNumberOfLines: 1, truncationType: .end, constrainedSize: CGSize(width: params.width - leftInset - 8.0 - rightInset - 30.0, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets())) - let (expandedStatusLayout, expandedStatusApply) = makeExpandedStatusLayout(TextNodeLayoutArguments(attributedString: expandedStatusAttributedString, backgroundColor: nil, maximumNumberOfLines: 6, truncationType: .end, constrainedSize: CGSize(width: params.width - leftInset - 8.0 - rightInset - expandedRightInset, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets())) - let titleSpacing: CGFloat = statusLayout.size.height == 0.0 ? 0.0 : 1.0 + let (statusLayout, statusApply) = makeStatusLayout(CGSize(width: params.width - leftInset - 8.0 - rightInset - 30.0, height: CGFloat.greatestFiniteMagnitude), item.text, item.transparent && item.style == .list) + let (expandedStatusLayout, expandedStatusApply) = makeExpandedStatusLayout(CGSize(width: params.width - leftInset - 8.0 - rightInset - expandedRightInset, height: CGFloat.greatestFiniteMagnitude), item.expandedText ?? item.text, false) + + let titleSpacing: CGFloat = statusLayout.height == 0.0 ? 0.0 : 1.0 let minHeight: CGFloat = titleLayout.size.height + verticalInset * 2.0 - let rawHeight: CGFloat = verticalInset * 2.0 + titleLayout.size.height + titleSpacing + statusLayout.size.height + let rawHeight: CGFloat = verticalInset * 2.0 + titleLayout.size.height + titleSpacing + statusLayout.height let contentSize: CGSize let insets: UIEdgeInsets @@ -1167,7 +1207,7 @@ class VoiceChatParticipantItemNode: ItemListRevealOptionsItemNode { } var extractedRect = CGRect(origin: CGPoint(), size: layout.contentSize).insetBy(dx: 16.0 + params.leftInset, dy: 0.0) - var extractedHeight = extractedRect.height + expandedStatusLayout.size.height - statusLayout.size.height + var extractedHeight = extractedRect.height + expandedStatusLayout.height - statusLayout.height var extractedVerticalOffset: CGFloat = 0.0 if item.peer.smallProfileImage != nil || strongSelf.videoNode != nil { extractedVerticalOffset = extractedRect.width @@ -1209,9 +1249,9 @@ class VoiceChatParticipantItemNode: ItemListRevealOptionsItemNode { strongSelf.accessibilityLabel = titleAttributedString?.string var combinedValueString = "" - if let statusString = statusAttributedString?.string, !statusString.isEmpty { - combinedValueString.append(statusString) - } +// if let statusString = statusAttributedString?.string, !statusString.isEmpty { +// combinedValueString.append(statusString) +// } strongSelf.accessibilityValue = combinedValueString @@ -1293,8 +1333,8 @@ class VoiceChatParticipantItemNode: ItemListRevealOptionsItemNode { transition.updateFrame(node: strongSelf.bottomStripeNode, frame: CGRect(origin: CGPoint(x: leftInset, y: contentSize.height + -separatorHeight), size: CGSize(width: layoutSize.width - leftInset, height: separatorHeight))) transition.updateFrame(node: strongSelf.titleNode, frame: titleFrame) - transition.updateFrame(node: strongSelf.statusNode, frame: CGRect(origin: CGPoint(x: leftInset, y: strongSelf.titleNode.frame.maxY + titleSpacing), size: statusLayout.size)) - transition.updateFrame(node: strongSelf.expandedStatusNode, frame: CGRect(origin: CGPoint(x: leftInset, y: strongSelf.titleNode.frame.maxY + titleSpacing), size: expandedStatusLayout.size)) + transition.updateFrame(node: strongSelf.statusNode, frame: CGRect(origin: CGPoint(x: leftInset, y: strongSelf.titleNode.frame.maxY + titleSpacing), size: statusLayout)) + transition.updateFrame(node: strongSelf.expandedStatusNode, frame: CGRect(origin: CGPoint(x: leftInset, y: strongSelf.titleNode.frame.maxY + titleSpacing), size: expandedStatusLayout)) if let currentCredibilityIconImage = currentCredibilityIconImage { let iconNode: ASImageNode diff --git a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift index 7c29db19bf..865477bcff 100644 --- a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift +++ b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift @@ -428,3143 +428,3143 @@ public final class PresentationStrings: Equatable { public var AccessDenied_LocationDenied: String { return self._s[211]! } public var Share_AuthTitle: String { return self._s[212]! } public var Month_ShortAugust: String { return self._s[213]! } - public var VoiceChat_VideoPreviewShare: String { return self._s[214]! } public func Notification_PinnedDeletedMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[215]!, self._r[215]!, [_0]) + return formatWithArgumentRanges(self._s[214]!, self._r[214]!, [_0]) } - public var Channel_BanUser_PermissionSendMedia: String { return self._s[216]! } - public var SettingsSearch_Synonyms_Data_DownloadInBackground: String { return self._s[217]! } + public var Channel_BanUser_PermissionSendMedia: String { return self._s[215]! } + public var SettingsSearch_Synonyms_Data_DownloadInBackground: String { return self._s[216]! } public func PUSH_CONTACT_JOINED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[218]!, self._r[218]!, [_1]) + return formatWithArgumentRanges(self._s[217]!, self._r[217]!, [_1]) } - public var WallpaperSearch_ColorTitle: String { return self._s[220]! } - public var Wallpaper_Search: String { return self._s[221]! } - public var ClearCache_StorageUsage: String { return self._s[222]! } - public var CreatePoll_TextPlaceholder: String { return self._s[223]! } - public var Conversation_EditingMessagePanelTitle: String { return self._s[224]! } - public var Channel_EditAdmin_PermissionBanUsers: String { return self._s[225]! } - public var OldChannels_NoticeCreateText: String { return self._s[226]! } - public var ProfilePhoto_MainVideo: String { return self._s[227]! } - public var VoiceChat_StatusListening: String { return self._s[228]! } - public var InviteLink_DeleteLinkAlert_Text: String { return self._s[229]! } - public var UserInfo_NotificationsDisabled: String { return self._s[230]! } - public var Map_Unknown: String { return self._s[231]! } - public var Notifications_MessageNotificationsAlert: String { return self._s[232]! } - public var Conversation_StopQuiz: String { return self._s[233]! } - public var Checkout_LiabilityAlertTitle: String { return self._s[234]! } + public var WallpaperSearch_ColorTitle: String { return self._s[219]! } + public var Wallpaper_Search: String { return self._s[220]! } + public var ClearCache_StorageUsage: String { return self._s[221]! } + public var CreatePoll_TextPlaceholder: String { return self._s[222]! } + public var Conversation_EditingMessagePanelTitle: String { return self._s[223]! } + public var Channel_EditAdmin_PermissionBanUsers: String { return self._s[224]! } + public var OldChannels_NoticeCreateText: String { return self._s[225]! } + public var ProfilePhoto_MainVideo: String { return self._s[226]! } + public var VoiceChat_StatusListening: String { return self._s[227]! } + public var InviteLink_DeleteLinkAlert_Text: String { return self._s[228]! } + public var UserInfo_NotificationsDisabled: String { return self._s[229]! } + public var Map_Unknown: String { return self._s[230]! } + public var Notifications_MessageNotificationsAlert: String { return self._s[231]! } + public var Conversation_StopQuiz: String { return self._s[232]! } + public var Checkout_LiabilityAlertTitle: String { return self._s[233]! } public func Username_UsernameIsAvailable(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[235]!, self._r[235]!, [_0]) + return formatWithArgumentRanges(self._s[234]!, self._r[234]!, [_0]) } - public var CreatePoll_OptionPlaceholder: String { return self._s[236]! } - public var Conversation_RestrictedStickers: String { return self._s[237]! } - public var MemberSearch_BotSection: String { return self._s[239]! } - public var Channel_Management_AddModeratorHelp: String { return self._s[241]! } - public var Widget_ShortcutsGalleryDescription: String { return self._s[242]! } - public var MaskStickerSettings_Title: String { return self._s[243]! } - public var ShareMenu_Comment: String { return self._s[244]! } - public var GroupInfo_Notifications: String { return self._s[245]! } - public var CheckoutInfo_ReceiverInfoTitle: String { return self._s[246]! } + public var CreatePoll_OptionPlaceholder: String { return self._s[235]! } + public var Conversation_RestrictedStickers: String { return self._s[236]! } + public var MemberSearch_BotSection: String { return self._s[238]! } + public var Channel_Management_AddModeratorHelp: String { return self._s[240]! } + public var Widget_ShortcutsGalleryDescription: String { return self._s[241]! } + public var MaskStickerSettings_Title: String { return self._s[242]! } + public var ShareMenu_Comment: String { return self._s[243]! } + public var GroupInfo_Notifications: String { return self._s[244]! } + public var CheckoutInfo_ReceiverInfoTitle: String { return self._s[245]! } public func DialogList_EncryptedChatStartedOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[247]!, self._r[247]!, [_0]) + return formatWithArgumentRanges(self._s[246]!, self._r[246]!, [_0]) } - public var Conversation_ContextMenuCopyLink: String { return self._s[248]! } - public var VoiceChat_MutedHelp: String { return self._s[251]! } - public var ChatListFolder_CategoryMuted: String { return self._s[252]! } - public var TwoStepAuth_AddHintDescription: String { return self._s[253]! } + public var Conversation_ContextMenuCopyLink: String { return self._s[247]! } + public var VoiceChat_MutedHelp: String { return self._s[250]! } + public var ChatListFolder_CategoryMuted: String { return self._s[251]! } + public var TwoStepAuth_AddHintDescription: String { return self._s[252]! } public func VoiceOver_Chat_Duration(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[254]!, self._r[254]!, [_0]) + return formatWithArgumentRanges(self._s[253]!, self._r[253]!, [_0]) } - public var Conversation_ClousStorageInfo_Description3: String { return self._s[255]! } - public var BroadcastGroups_LimitAlert_SettingsTip: String { return self._s[256]! } - public var Contacts_SortByPresence: String { return self._s[257]! } - public var Watch_Location_Access: String { return self._s[258]! } - public var WallpaperPreview_CustomColorTopText: String { return self._s[259]! } - public var Passport_Address_TypeBankStatement: String { return self._s[260]! } - public var Group_Username_RevokeExistingUsernamesInfo: String { return self._s[261]! } - public var Conversation_ClearPrivateHistory: String { return self._s[262]! } - public var ChatList_Mute: String { return self._s[265]! } - public var Channel_AdminLog_CanDeleteMessagesOfOthers: String { return self._s[266]! } - public var Stats_PostsTitle: String { return self._s[267]! } + public var Conversation_ClousStorageInfo_Description3: String { return self._s[254]! } + public var BroadcastGroups_LimitAlert_SettingsTip: String { return self._s[255]! } + public var Contacts_SortByPresence: String { return self._s[256]! } + public var Watch_Location_Access: String { return self._s[257]! } + public var WallpaperPreview_CustomColorTopText: String { return self._s[258]! } + public var Passport_Address_TypeBankStatement: String { return self._s[259]! } + public var Group_Username_RevokeExistingUsernamesInfo: String { return self._s[260]! } + public var Conversation_ClearPrivateHistory: String { return self._s[261]! } + public var ChatList_Mute: String { return self._s[264]! } + public var Channel_AdminLog_CanDeleteMessagesOfOthers: String { return self._s[265]! } + public var Stats_PostsTitle: String { return self._s[266]! } public func Conversation_AutoremoveTimerSetGroup(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[268]!, self._r[268]!, [_1]) + return formatWithArgumentRanges(self._s[267]!, self._r[267]!, [_1]) } - public var Paint_Masks: String { return self._s[270]! } - public var PasscodeSettings_TryAgainIn1Minute: String { return self._s[273]! } - public var Chat_AttachmentLimitReached: String { return self._s[274]! } - public var StickerPackActionInfo_ArchivedTitle: String { return self._s[275]! } - public var Watch_Stickers_StickerPacks: String { return self._s[277]! } - public var Channel_Setup_Title: String { return self._s[278]! } - public var GroupInfo_Administrators: String { return self._s[279]! } - public var InviteLink_PublicLink: String { return self._s[280]! } - public var InviteLink_DeleteLinkAlert_Action: String { return self._s[282]! } - public var NotificationSettings_ShowNotificationsAllAccountsInfoOff: String { return self._s[283]! } - public var Conversation_ContextMenuDiscuss: String { return self._s[284]! } - public var StickerPack_BuiltinPackName: String { return self._s[285]! } - public var Conversation_GreetingText: String { return self._s[287]! } - public var TwoStepAuth_RecoveryEmailChangeDescription: String { return self._s[289]! } - public var Checkout_ShippingMethod: String { return self._s[291]! } - public var ClearCache_FreeSpace: String { return self._s[292]! } - public var EditTheme_Expand_Preview_IncomingReplyText: String { return self._s[293]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsSound: String { return self._s[296]! } + public var Paint_Masks: String { return self._s[269]! } + public var PasscodeSettings_TryAgainIn1Minute: String { return self._s[272]! } + public var Chat_AttachmentLimitReached: String { return self._s[273]! } + public var StickerPackActionInfo_ArchivedTitle: String { return self._s[274]! } + public var Watch_Stickers_StickerPacks: String { return self._s[276]! } + public var Channel_Setup_Title: String { return self._s[277]! } + public var GroupInfo_Administrators: String { return self._s[278]! } + public var InviteLink_PublicLink: String { return self._s[279]! } + public var InviteLink_DeleteLinkAlert_Action: String { return self._s[281]! } + public var NotificationSettings_ShowNotificationsAllAccountsInfoOff: String { return self._s[282]! } + public var Conversation_ContextMenuDiscuss: String { return self._s[283]! } + public var StickerPack_BuiltinPackName: String { return self._s[284]! } + public var Conversation_GreetingText: String { return self._s[286]! } + public var TwoStepAuth_RecoveryEmailChangeDescription: String { return self._s[288]! } + public var Checkout_ShippingMethod: String { return self._s[290]! } + public var ClearCache_FreeSpace: String { return self._s[291]! } + public var EditTheme_Expand_Preview_IncomingReplyText: String { return self._s[292]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsSound: String { return self._s[295]! } public func TwoStepAuth_ConfirmEmailDescription(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[297]!, self._r[297]!, [_1]) + return formatWithArgumentRanges(self._s[296]!, self._r[296]!, [_1]) } - public var Conversation_typing: String { return self._s[298]! } + public var Conversation_typing: String { return self._s[297]! } public func PrivacySettings_LastSeenContactsMinus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[300]!, self._r[300]!, [_0]) + return formatWithArgumentRanges(self._s[299]!, self._r[299]!, [_0]) } - public var WebSearch_RecentSectionTitle: String { return self._s[301]! } - public var VoiceChat_EndConfirmationTitle: String { return self._s[302]! } - public var VoiceChat_TapToAddPhoto: String { return self._s[303]! } - public var ChatList_UnhideAction: String { return self._s[305]! } - public var PasscodeSettings_6DigitCode: String { return self._s[306]! } - public var CallFeedback_AddComment: String { return self._s[307]! } - public var LoginPassword_PasswordHelp: String { return self._s[308]! } - public var Call_Flip: String { return self._s[309]! } - public var Weekday_ShortWednesday: String { return self._s[311]! } - public var VoiceOver_Chat_PollFinalResults: String { return self._s[312]! } - public var ScheduleVoiceChat_Title: String { return self._s[313]! } - public var PeerInfo_ButtonAddMember: String { return self._s[314]! } - public var Call_Decline: String { return self._s[316]! } - public var VoiceChat_InviteMemberToGroupFirstAdd: String { return self._s[317]! } - public var Join_ChannelsTooMuch: String { return self._s[319]! } + public var WebSearch_RecentSectionTitle: String { return self._s[300]! } + public var VoiceChat_EndConfirmationTitle: String { return self._s[301]! } + public var VoiceChat_TapToAddPhoto: String { return self._s[302]! } + public var ChatList_UnhideAction: String { return self._s[304]! } + public var PasscodeSettings_6DigitCode: String { return self._s[305]! } + public var CallFeedback_AddComment: String { return self._s[306]! } + public var LoginPassword_PasswordHelp: String { return self._s[307]! } + public var Call_Flip: String { return self._s[308]! } + public var Weekday_ShortWednesday: String { return self._s[310]! } + public var VoiceOver_Chat_PollFinalResults: String { return self._s[311]! } + public var ScheduleVoiceChat_Title: String { return self._s[312]! } + public var PeerInfo_ButtonAddMember: String { return self._s[313]! } + public var Call_Decline: String { return self._s[315]! } + public var VoiceChat_InviteMemberToGroupFirstAdd: String { return self._s[316]! } + public var Join_ChannelsTooMuch: String { return self._s[318]! } public func PUSH_CHANNEL_MESSAGE_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[320]!, self._r[320]!, [_1]) + return formatWithArgumentRanges(self._s[319]!, self._r[319]!, [_1]) } - public var Passport_Identity_Selfie: String { return self._s[321]! } - public var Privacy_ContactsTitle: String { return self._s[322]! } - public var GroupInfo_InviteLink_Title: String { return self._s[324]! } - public var TwoFactorSetup_Password_PlaceholderPassword: String { return self._s[325]! } + public var Passport_Identity_Selfie: String { return self._s[320]! } + public var Privacy_ContactsTitle: String { return self._s[321]! } + public var GroupInfo_InviteLink_Title: String { return self._s[323]! } + public var TwoFactorSetup_Password_PlaceholderPassword: String { return self._s[324]! } public func Channel_AdminLog_UpdatedParticipantVolume(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[326]!, self._r[326]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[325]!, self._r[325]!, [_1, _2, _3]) } - public var Conversation_OpenFile: String { return self._s[328]! } - public var Map_SetThisPlace: String { return self._s[329]! } - public var Channel_Info_Management: String { return self._s[330]! } - public var Passport_Language_hr: String { return self._s[331]! } - public var VoiceChat_Title: String { return self._s[332]! } - public var EditTheme_Edit_Preview_IncomingText: String { return self._s[336]! } - public var VoiceChat_EditBioSave: String { return self._s[337]! } - public var OpenFile_Proceed: String { return self._s[338]! } - public var Conversation_SecretChatContextBotAlert: String { return self._s[340]! } - public var GroupInfo_Permissions_SlowmodeValue_Off: String { return self._s[341]! } - public var Privacy_Calls_P2PContacts: String { return self._s[342]! } - public var Appearance_PickAccentColor: String { return self._s[343]! } - public var MediaPicker_TapToUngroupDescription: String { return self._s[344]! } - public var Localization_EnglishLanguageName: String { return self._s[345]! } - public var Stickers_SuggestStickers: String { return self._s[346]! } - public var Passport_Language_ko: String { return self._s[347]! } - public var Settings_ProxyDisabled: String { return self._s[348]! } - public var PrivacySettings_PasscodeOff: String { return self._s[349]! } - public var Undo_LeftChannel: String { return self._s[350]! } - public var Appearance_AutoNightThemeDisabled: String { return self._s[351]! } - public var TextFormat_Bold: String { return self._s[352]! } - public var Login_InfoTitle: String { return self._s[353]! } - public var Channel_BanUser_PermissionSendPolls: String { return self._s[354]! } - public var Settings_AddAnotherAccount: String { return self._s[355]! } - public var GroupPermission_NewTitle: String { return self._s[356]! } - public var Login_SelectCountry_Title: String { return self._s[357]! } - public var Cache_ServiceFiles: String { return self._s[358]! } + public var Conversation_OpenFile: String { return self._s[327]! } + public var Map_SetThisPlace: String { return self._s[328]! } + public var Channel_Info_Management: String { return self._s[329]! } + public var Passport_Language_hr: String { return self._s[330]! } + public var VoiceChat_Title: String { return self._s[331]! } + public var EditTheme_Edit_Preview_IncomingText: String { return self._s[335]! } + public var VoiceChat_EditBioSave: String { return self._s[336]! } + public var OpenFile_Proceed: String { return self._s[337]! } + public var Conversation_SecretChatContextBotAlert: String { return self._s[339]! } + public var GroupInfo_Permissions_SlowmodeValue_Off: String { return self._s[340]! } + public var Privacy_Calls_P2PContacts: String { return self._s[341]! } + public var Appearance_PickAccentColor: String { return self._s[342]! } + public var MediaPicker_TapToUngroupDescription: String { return self._s[343]! } + public var Localization_EnglishLanguageName: String { return self._s[344]! } + public var Stickers_SuggestStickers: String { return self._s[345]! } + public var Passport_Language_ko: String { return self._s[346]! } + public var Settings_ProxyDisabled: String { return self._s[347]! } + public var PrivacySettings_PasscodeOff: String { return self._s[348]! } + public var Undo_LeftChannel: String { return self._s[349]! } + public var Appearance_AutoNightThemeDisabled: String { return self._s[350]! } + public var TextFormat_Bold: String { return self._s[351]! } + public var Login_InfoTitle: String { return self._s[352]! } + public var Channel_BanUser_PermissionSendPolls: String { return self._s[353]! } + public var Settings_AddAnotherAccount: String { return self._s[354]! } + public var GroupPermission_NewTitle: String { return self._s[355]! } + public var Login_SelectCountry_Title: String { return self._s[356]! } + public var Cache_ServiceFiles: String { return self._s[357]! } public func AutoremoveSetup_TimerValueAfter(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[359]!, self._r[359]!, [_0]) + return formatWithArgumentRanges(self._s[358]!, self._r[358]!, [_0]) } - public var Passport_Language_nl: String { return self._s[360]! } - public var Contacts_TopSection: String { return self._s[361]! } - public var Passport_Identity_DateOfBirthPlaceholder: String { return self._s[362]! } - public var VoiceChat_StatusInvited: String { return self._s[364]! } - public var Conversation_ContextMenuReport: String { return self._s[365]! } + public var Passport_Language_nl: String { return self._s[359]! } + public var Contacts_TopSection: String { return self._s[360]! } + public var Passport_Identity_DateOfBirthPlaceholder: String { return self._s[361]! } + public var VoiceChat_StatusInvited: String { return self._s[363]! } + public var Conversation_ContextMenuReport: String { return self._s[364]! } public func Login_BannedPhoneBody(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[366]!, self._r[366]!, [_0]) + return formatWithArgumentRanges(self._s[365]!, self._r[365]!, [_0]) } - public var Conversation_Search: String { return self._s[367]! } - public var Group_Setup_HistoryVisibleHelp: String { return self._s[369]! } - public var ReportPeer_AlertSuccess: String { return self._s[371]! } - public var AutoNightTheme_Title: String { return self._s[373]! } + public var Conversation_Search: String { return self._s[366]! } + public var Group_Setup_HistoryVisibleHelp: String { return self._s[368]! } + public var ReportPeer_AlertSuccess: String { return self._s[370]! } + public var AutoNightTheme_Title: String { return self._s[372]! } public func Notification_PinnedTextMessage(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[375]!, self._r[375]!, [_0, _1]) + return formatWithArgumentRanges(self._s[374]!, self._r[374]!, [_0, _1]) } public func Conversation_OpenBotLinkText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[376]!, self._r[376]!, [_0]) + return formatWithArgumentRanges(self._s[375]!, self._r[375]!, [_0]) } - public var Conversation_ShareBotContactConfirmation: String { return self._s[377]! } - public var TwoStepAuth_RecoveryCode: String { return self._s[378]! } - public var GroupInfo_Permissions_BroadcastTitle: String { return self._s[379]! } - public var SocksProxySetup_ConnectAndSave: String { return self._s[380]! } + public var Conversation_ShareBotContactConfirmation: String { return self._s[376]! } + public var TwoStepAuth_RecoveryCode: String { return self._s[377]! } + public var GroupInfo_Permissions_BroadcastTitle: String { return self._s[378]! } + public var SocksProxySetup_ConnectAndSave: String { return self._s[379]! } public func MESSAGE_INVOICE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[381]!, self._r[381]!, [_1, _2]) + return formatWithArgumentRanges(self._s[380]!, self._r[380]!, [_1, _2]) } public func Channel_AdminLog_MessageChangedGroupUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[382]!, self._r[382]!, [_0]) + return formatWithArgumentRanges(self._s[381]!, self._r[381]!, [_0]) } public func BroadcastGroups_LimitAlert_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[383]!, self._r[383]!, [_0]) + return formatWithArgumentRanges(self._s[382]!, self._r[382]!, [_0]) } - public var Replies_BlockAndDeleteRepliesActionTitle: String { return self._s[385]! } + public var Replies_BlockAndDeleteRepliesActionTitle: String { return self._s[384]! } public func Notification_GroupInviter(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[386]!, self._r[386]!, [_0]) + return formatWithArgumentRanges(self._s[385]!, self._r[385]!, [_0]) } - public var VoiceChat_CopyInviteLink: String { return self._s[387]! } - public var Conversation_InfoGroup: String { return self._s[388]! } + public var VoiceChat_CopyInviteLink: String { return self._s[386]! } + public var Conversation_InfoGroup: String { return self._s[387]! } public func Map_AccurateTo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[390]!, self._r[390]!, [_0]) + return formatWithArgumentRanges(self._s[389]!, self._r[389]!, [_0]) } - public var Conversation_ChatBackground: String { return self._s[391]! } - public var PhotoEditor_Set: String { return self._s[392]! } + public var Conversation_ChatBackground: String { return self._s[390]! } + public var PhotoEditor_Set: String { return self._s[391]! } public func Channel_Management_PromotedBy(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[394]!, self._r[394]!, [_0]) + return formatWithArgumentRanges(self._s[393]!, self._r[393]!, [_0]) } - public var IntentsSettings_SuggestedChatsContacts: String { return self._s[395]! } - public var Passport_Phone_Title: String { return self._s[397]! } - public var Conversation_EditingMessageMediaChange: String { return self._s[398]! } - public var Channel_LinkItem: String { return self._s[399]! } - public var VoiceChat_EndConfirmationText: String { return self._s[400]! } + public var IntentsSettings_SuggestedChatsContacts: String { return self._s[394]! } + public var Passport_Phone_Title: String { return self._s[396]! } + public var Conversation_EditingMessageMediaChange: String { return self._s[397]! } + public var Channel_LinkItem: String { return self._s[398]! } + public var VoiceChat_EndConfirmationText: String { return self._s[399]! } public func PUSH_CHAT_DELETE_MEMBER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[401]!, self._r[401]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[400]!, self._r[400]!, [_1, _2, _3]) } - public var Conversation_DeleteManyMessages: String { return self._s[403]! } - public var Notifications_Badge_IncludeMutedChats: String { return self._s[404]! } - public var Channel_AddUserLeftError: String { return self._s[406]! } - public var AuthSessions_AddedDeviceTitle: String { return self._s[408]! } - public var Privacy_Calls_NeverAllow_Placeholder: String { return self._s[409]! } - public var Settings_ProxyConnecting: String { return self._s[410]! } - public var Theme_Colors_Accent: String { return self._s[412]! } - public var Theme_Colors_ColorWallpaperWarning: String { return self._s[413]! } + public var Conversation_DeleteManyMessages: String { return self._s[402]! } + public var Notifications_Badge_IncludeMutedChats: String { return self._s[403]! } + public var Channel_AddUserLeftError: String { return self._s[405]! } + public var AuthSessions_AddedDeviceTitle: String { return self._s[407]! } + public var Privacy_Calls_NeverAllow_Placeholder: String { return self._s[408]! } + public var Settings_ProxyConnecting: String { return self._s[409]! } + public var Theme_Colors_Accent: String { return self._s[411]! } + public var Theme_Colors_ColorWallpaperWarning: String { return self._s[412]! } public func PUSH_PHONE_CALL_MISSED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[415]!, self._r[415]!, [_1]) + return formatWithArgumentRanges(self._s[414]!, self._r[414]!, [_1]) } - public var Passport_Language_lo: String { return self._s[416]! } + public var Passport_Language_lo: String { return self._s[415]! } public func Watch_Time_ShortWeekdayAt(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[418]!, self._r[418]!, [_1, _2]) + return formatWithArgumentRanges(self._s[417]!, self._r[417]!, [_1, _2]) } - public var Permissions_NotificationsText_v0: String { return self._s[419]! } - public var BroadcastGroups_LimitAlert_Title: String { return self._s[420]! } - public var ChatList_Context_RemoveFromRecents: String { return self._s[421]! } - public var Watch_GroupInfo_Title: String { return self._s[422]! } - public var Settings_AddDevice: String { return self._s[424]! } - public var WallpaperPreview_SwipeColorsTopText: String { return self._s[425]! } + public var Permissions_NotificationsText_v0: String { return self._s[418]! } + public var BroadcastGroups_LimitAlert_Title: String { return self._s[419]! } + public var ChatList_Context_RemoveFromRecents: String { return self._s[420]! } + public var Watch_GroupInfo_Title: String { return self._s[421]! } + public var Settings_AddDevice: String { return self._s[423]! } + public var WallpaperPreview_SwipeColorsTopText: String { return self._s[424]! } public func PUSH_CHANNEL_ALBUM(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[426]!, self._r[426]!, [_1]) + return formatWithArgumentRanges(self._s[425]!, self._r[425]!, [_1]) } - public var Conversation_AutoremoveActionEdit: String { return self._s[427]! } - public var TwoStepAuth_Disable: String { return self._s[429]! } + public var Conversation_AutoremoveActionEdit: String { return self._s[426]! } + public var TwoStepAuth_Disable: String { return self._s[428]! } public func Conversation_AddNameToContacts(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[430]!, self._r[430]!, [_0]) + return formatWithArgumentRanges(self._s[429]!, self._r[429]!, [_0]) } public func Time_PreciseDate_m10(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[431]!, self._r[431]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[430]!, self._r[430]!, [_1, _2, _3]) } public func Login_WillSendSms(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[432]!, self._r[432]!, [_0]) + return formatWithArgumentRanges(self._s[431]!, self._r[431]!, [_0]) } - public var Channel_AdminLog_BanReadMessages: String { return self._s[433]! } - public var Undo_ChatDeleted: String { return self._s[434]! } - public var ContactInfo_URLLabelHomepage: String { return self._s[435]! } + public var Channel_AdminLog_BanReadMessages: String { return self._s[432]! } + public var Undo_ChatDeleted: String { return self._s[433]! } + public var ContactInfo_URLLabelHomepage: String { return self._s[434]! } public func PUSH_CHAT_MESSAGE_STICKER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[436]!, self._r[436]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[435]!, self._r[435]!, [_1, _2, _3]) } - public var FastTwoStepSetup_EmailHelp: String { return self._s[437]! } - public var Contacts_SelectAll: String { return self._s[438]! } - public var Privacy_ContactsReset: String { return self._s[439]! } - public var AttachmentMenu_File: String { return self._s[441]! } - public var PasscodeSettings_EncryptData: String { return self._s[442]! } - public var EditTheme_ThemeTemplateAlertText: String { return self._s[443]! } + public var FastTwoStepSetup_EmailHelp: String { return self._s[436]! } + public var Contacts_SelectAll: String { return self._s[437]! } + public var Privacy_ContactsReset: String { return self._s[438]! } + public var AttachmentMenu_File: String { return self._s[440]! } + public var PasscodeSettings_EncryptData: String { return self._s[441]! } + public var EditTheme_ThemeTemplateAlertText: String { return self._s[442]! } public func Privacy_GroupsAndChannels_InviteToChannelError(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[445]!, self._r[445]!, [_0, _1]) + return formatWithArgumentRanges(self._s[444]!, self._r[444]!, [_0, _1]) } public func Profile_CreateEncryptedChatOutdatedError(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[446]!, self._r[446]!, [_0, _1]) + return formatWithArgumentRanges(self._s[445]!, self._r[445]!, [_0, _1]) } - public var PhotoEditor_ShadowsTint: String { return self._s[448]! } - public var GroupInfo_ChatAdmins: String { return self._s[449]! } - public var ArchivedChats_IntroTitle2: String { return self._s[450]! } - public var Cache_LowDiskSpaceText: String { return self._s[451]! } - public var CreatePoll_Anonymous: String { return self._s[452]! } - public var Report_AdditionalDetailsText: String { return self._s[453]! } - public var Checkout_PaymentMethod_New: String { return self._s[454]! } - public var Invitation_JoinGroup: String { return self._s[455]! } + public var PhotoEditor_ShadowsTint: String { return self._s[447]! } + public var GroupInfo_ChatAdmins: String { return self._s[448]! } + public var ArchivedChats_IntroTitle2: String { return self._s[449]! } + public var Cache_LowDiskSpaceText: String { return self._s[450]! } + public var CreatePoll_Anonymous: String { return self._s[451]! } + public var Report_AdditionalDetailsText: String { return self._s[452]! } + public var Checkout_PaymentMethod_New: String { return self._s[453]! } + public var Invitation_JoinGroup: String { return self._s[454]! } public func Time_MonthOfYear_m4(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[458]!, self._r[458]!, [_0]) + return formatWithArgumentRanges(self._s[457]!, self._r[457]!, [_0]) } - public var CheckoutInfo_SaveInfoHelp: String { return self._s[459]! } - public var Notification_Reply: String { return self._s[461]! } + public var CheckoutInfo_SaveInfoHelp: String { return self._s[458]! } + public var Notification_Reply: String { return self._s[460]! } public func Login_PhoneBannedEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[462]!, self._r[462]!, [_0]) + return formatWithArgumentRanges(self._s[461]!, self._r[461]!, [_0]) } - public var Login_PhoneTitle: String { return self._s[463]! } - public var VoiceChat_UnmuteHelp: String { return self._s[464]! } - public var VoiceOver_Media_PlaybackRateNormal: String { return self._s[465]! } + public var Login_PhoneTitle: String { return self._s[462]! } + public var VoiceChat_UnmuteHelp: String { return self._s[463]! } + public var VoiceOver_Media_PlaybackRateNormal: String { return self._s[464]! } public func PUSH_CHAT_MESSAGE_INVOICE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[466]!, self._r[466]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[465]!, self._r[465]!, [_1, _2, _3]) } - public var Appearance_TextSize_Title: String { return self._s[467]! } - public var NetworkUsageSettings_MediaImageDataSection: String { return self._s[469]! } - public var VoiceOver_Navigation_Compose: String { return self._s[470]! } + public var Appearance_TextSize_Title: String { return self._s[466]! } + public var NetworkUsageSettings_MediaImageDataSection: String { return self._s[468]! } + public var VoiceOver_Navigation_Compose: String { return self._s[469]! } public func Channel_AdminLog_MessageChangedAutoremoveTimeoutRemove(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[471]!, self._r[471]!, [_1]) + return formatWithArgumentRanges(self._s[470]!, self._r[470]!, [_1]) } - public var Passport_InfoText: String { return self._s[472]! } - public var ApplyLanguage_ApplyLanguageAction: String { return self._s[473]! } - public var MessagePoll_LabelClosed: String { return self._s[475]! } - public var AttachmentMenu_SendAsFiles: String { return self._s[476]! } - public var KeyCommand_FocusOnInputField: String { return self._s[477]! } - public var Conversation_ContextViewThread: String { return self._s[478]! } - public var ChatImport_SelectionErrorGroupGeneric: String { return self._s[479]! } - public var Privacy_SecretChatsLinkPreviews: String { return self._s[481]! } - public var Permissions_PeopleNearbyAllow_v0: String { return self._s[482]! } - public var Conversation_ContextMenuMention: String { return self._s[484]! } - public var CreatePoll_QuizInfo: String { return self._s[485]! } - public var Appearance_ThemePreview_ChatList_2_Name: String { return self._s[486]! } - public var Username_LinkCopied: String { return self._s[487]! } - public var IntentsSettings_SuggestedAndSpotlightChatsInfo: String { return self._s[488]! } - public var TwoStepAuth_ChangePassword: String { return self._s[489]! } - public var Watch_Suggestion_Thanks: String { return self._s[490]! } - public var Channel_TitleInfo: String { return self._s[491]! } - public var ChatList_ChatTypesSection: String { return self._s[492]! } + public var Passport_InfoText: String { return self._s[471]! } + public var ApplyLanguage_ApplyLanguageAction: String { return self._s[472]! } + public var MessagePoll_LabelClosed: String { return self._s[474]! } + public var AttachmentMenu_SendAsFiles: String { return self._s[475]! } + public var KeyCommand_FocusOnInputField: String { return self._s[476]! } + public var Conversation_ContextViewThread: String { return self._s[477]! } + public var ChatImport_SelectionErrorGroupGeneric: String { return self._s[478]! } + public var Privacy_SecretChatsLinkPreviews: String { return self._s[480]! } + public var Permissions_PeopleNearbyAllow_v0: String { return self._s[481]! } + public var Conversation_ContextMenuMention: String { return self._s[483]! } + public var CreatePoll_QuizInfo: String { return self._s[484]! } + public var Appearance_ThemePreview_ChatList_2_Name: String { return self._s[485]! } + public var Username_LinkCopied: String { return self._s[486]! } + public var IntentsSettings_SuggestedAndSpotlightChatsInfo: String { return self._s[487]! } + public var TwoStepAuth_ChangePassword: String { return self._s[488]! } + public var Watch_Suggestion_Thanks: String { return self._s[489]! } + public var Channel_TitleInfo: String { return self._s[490]! } + public var ChatList_ChatTypesSection: String { return self._s[491]! } public func Watch_LastSeen_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[493]!, self._r[493]!, [_0]) + return formatWithArgumentRanges(self._s[492]!, self._r[492]!, [_0]) } public func Channel_AdminLog_PollStopped(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[494]!, self._r[494]!, [_0]) + return formatWithArgumentRanges(self._s[493]!, self._r[493]!, [_0]) } public func Channel_AdminLog_MessageRemovedAdminNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[495]!, self._r[495]!, [_1, _2]) + return formatWithArgumentRanges(self._s[494]!, self._r[494]!, [_1, _2]) } - public var AuthSessions_AddDevice_InvalidQRCode: String { return self._s[496]! } + public var AuthSessions_AddDevice_InvalidQRCode: String { return self._s[495]! } public func Call_MicrophoneOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[497]!, self._r[497]!, [_0]) + return formatWithArgumentRanges(self._s[496]!, self._r[496]!, [_0]) } - public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[498]! } - public var Profile_MessageLifetimeForever: String { return self._s[499]! } - public var ArchivedChats_IntroText1: String { return self._s[500]! } - public var Notifications_ChannelNotificationsPreview: String { return self._s[501]! } - public var Map_PullUpForPlaces: String { return self._s[503]! } - public var UserInfo_TelegramCall: String { return self._s[504]! } - public var Conversation_ShareMyContactInfo: String { return self._s[505]! } - public var ChatList_Tabs_All: String { return self._s[506]! } - public var Notification_PassportValueEmail: String { return self._s[507]! } - public var Notification_VideoCallIncoming: String { return self._s[508]! } - public var SettingsSearch_Synonyms_Appearance_AutoNightTheme: String { return self._s[509]! } - public var Channel_Username_InvalidTaken: String { return self._s[510]! } - public var GroupPermission_EditingDisabled: String { return self._s[511]! } - public var InviteLink_PeopleJoinedShortNone: String { return self._s[512]! } - public var ChatContextMenu_TextSelectionTip: String { return self._s[513]! } - public var Passport_Language_pl: String { return self._s[515]! } - public var Call_Accept: String { return self._s[516]! } - public var ChatListFolder_NameSectionHeader: String { return self._s[517]! } - public var InviteLink_ExpiredLinkStatus: String { return self._s[518]! } + public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[497]! } + public var Profile_MessageLifetimeForever: String { return self._s[498]! } + public var ArchivedChats_IntroText1: String { return self._s[499]! } + public var Notifications_ChannelNotificationsPreview: String { return self._s[500]! } + public var Map_PullUpForPlaces: String { return self._s[502]! } + public var UserInfo_TelegramCall: String { return self._s[503]! } + public var Conversation_ShareMyContactInfo: String { return self._s[504]! } + public var ChatList_Tabs_All: String { return self._s[505]! } + public var Notification_PassportValueEmail: String { return self._s[506]! } + public var Notification_VideoCallIncoming: String { return self._s[507]! } + public var SettingsSearch_Synonyms_Appearance_AutoNightTheme: String { return self._s[508]! } + public var Channel_Username_InvalidTaken: String { return self._s[509]! } + public var GroupPermission_EditingDisabled: String { return self._s[510]! } + public var InviteLink_PeopleJoinedShortNone: String { return self._s[511]! } + public var ChatContextMenu_TextSelectionTip: String { return self._s[512]! } + public var Passport_Language_pl: String { return self._s[514]! } + public var Call_Accept: String { return self._s[515]! } + public var ChatListFolder_NameSectionHeader: String { return self._s[516]! } + public var InviteLink_ExpiredLinkStatus: String { return self._s[517]! } public func Passport_Identity_NativeNameTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[519]!, self._r[519]!, [_0]) + return formatWithArgumentRanges(self._s[518]!, self._r[518]!, [_0]) } - public var ClearCache_Forever: String { return self._s[520]! } - public var VoiceChat_TapToEditTitle: String { return self._s[522]! } + public var ClearCache_Forever: String { return self._s[519]! } + public var VoiceChat_TapToEditTitle: String { return self._s[521]! } public func ChannelInfo_AddParticipantConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[523]!, self._r[523]!, [_0]) + return formatWithArgumentRanges(self._s[522]!, self._r[522]!, [_0]) } - public var Group_EditAdmin_RankAdminPlaceholder: String { return self._s[524]! } - public var Calls_SubmitRating: String { return self._s[525]! } - public var Location_LiveLocationRequired_ShareLocation: String { return self._s[526]! } + public var Group_EditAdmin_RankAdminPlaceholder: String { return self._s[523]! } + public var Calls_SubmitRating: String { return self._s[524]! } + public var Location_LiveLocationRequired_ShareLocation: String { return self._s[525]! } public func ChatList_AddedToFolderTooltip(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[527]!, self._r[527]!, [_1, _2]) + return formatWithArgumentRanges(self._s[526]!, self._r[526]!, [_1, _2]) } - public var IntentsSettings_MainAccountInfo: String { return self._s[528]! } - public var Map_Hybrid: String { return self._s[530]! } - public var ChatList_Context_Archive: String { return self._s[531]! } - public var Message_PinnedDocumentMessage: String { return self._s[532]! } - public var State_ConnectingToProxyInfo: String { return self._s[533]! } - public var Passport_Identity_NativeNameGenericTitle: String { return self._s[535]! } - public var Settings_AppLanguage: String { return self._s[536]! } + public var IntentsSettings_MainAccountInfo: String { return self._s[527]! } + public var Map_Hybrid: String { return self._s[529]! } + public var ChatList_Context_Archive: String { return self._s[530]! } + public var Message_PinnedDocumentMessage: String { return self._s[531]! } + public var State_ConnectingToProxyInfo: String { return self._s[532]! } + public var Passport_Identity_NativeNameGenericTitle: String { return self._s[534]! } + public var Settings_AppLanguage: String { return self._s[535]! } public func Checkout_SavePasswordTimeoutAndFaceId(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[537]!, self._r[537]!, [_0]) + return formatWithArgumentRanges(self._s[536]!, self._r[536]!, [_0]) } - public var Notifications_PermissionsEnable: String { return self._s[539]! } - public var CheckoutInfo_ShippingInfoAddress1Placeholder: String { return self._s[540]! } + public var Notifications_PermissionsEnable: String { return self._s[538]! } + public var CheckoutInfo_ShippingInfoAddress1Placeholder: String { return self._s[539]! } public func UserInfo_BlockActionTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[541]!, self._r[541]!, [_0]) + return formatWithArgumentRanges(self._s[540]!, self._r[540]!, [_0]) } public func AuthSessions_Message(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[542]!, self._r[542]!, [_0]) + return formatWithArgumentRanges(self._s[541]!, self._r[541]!, [_0]) } - public var NotificationsSound_Aurora: String { return self._s[545]! } - public var ScheduledMessages_ClearAll: String { return self._s[548]! } + public var NotificationsSound_Aurora: String { return self._s[544]! } + public var ScheduledMessages_ClearAll: String { return self._s[547]! } public func CancelResetAccount_TextSMS(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[549]!, self._r[549]!, [_0]) + return formatWithArgumentRanges(self._s[548]!, self._r[548]!, [_0]) } - public var Settings_BlockedUsers: String { return self._s[551]! } - public var Checkout_TipItem: String { return self._s[552]! } - public var VoiceOver_Keyboard: String { return self._s[554]! } + public var Settings_BlockedUsers: String { return self._s[550]! } + public var Checkout_TipItem: String { return self._s[551]! } + public var VoiceOver_Keyboard: String { return self._s[553]! } public func UserInfo_StartSecretChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[555]!, self._r[555]!, [_0]) + return formatWithArgumentRanges(self._s[554]!, self._r[554]!, [_0]) } - public var Passport_Language_hu: String { return self._s[556]! } + public var Passport_Language_hu: String { return self._s[555]! } public func Conversation_ScheduleMessage_SendTomorrow(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[557]!, self._r[557]!, [_0]) + return formatWithArgumentRanges(self._s[556]!, self._r[556]!, [_0]) } - public var StickerPack_Share: String { return self._s[558]! } - public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[559]! } + public var StickerPack_Share: String { return self._s[557]! } + public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[558]! } public func ForwardedAuthors2(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[560]!, self._r[560]!, [_0, _1]) + return formatWithArgumentRanges(self._s[559]!, self._r[559]!, [_0, _1]) } - public var Privacy_ContactsResetConfirmation: String { return self._s[561]! } - public var VoiceChat_EditTitle: String { return self._s[562]! } - public var AppleWatch_ReplyPresets: String { return self._s[563]! } - public var Bot_GenericBotStatus: String { return self._s[564]! } - public var Appearance_ShareThemeColor: String { return self._s[565]! } - public var AuthSessions_AddDevice_UrlLoginHint: String { return self._s[567]! } - public var ReportGroupLocation_Title: String { return self._s[568]! } + public var Privacy_ContactsResetConfirmation: String { return self._s[560]! } + public var VoiceChat_EditTitle: String { return self._s[561]! } + public var AppleWatch_ReplyPresets: String { return self._s[562]! } + public var Bot_GenericBotStatus: String { return self._s[563]! } + public var Appearance_ShareThemeColor: String { return self._s[564]! } + public var AuthSessions_AddDevice_UrlLoginHint: String { return self._s[566]! } + public var ReportGroupLocation_Title: String { return self._s[567]! } public func Conversation_AutoremoveTimerSetUserYou(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[569]!, self._r[569]!, [_1]) + return formatWithArgumentRanges(self._s[568]!, self._r[568]!, [_1]) } public func Activity_RemindAboutUser(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[570]!, self._r[570]!, [_0]) + return formatWithArgumentRanges(self._s[569]!, self._r[569]!, [_0]) } - public var Profile_CreateEncryptedChatError: String { return self._s[571]! } - public var Channel_EditAdmin_TransferOwnership: String { return self._s[572]! } - public var Wallpaper_ErrorNotFound: String { return self._s[573]! } - public var Bot_GenericSupportStatus: String { return self._s[574]! } - public var Activity_UploadingPhoto: String { return self._s[576]! } - public var Intents_ErrorLockedTitle: String { return self._s[577]! } - public var Watch_UserInfo_Title: String { return self._s[579]! } - public var SocksProxySetup_ProxyTelegram: String { return self._s[580]! } - public var Appearance_ThemeDay: String { return self._s[581]! } + public var Profile_CreateEncryptedChatError: String { return self._s[570]! } + public var Channel_EditAdmin_TransferOwnership: String { return self._s[571]! } + public var Wallpaper_ErrorNotFound: String { return self._s[572]! } + public var Bot_GenericSupportStatus: String { return self._s[573]! } + public var Activity_UploadingPhoto: String { return self._s[575]! } + public var Intents_ErrorLockedTitle: String { return self._s[576]! } + public var Watch_UserInfo_Title: String { return self._s[578]! } + public var SocksProxySetup_ProxyTelegram: String { return self._s[579]! } + public var Appearance_ThemeDay: String { return self._s[580]! } public func ApplyLanguage_ChangeLanguageOfficialText(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[582]!, self._r[582]!, [_1]) + return formatWithArgumentRanges(self._s[581]!, self._r[581]!, [_1]) } public func FileSize_B(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[583]!, self._r[583]!, [_0]) + return formatWithArgumentRanges(self._s[582]!, self._r[582]!, [_0]) } - public var InviteLink_AdditionalLinks: String { return self._s[584]! } - public var Passport_Title: String { return self._s[588]! } + public var InviteLink_AdditionalLinks: String { return self._s[583]! } + public var Passport_Title: String { return self._s[587]! } public func Time_PreciseDate_m3(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[590]!, self._r[590]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[589]!, self._r[589]!, [_1, _2, _3]) } - public var CheckoutInfo_ShippingInfoCountryPlaceholder: String { return self._s[591]! } - public var SocksProxySetup_ShareLink: String { return self._s[594]! } - public var AuthSessions_OtherDevices: String { return self._s[595]! } - public var IntentsSettings_SuggestedChatsGroups: String { return self._s[596]! } - public var Watch_MessageView_Reply: String { return self._s[597]! } - public var Camera_FlashOn: String { return self._s[599]! } + public var CheckoutInfo_ShippingInfoCountryPlaceholder: String { return self._s[590]! } + public var SocksProxySetup_ShareLink: String { return self._s[593]! } + public var AuthSessions_OtherDevices: String { return self._s[594]! } + public var IntentsSettings_SuggestedChatsGroups: String { return self._s[595]! } + public var Watch_MessageView_Reply: String { return self._s[596]! } + public var Camera_FlashOn: String { return self._s[598]! } public func PUSH_MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[600]!, self._r[600]!, [_1, _2]) + return formatWithArgumentRanges(self._s[599]!, self._r[599]!, [_1, _2]) } - public var Conversation_ContextMenuBlock: String { return self._s[601]! } - public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[603]! } - public var Privacy_Calls_NeverAllow: String { return self._s[604]! } - public var BroadcastGroups_Cancel: String { return self._s[605]! } - public var SharedMedia_CategoryLinks: String { return self._s[606]! } - public var Conversation_PinMessageAlertGroup: String { return self._s[609]! } - public var Passport_Identity_ScansHelp: String { return self._s[611]! } - public var ShareMenu_CopyShareLink: String { return self._s[612]! } - public var StickerSettings_MaskContextInfo: String { return self._s[613]! } - public var InviteLink_Create_EditTitle: String { return self._s[614]! } - public var SocksProxySetup_ProxyStatusChecking: String { return self._s[615]! } - public var AutoDownloadSettings_AutodownloadPhotos: String { return self._s[618]! } - public var ChatImportActivity_Success: String { return self._s[620]! } - public var Checkout_ErrorPrecheckoutFailed: String { return self._s[621]! } - public var NotificationsSound_Popcorn: String { return self._s[622]! } - public var FeatureDisabled_Oops: String { return self._s[623]! } + public var Conversation_ContextMenuBlock: String { return self._s[600]! } + public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[602]! } + public var Privacy_Calls_NeverAllow: String { return self._s[603]! } + public var BroadcastGroups_Cancel: String { return self._s[604]! } + public var SharedMedia_CategoryLinks: String { return self._s[605]! } + public var Conversation_PinMessageAlertGroup: String { return self._s[608]! } + public var Passport_Identity_ScansHelp: String { return self._s[610]! } + public var ShareMenu_CopyShareLink: String { return self._s[611]! } + public var StickerSettings_MaskContextInfo: String { return self._s[612]! } + public var InviteLink_Create_EditTitle: String { return self._s[613]! } + public var SocksProxySetup_ProxyStatusChecking: String { return self._s[614]! } + public var AutoDownloadSettings_AutodownloadPhotos: String { return self._s[617]! } + public var ChatImportActivity_Success: String { return self._s[619]! } + public var Checkout_ErrorPrecheckoutFailed: String { return self._s[620]! } + public var NotificationsSound_Popcorn: String { return self._s[621]! } + public var FeatureDisabled_Oops: String { return self._s[622]! } public func Channel_AdminLog_MessageChangedChannelAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[624]!, self._r[624]!, [_0]) + return formatWithArgumentRanges(self._s[623]!, self._r[623]!, [_0]) } - public var Notification_PinnedMessage: String { return self._s[625]! } - public var Tour_Title4: String { return self._s[626]! } + public var Notification_PinnedMessage: String { return self._s[624]! } + public var Tour_Title4: String { return self._s[625]! } public func Notification_VoiceChatInvitationForYou(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[627]!, self._r[627]!, [_1]) + return formatWithArgumentRanges(self._s[626]!, self._r[626]!, [_1]) } - public var Watch_Suggestion_OK: String { return self._s[628]! } - public var Compose_TokenListPlaceholder: String { return self._s[629]! } - public var InviteLink_PermanentLink: String { return self._s[630]! } - public var EditTheme_Edit_TopInfo: String { return self._s[631]! } - public var Gif_NoGifsFound: String { return self._s[632]! } - public var Login_InvalidCountryCode: String { return self._s[633]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsExceptions: String { return self._s[634]! } - public var Call_VoiceOver_VideoCallMissed: String { return self._s[635]! } - public var VoiceChat_ChangeNameTitle: String { return self._s[637]! } + public var Watch_Suggestion_OK: String { return self._s[627]! } + public var Compose_TokenListPlaceholder: String { return self._s[628]! } + public var InviteLink_PermanentLink: String { return self._s[629]! } + public var EditTheme_Edit_TopInfo: String { return self._s[630]! } + public var Gif_NoGifsFound: String { return self._s[631]! } + public var Login_InvalidCountryCode: String { return self._s[632]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsExceptions: String { return self._s[633]! } + public var Call_VoiceOver_VideoCallMissed: String { return self._s[634]! } + public var VoiceChat_ChangeNameTitle: String { return self._s[636]! } public func PUSH_LOCKED_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[638]!, self._r[638]!, [_1]) + return formatWithArgumentRanges(self._s[637]!, self._r[637]!, [_1]) } - public var Profile_CreateNewContact: String { return self._s[639]! } - public var AutoDownloadSettings_DataUsageLow: String { return self._s[640]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsPreview: String { return self._s[641]! } - public var Group_Setup_TypePublic: String { return self._s[642]! } - public var Weekday_ShortSaturday: String { return self._s[643]! } + public var Profile_CreateNewContact: String { return self._s[638]! } + public var AutoDownloadSettings_DataUsageLow: String { return self._s[639]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsPreview: String { return self._s[640]! } + public var Group_Setup_TypePublic: String { return self._s[641]! } + public var Weekday_ShortSaturday: String { return self._s[642]! } public func Time_MonthOfYear_m12(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[644]!, self._r[644]!, [_0]) + return formatWithArgumentRanges(self._s[643]!, self._r[643]!, [_0]) } - public var LiveLocation_MenuStopAll: String { return self._s[645]! } + public var LiveLocation_MenuStopAll: String { return self._s[644]! } public func DialogList_EncryptedChatStartedIncoming(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[646]!, self._r[646]!, [_0]) + return formatWithArgumentRanges(self._s[645]!, self._r[645]!, [_0]) } - public var ChatListFolder_NamePlaceholder: String { return self._s[647]! } - public var Channel_OwnershipTransfer_ErrorPublicChannelsTooMuch: String { return self._s[648]! } + public var ChatListFolder_NamePlaceholder: String { return self._s[646]! } + public var Channel_OwnershipTransfer_ErrorPublicChannelsTooMuch: String { return self._s[647]! } public func PUSH_CHAT_MESSAGE_GAME(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[649]!, self._r[649]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[648]!, self._r[648]!, [_1, _2, _3]) } - public var VoiceChat_ChatFullAlertText: String { return self._s[650]! } - public var Chat_GenericPsaTooltip: String { return self._s[652]! } - public var ChannelInfo_CreateVoiceChat: String { return self._s[653]! } + public var VoiceChat_ChatFullAlertText: String { return self._s[649]! } + public var Chat_GenericPsaTooltip: String { return self._s[651]! } + public var ChannelInfo_CreateVoiceChat: String { return self._s[652]! } public func Message_ForwardedMessageShort(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[654]!, self._r[654]!, [_0]) + return formatWithArgumentRanges(self._s[653]!, self._r[653]!, [_0]) } - public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[655]! } - public var Login_PhoneAndCountryHelp: String { return self._s[656]! } - public var SaveIncomingPhotosSettings_From: String { return self._s[658]! } - public var Conversation_JumpToDate: String { return self._s[659]! } - public var AuthSessions_AddDevice: String { return self._s[660]! } - public var Settings_FAQ: String { return self._s[662]! } + public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[654]! } + public var Login_PhoneAndCountryHelp: String { return self._s[655]! } + public var SaveIncomingPhotosSettings_From: String { return self._s[657]! } + public var Conversation_JumpToDate: String { return self._s[658]! } + public var AuthSessions_AddDevice: String { return self._s[659]! } + public var Settings_FAQ: String { return self._s[661]! } public func ChatImport_CreateGroupAlertText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[663]!, self._r[663]!, [_0]) + return formatWithArgumentRanges(self._s[662]!, self._r[662]!, [_0]) } - public var Username_Title: String { return self._s[664]! } - public var DialogList_Read: String { return self._s[665]! } - public var Conversation_InstantPagePreview: String { return self._s[666]! } - public var Report_Succeed: String { return self._s[668]! } - public var Login_ResetAccountProtected_Title: String { return self._s[669]! } - public var CallFeedback_ReasonDistortedSpeech: String { return self._s[670]! } - public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[671]! } + public var Username_Title: String { return self._s[663]! } + public var DialogList_Read: String { return self._s[664]! } + public var Conversation_InstantPagePreview: String { return self._s[665]! } + public var Report_Succeed: String { return self._s[667]! } + public var Login_ResetAccountProtected_Title: String { return self._s[668]! } + public var CallFeedback_ReasonDistortedSpeech: String { return self._s[669]! } + public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[670]! } public func Channel_AdminLog_MessageRankUsername(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[672]!, self._r[672]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[671]!, self._r[671]!, [_1, _2, _3]) } - public var WallpaperPreview_PreviewBottomText: String { return self._s[674]! } - public var Privacy_SecretChatsTitle: String { return self._s[677]! } + public var WallpaperPreview_PreviewBottomText: String { return self._s[673]! } + public var Privacy_SecretChatsTitle: String { return self._s[676]! } public func Notification_PassportValuesSentMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[678]!, self._r[678]!, [_1, _2]) + return formatWithArgumentRanges(self._s[677]!, self._r[677]!, [_1, _2]) } - public var Checkout_NewCard_SaveInfoHelp: String { return self._s[679]! } - public var Conversation_ClousStorageInfo_Description4: String { return self._s[680]! } - public var PasscodeSettings_TurnPasscodeOn: String { return self._s[681]! } - public var Message_ReplyActionButtonShowReceipt: String { return self._s[682]! } + public var Checkout_NewCard_SaveInfoHelp: String { return self._s[678]! } + public var Conversation_ClousStorageInfo_Description4: String { return self._s[679]! } + public var PasscodeSettings_TurnPasscodeOn: String { return self._s[680]! } + public var Message_ReplyActionButtonShowReceipt: String { return self._s[681]! } public func PrivacyPolicy_AgeVerificationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[683]!, self._r[683]!, [_0]) + return formatWithArgumentRanges(self._s[682]!, self._r[682]!, [_0]) } - public var GroupInfo_DeleteAndExitConfirmation: String { return self._s[685]! } - public var TwoStepAuth_ConfirmationAbort: String { return self._s[686]! } - public var PrivacySettings_LastSeenEverybody: String { return self._s[687]! } - public var CallFeedback_ReasonDropped: String { return self._s[688]! } + public var GroupInfo_DeleteAndExitConfirmation: String { return self._s[684]! } + public var TwoStepAuth_ConfirmationAbort: String { return self._s[685]! } + public var PrivacySettings_LastSeenEverybody: String { return self._s[686]! } + public var CallFeedback_ReasonDropped: String { return self._s[687]! } public func ScheduledMessages_ScheduledDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[689]!, self._r[689]!, [_0]) + return formatWithArgumentRanges(self._s[688]!, self._r[688]!, [_0]) } - public var WebSearch_Images: String { return self._s[690]! } - public var Passport_Identity_Surname: String { return self._s[691]! } - public var Channel_Stickers_CreateYourOwn: String { return self._s[692]! } - public var TwoFactorSetup_Email_Title: String { return self._s[693]! } - public var Cache_ClearEmpty: String { return self._s[694]! } - public var AuthSessions_AddDeviceIntro_Action: String { return self._s[695]! } - public var Theme_Context_Apply: String { return self._s[696]! } - public var GroupInfo_Permissions_SearchPlaceholder: String { return self._s[697]! } - public var CallList_DeleteAllForEveryone: String { return self._s[698]! } + public var WebSearch_Images: String { return self._s[689]! } + public var Passport_Identity_Surname: String { return self._s[690]! } + public var Channel_Stickers_CreateYourOwn: String { return self._s[691]! } + public var TwoFactorSetup_Email_Title: String { return self._s[692]! } + public var Cache_ClearEmpty: String { return self._s[693]! } + public var AuthSessions_AddDeviceIntro_Action: String { return self._s[694]! } + public var Theme_Context_Apply: String { return self._s[695]! } + public var GroupInfo_Permissions_SearchPlaceholder: String { return self._s[696]! } + public var CallList_DeleteAllForEveryone: String { return self._s[697]! } public func BroadcastGroups_Success(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[699]!, self._r[699]!, [_0]) + return formatWithArgumentRanges(self._s[698]!, self._r[698]!, [_0]) } - public var AutoDownloadSettings_DocumentsTitle: String { return self._s[700]! } + public var AutoDownloadSettings_DocumentsTitle: String { return self._s[699]! } public func NetworkUsageSettings_CellularUsageSince(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[701]!, self._r[701]!, [_0]) + return formatWithArgumentRanges(self._s[700]!, self._r[700]!, [_0]) } - public var Call_StatusRinging: String { return self._s[702]! } + public var Call_StatusRinging: String { return self._s[701]! } public func Map_DistanceAway(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[703]!, self._r[703]!, [_0]) + return formatWithArgumentRanges(self._s[702]!, self._r[702]!, [_0]) } public func DialogList_SingleTypingSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[704]!, self._r[704]!, [_0]) + return formatWithArgumentRanges(self._s[703]!, self._r[703]!, [_0]) } - public var Cache_ClearNone: String { return self._s[705]! } - public var PrivacyPolicy_Accept: String { return self._s[706]! } - public var Contacts_PhoneNumber: String { return self._s[707]! } - public var Passport_Identity_OneOfTypePassport: String { return self._s[708]! } - public var PhotoEditor_HighlightsTint: String { return self._s[710]! } - public var AutoDownloadSettings_AutodownloadVideos: String { return self._s[711]! } - public var Checkout_PaymentMethod_Title: String { return self._s[714]! } - public var Month_GenAugust: String { return self._s[716]! } - public var DialogList_Draft: String { return self._s[717]! } - public var ChatList_EmptyChatListFilterText: String { return self._s[718]! } - public var PeopleNearby_Description: String { return self._s[719]! } - public var WallpaperPreview_SwipeColorsBottomText: String { return self._s[720]! } - public var VoiceChat_InviteLink_CopyListenerLink: String { return self._s[721]! } - public var VoiceChat_EditTitleRemoveSuccess: String { return self._s[722]! } - public var SettingsSearch_Synonyms_Privacy_Data_TopPeers: String { return self._s[724]! } - public var Watch_Message_ForwardedFrom: String { return self._s[725]! } - public var Notification_Mute1h: String { return self._s[726]! } - public var Appearance_ThemePreview_Chat_3_TextWithLink: String { return self._s[727]! } - public var SettingsSearch_Synonyms_Privacy_AuthSessions: String { return self._s[729]! } - public var Channel_Edit_LinkItem: String { return self._s[730]! } - public var Presence_online: String { return self._s[731]! } - public var AutoDownloadSettings_Title: String { return self._s[732]! } - public var Conversation_MessageDialogRetry: String { return self._s[733]! } - public var SettingsSearch_Synonyms_ChatSettings_OpenLinksIn: String { return self._s[735]! } - public var Channel_About_Placeholder: String { return self._s[737]! } - public var Passport_Language_sl: String { return self._s[738]! } - public var AppleWatch_Title: String { return self._s[740]! } - public var RepliesChat_DescriptionText: String { return self._s[742]! } - public var Stats_Message_PrivateShares: String { return self._s[743]! } - public var Settings_ViewPhoto: String { return self._s[744]! } - public var Conversation_ForwardTooltip_SavedMessages_One: String { return self._s[745]! } - public var ChatList_DeleteSavedMessagesConfirmation: String { return self._s[746]! } - public var Cache_ClearProgress: String { return self._s[747]! } - public var Cache_Music: String { return self._s[748]! } - public var Conversation_ContextMenuShare: String { return self._s[750]! } - public var AutoDownloadSettings_Unlimited: String { return self._s[751]! } - public var Channel_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[752]! } - public var Contacts_PermissionsAllow: String { return self._s[753]! } - public var Passport_Language_vi: String { return self._s[755]! } + public var Cache_ClearNone: String { return self._s[704]! } + public var PrivacyPolicy_Accept: String { return self._s[705]! } + public var Contacts_PhoneNumber: String { return self._s[706]! } + public var Passport_Identity_OneOfTypePassport: String { return self._s[707]! } + public var PhotoEditor_HighlightsTint: String { return self._s[709]! } + public var AutoDownloadSettings_AutodownloadVideos: String { return self._s[710]! } + public var Checkout_PaymentMethod_Title: String { return self._s[713]! } + public var Month_GenAugust: String { return self._s[715]! } + public var DialogList_Draft: String { return self._s[716]! } + public var ChatList_EmptyChatListFilterText: String { return self._s[717]! } + public var PeopleNearby_Description: String { return self._s[718]! } + public var WallpaperPreview_SwipeColorsBottomText: String { return self._s[719]! } + public var VoiceChat_InviteLink_CopyListenerLink: String { return self._s[720]! } + public var VoiceChat_EditTitleRemoveSuccess: String { return self._s[721]! } + public var SettingsSearch_Synonyms_Privacy_Data_TopPeers: String { return self._s[723]! } + public var Watch_Message_ForwardedFrom: String { return self._s[724]! } + public var Notification_Mute1h: String { return self._s[725]! } + public var Appearance_ThemePreview_Chat_3_TextWithLink: String { return self._s[726]! } + public var SettingsSearch_Synonyms_Privacy_AuthSessions: String { return self._s[728]! } + public var Channel_Edit_LinkItem: String { return self._s[729]! } + public var Presence_online: String { return self._s[730]! } + public var AutoDownloadSettings_Title: String { return self._s[731]! } + public var Conversation_MessageDialogRetry: String { return self._s[732]! } + public var SettingsSearch_Synonyms_ChatSettings_OpenLinksIn: String { return self._s[734]! } + public var Channel_About_Placeholder: String { return self._s[736]! } + public var Passport_Language_sl: String { return self._s[737]! } + public var AppleWatch_Title: String { return self._s[739]! } + public var RepliesChat_DescriptionText: String { return self._s[741]! } + public var Stats_Message_PrivateShares: String { return self._s[742]! } + public var Settings_ViewPhoto: String { return self._s[743]! } + public var Conversation_ForwardTooltip_SavedMessages_One: String { return self._s[744]! } + public var ChatList_DeleteSavedMessagesConfirmation: String { return self._s[745]! } + public var Cache_ClearProgress: String { return self._s[746]! } + public var Cache_Music: String { return self._s[747]! } + public var Conversation_ContextMenuShare: String { return self._s[749]! } + public var AutoDownloadSettings_Unlimited: String { return self._s[750]! } + public var Channel_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[751]! } + public var Contacts_PermissionsAllow: String { return self._s[752]! } + public var Passport_Language_vi: String { return self._s[754]! } public func PUSH_MESSAGE_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[758]!, self._r[758]!, [_1, _2]) + return formatWithArgumentRanges(self._s[757]!, self._r[757]!, [_1, _2]) } - public var Passport_Language_de: String { return self._s[759]! } - public var Notifications_PermissionsText: String { return self._s[761]! } - public var GroupRemoved_AddToGroup: String { return self._s[762]! } - public var Appearance_ThemePreview_ChatList_4_Text: String { return self._s[763]! } - public var ChangePhoneNumberCode_RequestingACall: String { return self._s[764]! } - public var Login_TermsOfServiceAgree: String { return self._s[765]! } - public var VoiceOver_Navigation_ProxySettings: String { return self._s[766]! } + public var Passport_Language_de: String { return self._s[758]! } + public var Notifications_PermissionsText: String { return self._s[760]! } + public var GroupRemoved_AddToGroup: String { return self._s[761]! } + public var Appearance_ThemePreview_ChatList_4_Text: String { return self._s[762]! } + public var ChangePhoneNumberCode_RequestingACall: String { return self._s[763]! } + public var Login_TermsOfServiceAgree: String { return self._s[764]! } + public var VoiceOver_Navigation_ProxySettings: String { return self._s[765]! } public func PUSH_CHAT_JOINED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[767]!, self._r[767]!, [_1, _2]) + return formatWithArgumentRanges(self._s[766]!, self._r[766]!, [_1, _2]) } - public var SettingsSearch_Synonyms_Data_CallsUseLessData: String { return self._s[769]! } + public var SettingsSearch_Synonyms_Data_CallsUseLessData: String { return self._s[768]! } public func PUSH_CHAT_VOICECHAT_START(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[770]!, self._r[770]!, [_1, _2]) + return formatWithArgumentRanges(self._s[769]!, self._r[769]!, [_1, _2]) } - public var ChatListFolder_NameGroups: String { return self._s[771]! } - public var SocksProxySetup_ProxyDetailsTitle: String { return self._s[772]! } - public var VoiceChat_EditDescriptionSave: String { return self._s[773]! } + public var ChatListFolder_NameGroups: String { return self._s[770]! } + public var SocksProxySetup_ProxyDetailsTitle: String { return self._s[771]! } + public var VoiceChat_EditDescriptionSave: String { return self._s[772]! } public func Channel_AdminLog_MessageChangedLinkedGroup(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[774]!, self._r[774]!, [_1, _2]) + return formatWithArgumentRanges(self._s[773]!, self._r[773]!, [_1, _2]) } - public var Watch_Suggestion_TalkLater: String { return self._s[775]! } - public var Checkout_ShippingOption_Title: String { return self._s[776]! } - public var Conversation_TitleRepliesEmpty: String { return self._s[777]! } - public var CreatePoll_TextHeader: String { return self._s[778]! } - public var VoiceOver_Chat_Message: String { return self._s[780]! } - public var InfoPlist_NSLocationWhenInUseUsageDescription: String { return self._s[781]! } - public var ContactInfo_Note: String { return self._s[783]! } - public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[784]! } - public var Checkout_NewCard_CardholderNameTitle: String { return self._s[785]! } - public var AutoDownloadSettings_Photos: String { return self._s[786]! } - public var UserInfo_NotificationsDefaultDisabled: String { return self._s[787]! } + public var Watch_Suggestion_TalkLater: String { return self._s[774]! } + public var Checkout_ShippingOption_Title: String { return self._s[775]! } + public var Conversation_TitleRepliesEmpty: String { return self._s[776]! } + public var CreatePoll_TextHeader: String { return self._s[777]! } + public var VoiceOver_Chat_Message: String { return self._s[779]! } + public var InfoPlist_NSLocationWhenInUseUsageDescription: String { return self._s[780]! } + public var ContactInfo_Note: String { return self._s[782]! } + public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[783]! } + public var Checkout_NewCard_CardholderNameTitle: String { return self._s[784]! } + public var AutoDownloadSettings_Photos: String { return self._s[785]! } + public var UserInfo_NotificationsDefaultDisabled: String { return self._s[786]! } public func Conversation_ForwardTooltip_Chat_One(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[788]!, self._r[788]!, [_0]) + return formatWithArgumentRanges(self._s[787]!, self._r[787]!, [_0]) } - public var Channel_Info_Subscribers: String { return self._s[789]! } - public var ChatList_DeleteForCurrentUser: String { return self._s[790]! } - public var ChatListFolderSettings_FoldersSection: String { return self._s[791]! } - public var ChannelInfo_ScheduleVoiceChat: String { return self._s[792]! } - public var VoiceOver_ChatList_OutgoingMessage: String { return self._s[793]! } + public var Channel_Info_Subscribers: String { return self._s[788]! } + public var ChatList_DeleteForCurrentUser: String { return self._s[789]! } + public var ChatListFolderSettings_FoldersSection: String { return self._s[790]! } + public var ChannelInfo_ScheduleVoiceChat: String { return self._s[791]! } + public var VoiceOver_ChatList_OutgoingMessage: String { return self._s[792]! } public func Time_PreciseDate_m9(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[797]!, self._r[797]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[796]!, self._r[796]!, [_1, _2, _3]) } - public var AutoNightTheme_System: String { return self._s[798]! } - public var Call_StatusWaiting: String { return self._s[799]! } - public var GroupInfo_GroupHistoryHidden: String { return self._s[800]! } + public var AutoNightTheme_System: String { return self._s[797]! } + public var Call_StatusWaiting: String { return self._s[798]! } + public var GroupInfo_GroupHistoryHidden: String { return self._s[799]! } public func CHAT_MESSAGE_INVOICE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[801]!, self._r[801]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[800]!, self._r[800]!, [_1, _2, _3]) } - public var Conversation_ContextMenuCopy: String { return self._s[803]! } - public var Notifications_MessageNotificationsPreview: String { return self._s[804]! } - public var Notifications_InAppNotificationsVibrate: String { return self._s[805]! } + public var Conversation_ContextMenuCopy: String { return self._s[802]! } + public var Notifications_MessageNotificationsPreview: String { return self._s[803]! } + public var Notifications_InAppNotificationsVibrate: String { return self._s[804]! } public func Conversation_RestrictedTextTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[806]!, self._r[806]!, [_0]) + return formatWithArgumentRanges(self._s[805]!, self._r[805]!, [_0]) } - public var Group_Status: String { return self._s[808]! } - public var Group_Setup_HistoryVisible: String { return self._s[809]! } - public var Conversation_UploadFileTooLarge: String { return self._s[810]! } - public var Conversation_DiscardVoiceMessageAction: String { return self._s[811]! } - public var Paint_Edit: String { return self._s[812]! } - public var PeerInfo_AutoremoveMessages: String { return self._s[813]! } + public var Group_Status: String { return self._s[807]! } + public var Group_Setup_HistoryVisible: String { return self._s[808]! } + public var Conversation_UploadFileTooLarge: String { return self._s[809]! } + public var Conversation_DiscardVoiceMessageAction: String { return self._s[810]! } + public var Paint_Edit: String { return self._s[811]! } + public var PeerInfo_AutoremoveMessages: String { return self._s[812]! } public func ChatImport_SelectionConfirmationGroupWithoutTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[815]!, self._r[815]!, [_0]) + return formatWithArgumentRanges(self._s[814]!, self._r[814]!, [_0]) } - public var Channel_EditAdmin_CannotEdit: String { return self._s[816]! } - public var Username_InvalidTooShort: String { return self._s[817]! } - public var ClearCache_StorageOtherApps: String { return self._s[819]! } - public var Conversation_ViewMessage: String { return self._s[820]! } - public var GroupInfo_PublicLinkAdd: String { return self._s[822]! } + public var Channel_EditAdmin_CannotEdit: String { return self._s[815]! } + public var Username_InvalidTooShort: String { return self._s[816]! } + public var ClearCache_StorageOtherApps: String { return self._s[818]! } + public var Conversation_ViewMessage: String { return self._s[819]! } + public var GroupInfo_PublicLinkAdd: String { return self._s[821]! } public func Notification_RemovedGroupPhoto(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[823]!, self._r[823]!, [_0]) + return formatWithArgumentRanges(self._s[822]!, self._r[822]!, [_0]) } - public var CallSettings_Title: String { return self._s[824]! } + public var CallSettings_Title: String { return self._s[823]! } public func Conversation_BotInteractiveUrlAlert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[825]!, self._r[825]!, [_0]) + return formatWithArgumentRanges(self._s[824]!, self._r[824]!, [_0]) } public func VoiceOver_Chat_ContactFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[828]!, self._r[828]!, [_0]) + return formatWithArgumentRanges(self._s[827]!, self._r[827]!, [_0]) } - public var PUSH_SENDER_YOU: String { return self._s[831]! } + public var PUSH_SENDER_YOU: String { return self._s[830]! } public func Conversation_DeletedFromContacts(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[832]!, self._r[832]!, [_0]) + return formatWithArgumentRanges(self._s[831]!, self._r[831]!, [_0]) } - public var Profile_ShareContactButton: String { return self._s[833]! } - public var GroupInfo_Permissions_SectionTitle: String { return self._s[834]! } + public var Profile_ShareContactButton: String { return self._s[832]! } + public var GroupInfo_Permissions_SectionTitle: String { return self._s[833]! } public func VoiceOver_Chat_StickerFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[835]!, self._r[835]!, [_0]) + return formatWithArgumentRanges(self._s[834]!, self._r[834]!, [_0]) } - public var Map_ShareLiveLocation: String { return self._s[836]! } - public var ChatListFolder_TitleEdit: String { return self._s[837]! } + public var Map_ShareLiveLocation: String { return self._s[835]! } + public var ChatListFolder_TitleEdit: String { return self._s[836]! } public func VoiceOver_Chat_AnimatedStickerFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[838]!, self._r[838]!, [_0]) + return formatWithArgumentRanges(self._s[837]!, self._r[837]!, [_0]) } - public var Passport_Address_Address: String { return self._s[840]! } - public var LastSeen_JustNow: String { return self._s[842]! } + public var Passport_Address_Address: String { return self._s[839]! } + public var LastSeen_JustNow: String { return self._s[841]! } public func SecretImage_NotViewedYet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[843]!, self._r[843]!, [_0]) + return formatWithArgumentRanges(self._s[842]!, self._r[842]!, [_0]) } - public var ContactInfo_PhoneLabelOther: String { return self._s[844]! } - public var PasscodeSettings_DoNotMatch: String { return self._s[845]! } - public var Weekday_Today: String { return self._s[848]! } - public var DialogList_Title: String { return self._s[849]! } - public var SettingsSearch_Synonyms_Notifications_MessageNotificationsPreview: String { return self._s[850]! } - public var Cache_ClearCache: String { return self._s[851]! } - public var CreatePoll_ExplanationInfo: String { return self._s[852]! } - public var Notifications_ResetAllNotificationsHelp: String { return self._s[854]! } - public var Stats_MessageTitle: String { return self._s[855]! } - public var Passport_Address_Street: String { return self._s[857]! } + public var ContactInfo_PhoneLabelOther: String { return self._s[843]! } + public var PasscodeSettings_DoNotMatch: String { return self._s[844]! } + public var Weekday_Today: String { return self._s[847]! } + public var DialogList_Title: String { return self._s[848]! } + public var SettingsSearch_Synonyms_Notifications_MessageNotificationsPreview: String { return self._s[849]! } + public var Cache_ClearCache: String { return self._s[850]! } + public var CreatePoll_ExplanationInfo: String { return self._s[851]! } + public var Notifications_ResetAllNotificationsHelp: String { return self._s[853]! } + public var Stats_MessageTitle: String { return self._s[854]! } + public var Passport_Address_Street: String { return self._s[856]! } public func Channel_AdminLog_MessageRemovedGroupUsername(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[858]!, self._r[858]!, [_0]) + return formatWithArgumentRanges(self._s[857]!, self._r[857]!, [_0]) } - public var Channel_AdminLog_ChannelEmptyText: String { return self._s[859]! } + public var Channel_AdminLog_ChannelEmptyText: String { return self._s[858]! } public func Login_PhoneGenericEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[860]!, self._r[860]!, [_0]) + return formatWithArgumentRanges(self._s[859]!, self._r[859]!, [_0]) } - public var TwoStepAuth_Email: String { return self._s[862]! } - public var Conversation_SecretLinkPreviewAlert: String { return self._s[863]! } - public var PrivacySettings_PasscodeOn: String { return self._s[864]! } - public var Camera_SquareMode: String { return self._s[866]! } - public var SocksProxySetup_Port: String { return self._s[867]! } - public var Watch_LastSeen_JustNow: String { return self._s[869]! } + public var TwoStepAuth_Email: String { return self._s[861]! } + public var Conversation_SecretLinkPreviewAlert: String { return self._s[862]! } + public var PrivacySettings_PasscodeOn: String { return self._s[863]! } + public var Camera_SquareMode: String { return self._s[865]! } + public var SocksProxySetup_Port: String { return self._s[866]! } + public var Watch_LastSeen_JustNow: String { return self._s[868]! } public func Location_ProximityAlertSetText(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[870]!, self._r[870]!, [_1, _2]) + return formatWithArgumentRanges(self._s[869]!, self._r[869]!, [_1, _2]) } public func PUSH_MESSAGE_GAME(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[871]!, self._r[871]!, [_1, _2]) + return formatWithArgumentRanges(self._s[870]!, self._r[870]!, [_1, _2]) } public func Watch_LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[872]!, self._r[872]!, [_0]) + return formatWithArgumentRanges(self._s[871]!, self._r[871]!, [_0]) } - public var VoiceChat_CancelVoiceChat: String { return self._s[873]! } - public var EditTheme_Expand_Preview_OutgoingText: String { return self._s[874]! } - public var Channel_AdminLogFilter_EventsTitle: String { return self._s[875]! } - public var Watch_Suggestion_HoldOn: String { return self._s[878]! } + public var VoiceChat_CancelVoiceChat: String { return self._s[872]! } + public var EditTheme_Expand_Preview_OutgoingText: String { return self._s[873]! } + public var Channel_AdminLogFilter_EventsTitle: String { return self._s[874]! } + public var Watch_Suggestion_HoldOn: String { return self._s[877]! } public func PUSH_CHANNEL_MESSAGE_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[879]!, self._r[879]!, [_1]) + return formatWithArgumentRanges(self._s[878]!, self._r[878]!, [_1]) } - public var CallSettings_TabIcon: String { return self._s[880]! } - public var ScheduledMessages_SendNow: String { return self._s[881]! } - public var Stats_GroupTopWeekdaysTitle: String { return self._s[882]! } - public var UserInfo_PhoneCall: String { return self._s[883]! } - public var Month_GenMarch: String { return self._s[884]! } - public var Camera_Discard: String { return self._s[885]! } - public var InfoPlist_NSFaceIDUsageDescription: String { return self._s[886]! } - public var Passport_RequestedInformation: String { return self._s[887]! } - public var VoiceChat_RecordingTitlePlaceholder: String { return self._s[889]! } + public var CallSettings_TabIcon: String { return self._s[879]! } + public var ScheduledMessages_SendNow: String { return self._s[880]! } + public var Stats_GroupTopWeekdaysTitle: String { return self._s[881]! } + public var UserInfo_PhoneCall: String { return self._s[882]! } + public var Month_GenMarch: String { return self._s[883]! } + public var Camera_Discard: String { return self._s[884]! } + public var InfoPlist_NSFaceIDUsageDescription: String { return self._s[885]! } + public var Passport_RequestedInformation: String { return self._s[886]! } + public var VoiceChat_RecordingTitlePlaceholder: String { return self._s[888]! } public func Notification_ProximityYouReached(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[890]!, self._r[890]!, [_1, _2]) + return formatWithArgumentRanges(self._s[889]!, self._r[889]!, [_1, _2]) } - public var Passport_Language_ro: String { return self._s[891]! } + public var Passport_Language_ro: String { return self._s[890]! } public func PUSH_CHAT_MESSAGE_DOC(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[892]!, self._r[892]!, [_1, _2]) + return formatWithArgumentRanges(self._s[891]!, self._r[891]!, [_1, _2]) } - public var AutoDownloadSettings_ResetHelp: String { return self._s[893]! } - public var Passport_Identity_DocumentDetails: String { return self._s[895]! } - public var Passport_Address_ScansHelp: String { return self._s[896]! } - public var Location_LiveLocationRequired_Title: String { return self._s[897]! } - public var ClearCache_StorageCache: String { return self._s[898]! } - public var Theme_Colors_ColorWallpaperWarningProceed: String { return self._s[899]! } - public var Conversation_RestrictedText: String { return self._s[900]! } - public var Notifications_MessageNotifications: String { return self._s[902]! } - public var Passport_Scans: String { return self._s[903]! } + public var AutoDownloadSettings_ResetHelp: String { return self._s[892]! } + public var Passport_Identity_DocumentDetails: String { return self._s[894]! } + public var Passport_Address_ScansHelp: String { return self._s[895]! } + public var Location_LiveLocationRequired_Title: String { return self._s[896]! } + public var ClearCache_StorageCache: String { return self._s[897]! } + public var Theme_Colors_ColorWallpaperWarningProceed: String { return self._s[898]! } + public var Conversation_RestrictedText: String { return self._s[899]! } + public var Notifications_MessageNotifications: String { return self._s[901]! } + public var Passport_Scans: String { return self._s[902]! } public func VoiceChat_StatusStartsIn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[905]!, self._r[905]!, [_0]) + return formatWithArgumentRanges(self._s[904]!, self._r[904]!, [_0]) } - public var TwoStepAuth_SetupHintTitle: String { return self._s[906]! } - public var LogoutOptions_ContactSupportTitle: String { return self._s[907]! } - public var Passport_Identity_SelfieHelp: String { return self._s[908]! } - public var Permissions_NotificationsUnreachableText_v0: String { return self._s[909]! } - public var Privacy_PaymentsClear_PaymentInfo: String { return self._s[910]! } - public var ShareMenu_CopyShareLinkGame: String { return self._s[911]! } - public var PeerInfo_ButtonSearch: String { return self._s[912]! } + public var TwoStepAuth_SetupHintTitle: String { return self._s[905]! } + public var LogoutOptions_ContactSupportTitle: String { return self._s[906]! } + public var Passport_Identity_SelfieHelp: String { return self._s[907]! } + public var Permissions_NotificationsUnreachableText_v0: String { return self._s[908]! } + public var Privacy_PaymentsClear_PaymentInfo: String { return self._s[909]! } + public var ShareMenu_CopyShareLinkGame: String { return self._s[910]! } + public var PeerInfo_ButtonSearch: String { return self._s[911]! } public func Notification_ProximityReachedYou(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[915]!, self._r[915]!, [_1, _2]) + return formatWithArgumentRanges(self._s[914]!, self._r[914]!, [_1, _2]) } - public var SettingsSearch_Synonyms_Privacy_Data_ClearPaymentsInfo: String { return self._s[916]! } - public var Passport_FieldIdentityTranslationHelp: String { return self._s[918]! } - public var Conversation_InputTextSilentBroadcastPlaceholder: String { return self._s[919]! } - public var Month_GenSeptember: String { return self._s[920]! } + public var SettingsSearch_Synonyms_Privacy_Data_ClearPaymentsInfo: String { return self._s[915]! } + public var Passport_FieldIdentityTranslationHelp: String { return self._s[917]! } + public var Conversation_InputTextSilentBroadcastPlaceholder: String { return self._s[918]! } + public var Month_GenSeptember: String { return self._s[919]! } public func Call_GroupFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[922]!, self._r[922]!, [_1, _2]) + return formatWithArgumentRanges(self._s[921]!, self._r[921]!, [_1, _2]) } - public var StickerPacksSettings_ArchivedPacks: String { return self._s[923]! } + public var StickerPacksSettings_ArchivedPacks: String { return self._s[922]! } public func Notification_VoiceChatInvitation(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[925]!, self._r[925]!, [_1, _2]) + return formatWithArgumentRanges(self._s[924]!, self._r[924]!, [_1, _2]) } public func Channel_Username_LinkHint(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[926]!, self._r[926]!, [_0]) + return formatWithArgumentRanges(self._s[925]!, self._r[925]!, [_0]) } public func PUSH_PINNED_CONTACT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[928]!, self._r[928]!, [_1, _2]) + return formatWithArgumentRanges(self._s[927]!, self._r[927]!, [_1, _2]) } public func PUSH_MESSAGE_VIDEOS(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[929]!, self._r[929]!, [_1, _2]) + return formatWithArgumentRanges(self._s[928]!, self._r[928]!, [_1, _2]) } - public var Calls_NotNow: String { return self._s[931]! } - public var Settings_ChatFolders: String { return self._s[936]! } - public var Login_PadPhoneHelpTitle: String { return self._s[937]! } - public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[938]! } - public var Widget_MessageAutoremoveTimerRemoved: String { return self._s[939]! } - public var VoiceChat_RecordingSaved: String { return self._s[940]! } - public var Settings_ChatBackground: String { return self._s[941]! } + public var Calls_NotNow: String { return self._s[930]! } + public var Settings_ChatFolders: String { return self._s[935]! } + public var Login_PadPhoneHelpTitle: String { return self._s[936]! } + public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[937]! } + public var Widget_MessageAutoremoveTimerRemoved: String { return self._s[938]! } + public var VoiceChat_RecordingSaved: String { return self._s[939]! } + public var Settings_ChatBackground: String { return self._s[940]! } public func PUSH_CHAT_MESSAGE_CONTACT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[943]!, self._r[943]!, [_1, _2]) + return formatWithArgumentRanges(self._s[942]!, self._r[942]!, [_1, _2]) } - public var ProxyServer_VoiceOver_Active: String { return self._s[944]! } - public var Call_StatusBusy: String { return self._s[945]! } - public var Conversation_MessageDeliveryFailed: String { return self._s[946]! } - public var Login_NetworkError: String { return self._s[948]! } - public var TwoStepAuth_SetupPasswordDescription: String { return self._s[949]! } - public var Privacy_Calls_Integration: String { return self._s[950]! } - public var DialogList_SearchSectionMessages: String { return self._s[951]! } - public var AutoDownloadSettings_VideosTitle: String { return self._s[952]! } - public var Preview_DeletePhoto: String { return self._s[953]! } - public var VoiceChat_Video: String { return self._s[954]! } - public var PrivacySettings_PhoneNumber: String { return self._s[956]! } - public var Forward_ErrorDisabledForChat: String { return self._s[957]! } - public var Watch_Compose_CurrentLocation: String { return self._s[958]! } - public var Settings_CallSettings: String { return self._s[959]! } - public var AutoDownloadSettings_TypePrivateChats: String { return self._s[960]! } - public var Conversation_StickerRemovedFromFavorites: String { return self._s[961]! } - public var ChatList_Context_MarkAllAsRead: String { return self._s[962]! } - public var ChatSettings_AutoPlayAnimations: String { return self._s[963]! } - public var SaveIncomingPhotosSettings_Title: String { return self._s[964]! } - public var OwnershipTransfer_SecurityRequirements: String { return self._s[965]! } - public var Map_LiveLocationFor1Hour: String { return self._s[966]! } + public var ProxyServer_VoiceOver_Active: String { return self._s[943]! } + public var Call_StatusBusy: String { return self._s[944]! } + public var Conversation_MessageDeliveryFailed: String { return self._s[945]! } + public var Login_NetworkError: String { return self._s[947]! } + public var TwoStepAuth_SetupPasswordDescription: String { return self._s[948]! } + public var Privacy_Calls_Integration: String { return self._s[949]! } + public var DialogList_SearchSectionMessages: String { return self._s[950]! } + public var AutoDownloadSettings_VideosTitle: String { return self._s[951]! } + public var Preview_DeletePhoto: String { return self._s[952]! } + public var VoiceChat_Video: String { return self._s[953]! } + public var PrivacySettings_PhoneNumber: String { return self._s[955]! } + public var Forward_ErrorDisabledForChat: String { return self._s[956]! } + public var Watch_Compose_CurrentLocation: String { return self._s[957]! } + public var Settings_CallSettings: String { return self._s[958]! } + public var AutoDownloadSettings_TypePrivateChats: String { return self._s[959]! } + public var Conversation_StickerRemovedFromFavorites: String { return self._s[960]! } + public var ChatList_Context_MarkAllAsRead: String { return self._s[961]! } + public var ChatSettings_AutoPlayAnimations: String { return self._s[962]! } + public var SaveIncomingPhotosSettings_Title: String { return self._s[963]! } + public var OwnershipTransfer_SecurityRequirements: String { return self._s[964]! } + public var Map_LiveLocationFor1Hour: String { return self._s[965]! } public func Privacy_GroupsAndChannels_InviteToGroupError(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[967]!, self._r[967]!, [_0, _1]) + return formatWithArgumentRanges(self._s[966]!, self._r[966]!, [_0, _1]) } - public var VoiceChat_MutedByAdmin: String { return self._s[968]! } + public var VoiceChat_MutedByAdmin: String { return self._s[967]! } public func Notification_PinnedLiveLocationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[969]!, self._r[969]!, [_0]) + return formatWithArgumentRanges(self._s[968]!, self._r[968]!, [_0]) } - public var Conversation_UnvotePoll: String { return self._s[970]! } - public var TwoStepAuth_EnterEmailCode: String { return self._s[971]! } + public var Conversation_UnvotePoll: String { return self._s[969]! } + public var TwoStepAuth_EnterEmailCode: String { return self._s[970]! } public func LOCAL_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[972]!, self._r[972]!, [_1, "\(_2)"]) + return formatWithArgumentRanges(self._s[971]!, self._r[971]!, [_1, "\(_2)"]) } - public var Passport_InfoTitle: String { return self._s[973]! } + public var Passport_InfoTitle: String { return self._s[972]! } public func Conversation_Bytes(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[974]!, self._r[974]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[973]!, self._r[973]!, ["\(_0)"]) } - public var AccentColor_Title: String { return self._s[975]! } + public var AccentColor_Title: String { return self._s[974]! } public func PUSH_MESSAGE_INVOICE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[976]!, self._r[976]!, [_1, _2]) + return formatWithArgumentRanges(self._s[975]!, self._r[975]!, [_1, _2]) } public func Notification_JoinedChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[979]!, self._r[979]!, [_0]) + return formatWithArgumentRanges(self._s[978]!, self._r[978]!, [_0]) } - public var AutoDownloadSettings_DataUsageCustom: String { return self._s[980]! } - public var Conversation_ShareBotLocationConfirmation: String { return self._s[981]! } - public var PrivacyPhoneNumberSettings_WhoCanSeeMyPhoneNumber: String { return self._s[982]! } - public var VoiceOver_Editing_ClearText: String { return self._s[983]! } - public var Conversation_Unarchive: String { return self._s[984]! } - public var Notification_CallOutgoing: String { return self._s[985]! } - public var Channel_Setup_PublicNoLink: String { return self._s[986]! } - public var Passport_Identity_GenderPlaceholder: String { return self._s[987]! } - public var Message_Animation: String { return self._s[988]! } - public var SettingsSearch_Synonyms_Appearance_Animations: String { return self._s[989]! } - public var ChatSettings_ConnectionType_Title: String { return self._s[990]! } + public var AutoDownloadSettings_DataUsageCustom: String { return self._s[979]! } + public var Conversation_ShareBotLocationConfirmation: String { return self._s[980]! } + public var PrivacyPhoneNumberSettings_WhoCanSeeMyPhoneNumber: String { return self._s[981]! } + public var VoiceOver_Editing_ClearText: String { return self._s[982]! } + public var Conversation_Unarchive: String { return self._s[983]! } + public var Notification_CallOutgoing: String { return self._s[984]! } + public var Channel_Setup_PublicNoLink: String { return self._s[985]! } + public var Passport_Identity_GenderPlaceholder: String { return self._s[986]! } + public var Message_Animation: String { return self._s[987]! } + public var SettingsSearch_Synonyms_Appearance_Animations: String { return self._s[988]! } + public var ChatSettings_ConnectionType_Title: String { return self._s[989]! } public func Watch_Time_ShortFullAt(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[991]!, self._r[991]!, [_1, _2]) + return formatWithArgumentRanges(self._s[990]!, self._r[990]!, [_1, _2]) } public func VoiceChat_StatusSpeakingVolume(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[992]!, self._r[992]!, [_0]) + return formatWithArgumentRanges(self._s[991]!, self._r[991]!, [_0]) } - public var Notification_CallBack: String { return self._s[993]! } - public var Appearance_Title: String { return self._s[996]! } - public var NotificationsSound_Glass: String { return self._s[998]! } - public var AutoDownloadSettings_CellularTitle: String { return self._s[1000]! } - public var Notifications_PermissionsSuppressWarningTitle: String { return self._s[1002]! } - public var ChatSearch_SearchPlaceholder: String { return self._s[1003]! } - public var Passport_Identity_AddPassport: String { return self._s[1004]! } - public var GroupPermission_NoAddMembers: String { return self._s[1006]! } - public var ContactList_Context_SendMessage: String { return self._s[1007]! } - public var PhotoEditor_GrainTool: String { return self._s[1008]! } - public var Settings_CopyPhoneNumber: String { return self._s[1009]! } - public var Passport_Address_City: String { return self._s[1010]! } - public var VoiceChat_LeaveAndCancelVoiceChat: String { return self._s[1011]! } - public var ChannelRemoved_RemoveInfo: String { return self._s[1012]! } - public var SocksProxySetup_Password: String { return self._s[1014]! } - public var Settings_Passport: String { return self._s[1015]! } - public var Channel_MessagePhotoUpdated: String { return self._s[1017]! } - public var Stats_LanguagesTitle: String { return self._s[1018]! } - public var ChatList_PeerTypeGroup: String { return self._s[1019]! } - public var Privacy_Calls_P2PHelp: String { return self._s[1020]! } - public var VoiceOver_Chat_PollNoVotes: String { return self._s[1021]! } - public var Embed_PlayingInPIP: String { return self._s[1022]! } - public var BlockedUsers_BlockUser: String { return self._s[1025]! } - public var Login_CancelPhoneVerificationContinue: String { return self._s[1026]! } + public var Notification_CallBack: String { return self._s[992]! } + public var Appearance_Title: String { return self._s[995]! } + public var NotificationsSound_Glass: String { return self._s[997]! } + public var AutoDownloadSettings_CellularTitle: String { return self._s[999]! } + public var Notifications_PermissionsSuppressWarningTitle: String { return self._s[1001]! } + public var ChatSearch_SearchPlaceholder: String { return self._s[1002]! } + public var Passport_Identity_AddPassport: String { return self._s[1003]! } + public var GroupPermission_NoAddMembers: String { return self._s[1005]! } + public var ContactList_Context_SendMessage: String { return self._s[1006]! } + public var PhotoEditor_GrainTool: String { return self._s[1007]! } + public var Settings_CopyPhoneNumber: String { return self._s[1008]! } + public var Passport_Address_City: String { return self._s[1009]! } + public var VoiceChat_LeaveAndCancelVoiceChat: String { return self._s[1010]! } + public var ChannelRemoved_RemoveInfo: String { return self._s[1011]! } + public var SocksProxySetup_Password: String { return self._s[1013]! } + public var Settings_Passport: String { return self._s[1014]! } + public var Channel_MessagePhotoUpdated: String { return self._s[1016]! } + public var Stats_LanguagesTitle: String { return self._s[1017]! } + public var ChatList_PeerTypeGroup: String { return self._s[1018]! } + public var Privacy_Calls_P2PHelp: String { return self._s[1019]! } + public var VoiceOver_Chat_PollNoVotes: String { return self._s[1020]! } + public var Embed_PlayingInPIP: String { return self._s[1021]! } + public var BlockedUsers_BlockUser: String { return self._s[1024]! } + public var Login_CancelPhoneVerificationContinue: String { return self._s[1025]! } public func PUSH_CHANNEL_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1027]!, self._r[1027]!, [_1]) + return formatWithArgumentRanges(self._s[1026]!, self._r[1026]!, [_1]) } - public var AuthSessions_LoggedIn: String { return self._s[1028]! } - public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[1029]! } - public var Activity_UploadingDocument: String { return self._s[1030]! } - public var PeopleNearby_NoMembers: String { return self._s[1031]! } - public var SettingsSearch_Synonyms_Stickers_Masks: String { return self._s[1034]! } - public var ChatSettings_AutoPlayVideos: String { return self._s[1035]! } - public var VoiceOver_Chat_OpenLinkHint: String { return self._s[1036]! } - public var InstantPage_VoiceOver_IncreaseFontSize: String { return self._s[1037]! } - public var Settings_ViewVideo: String { return self._s[1038]! } - public var Map_ShowPlaces: String { return self._s[1040]! } - public var Passport_Phone_UseTelegramNumberHelp: String { return self._s[1041]! } - public var InviteLink_Create_Title: String { return self._s[1042]! } - public var Notification_CreatedGroup: String { return self._s[1043]! } - public var SettingsSearch_Synonyms_Appearance_ChatBackground_Custom: String { return self._s[1044]! } + public var AuthSessions_LoggedIn: String { return self._s[1027]! } + public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[1028]! } + public var Activity_UploadingDocument: String { return self._s[1029]! } + public var PeopleNearby_NoMembers: String { return self._s[1030]! } + public var SettingsSearch_Synonyms_Stickers_Masks: String { return self._s[1033]! } + public var ChatSettings_AutoPlayVideos: String { return self._s[1034]! } + public var VoiceOver_Chat_OpenLinkHint: String { return self._s[1035]! } + public var InstantPage_VoiceOver_IncreaseFontSize: String { return self._s[1036]! } + public var Settings_ViewVideo: String { return self._s[1037]! } + public var Map_ShowPlaces: String { return self._s[1039]! } + public var Passport_Phone_UseTelegramNumberHelp: String { return self._s[1040]! } + public var InviteLink_Create_Title: String { return self._s[1041]! } + public var Notification_CreatedGroup: String { return self._s[1042]! } + public var SettingsSearch_Synonyms_Appearance_ChatBackground_Custom: String { return self._s[1043]! } public func PrivacySettings_LastSeenContactsPlus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1045]!, self._r[1045]!, [_0]) + return formatWithArgumentRanges(self._s[1044]!, self._r[1044]!, [_0]) } - public var Conversation_StatusLeftGroup: String { return self._s[1046]! } - public var Theme_Colors_Messages: String { return self._s[1047]! } - public var AuthSessions_EmptyText: String { return self._s[1048]! } + public var Conversation_StatusLeftGroup: String { return self._s[1045]! } + public var Theme_Colors_Messages: String { return self._s[1046]! } + public var AuthSessions_EmptyText: String { return self._s[1047]! } public func PUSH_MESSAGE_CONTACT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1049]!, self._r[1049]!, [_1]) + return formatWithArgumentRanges(self._s[1048]!, self._r[1048]!, [_1]) } - public var UserInfo_StartSecretChat: String { return self._s[1050]! } - public var ChatListFolderSettings_EditFoldersInfo: String { return self._s[1051]! } - public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[1052]! } - public var Conversation_ReportSpamGroupConfirmation: String { return self._s[1053]! } - public var Conversation_PrivateMessageLinkCopied: String { return self._s[1055]! } - public var PeerInfo_PaneFiles: String { return self._s[1056]! } - public var VoiceChat_DisplayAs: String { return self._s[1057]! } - public var PrivacySettings_AutoArchive: String { return self._s[1058]! } - public var Camera_VideoMode: String { return self._s[1059]! } - public var NotificationsSound_Alert: String { return self._s[1060]! } - public var Privacy_Forwards_NeverAllow_Title: String { return self._s[1061]! } - public var Appearance_AutoNightTheme: String { return self._s[1062]! } - public var Passport_Language_he: String { return self._s[1063]! } - public var Passport_InvalidPasswordError: String { return self._s[1064]! } - public var Conversation_PinMessageAlert_OnlyPin: String { return self._s[1065]! } - public var UserInfo_InviteBotToGroup: String { return self._s[1066]! } - public var Conversation_SilentBroadcastTooltipOff: String { return self._s[1067]! } - public var Common_TakePhoto: String { return self._s[1068]! } + public var UserInfo_StartSecretChat: String { return self._s[1049]! } + public var ChatListFolderSettings_EditFoldersInfo: String { return self._s[1050]! } + public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[1051]! } + public var Conversation_ReportSpamGroupConfirmation: String { return self._s[1052]! } + public var Conversation_PrivateMessageLinkCopied: String { return self._s[1054]! } + public var PeerInfo_PaneFiles: String { return self._s[1055]! } + public var VoiceChat_DisplayAs: String { return self._s[1056]! } + public var PrivacySettings_AutoArchive: String { return self._s[1057]! } + public var Camera_VideoMode: String { return self._s[1058]! } + public var NotificationsSound_Alert: String { return self._s[1059]! } + public var Privacy_Forwards_NeverAllow_Title: String { return self._s[1060]! } + public var Appearance_AutoNightTheme: String { return self._s[1061]! } + public var Passport_Language_he: String { return self._s[1062]! } + public var Passport_InvalidPasswordError: String { return self._s[1063]! } + public var Conversation_PinMessageAlert_OnlyPin: String { return self._s[1064]! } + public var UserInfo_InviteBotToGroup: String { return self._s[1065]! } + public var Conversation_SilentBroadcastTooltipOff: String { return self._s[1066]! } + public var Common_TakePhoto: String { return self._s[1067]! } public func Channel_AdminLog_RevokedInviteLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1069]!, self._r[1069]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1068]!, self._r[1068]!, [_1, _2]) } - public var Passport_Email_UseTelegramEmailHelp: String { return self._s[1070]! } - public var ChatList_Context_JoinChannel: String { return self._s[1071]! } - public var MediaPlayer_UnknownArtist: String { return self._s[1072]! } - public var VoiceChat_EditDescriptionText: String { return self._s[1073]! } - public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[1076]! } - public var Channel_OwnershipTransfer_Title: String { return self._s[1077]! } - public var EditTheme_UploadEditedTheme: String { return self._s[1078]! } - public var Settings_SetProfilePhotoOrVideo: String { return self._s[1080]! } - public var Passport_FieldOneOf_Delimeter: String { return self._s[1081]! } - public var MessagePoll_ViewResults: String { return self._s[1082]! } - public var Group_Setup_TypePrivateHelp: String { return self._s[1083]! } + public var Passport_Email_UseTelegramEmailHelp: String { return self._s[1069]! } + public var ChatList_Context_JoinChannel: String { return self._s[1070]! } + public var MediaPlayer_UnknownArtist: String { return self._s[1071]! } + public var VoiceChat_EditDescriptionText: String { return self._s[1072]! } + public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[1075]! } + public var Channel_OwnershipTransfer_Title: String { return self._s[1076]! } + public var EditTheme_UploadEditedTheme: String { return self._s[1077]! } + public var Settings_SetProfilePhotoOrVideo: String { return self._s[1079]! } + public var Passport_FieldOneOf_Delimeter: String { return self._s[1080]! } + public var MessagePoll_ViewResults: String { return self._s[1081]! } + public var Group_Setup_TypePrivateHelp: String { return self._s[1082]! } public func UserInfo_ContactForwardTooltip_Chat_One(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1084]!, self._r[1084]!, [_0]) + return formatWithArgumentRanges(self._s[1083]!, self._r[1083]!, [_0]) } - public var Passport_Address_OneOfTypeUtilityBill: String { return self._s[1085]! } - public var Privacy_PaymentsClear_ShippingInfoCleared: String { return self._s[1086]! } - public var ChatList_Search_ShowLess: String { return self._s[1087]! } - public var InviteLink_Create_UsersLimitNoLimit: String { return self._s[1088]! } - public var UserInfo_ShareBot: String { return self._s[1089]! } - public var Privacy_Calls_P2P: String { return self._s[1091]! } - public var WebBrowser_InAppSafari: String { return self._s[1092]! } - public var SharedMedia_EmptyFilesText: String { return self._s[1095]! } - public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[1096]! } - public var GroupInfo_SetSound: String { return self._s[1097]! } - public var Permissions_PeopleNearbyAllowInSettings_v0: String { return self._s[1098]! } + public var Passport_Address_OneOfTypeUtilityBill: String { return self._s[1084]! } + public var Privacy_PaymentsClear_ShippingInfoCleared: String { return self._s[1085]! } + public var ChatList_Search_ShowLess: String { return self._s[1086]! } + public var InviteLink_Create_UsersLimitNoLimit: String { return self._s[1087]! } + public var UserInfo_ShareBot: String { return self._s[1088]! } + public var Privacy_Calls_P2P: String { return self._s[1090]! } + public var WebBrowser_InAppSafari: String { return self._s[1091]! } + public var SharedMedia_EmptyFilesText: String { return self._s[1094]! } + public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[1095]! } + public var GroupInfo_SetSound: String { return self._s[1096]! } + public var Permissions_PeopleNearbyAllowInSettings_v0: String { return self._s[1097]! } public func Conversation_AutoremoveRemainingTime(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1099]!, self._r[1099]!, [_0]) + return formatWithArgumentRanges(self._s[1098]!, self._r[1098]!, [_0]) } - public var Channel_AdminLog_MessagePreviousDescription: String { return self._s[1100]! } - public var Channel_AdminLogFilter_EventsAll: String { return self._s[1101]! } - public var CallSettings_UseLessData: String { return self._s[1102]! } - public var InfoPlist_NSCameraUsageDescription: String { return self._s[1103]! } - public var NotificationsSound_Chord: String { return self._s[1104]! } - public var PhotoEditor_CurvesTool: String { return self._s[1105]! } - public var Appearance_ThemePreview_Chat_2_Text: String { return self._s[1106]! } - public var Resolve_ErrorNotFound: String { return self._s[1107]! } - public var Activity_PlayingGame: String { return self._s[1108]! } + public var Channel_AdminLog_MessagePreviousDescription: String { return self._s[1099]! } + public var Channel_AdminLogFilter_EventsAll: String { return self._s[1100]! } + public var CallSettings_UseLessData: String { return self._s[1101]! } + public var InfoPlist_NSCameraUsageDescription: String { return self._s[1102]! } + public var NotificationsSound_Chord: String { return self._s[1103]! } + public var PhotoEditor_CurvesTool: String { return self._s[1104]! } + public var Appearance_ThemePreview_Chat_2_Text: String { return self._s[1105]! } + public var Resolve_ErrorNotFound: String { return self._s[1106]! } + public var Activity_PlayingGame: String { return self._s[1107]! } public func VoiceChat_InvitedPeerText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1112]!, self._r[1112]!, [_0]) + return formatWithArgumentRanges(self._s[1111]!, self._r[1111]!, [_0]) } - public var StickerPacksSettings_AnimatedStickersInfo: String { return self._s[1113]! } + public var StickerPacksSettings_AnimatedStickersInfo: String { return self._s[1112]! } public func PUSH_CHANNEL_MESSAGE_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1114]!, self._r[1114]!, [_1]) + return formatWithArgumentRanges(self._s[1113]!, self._r[1113]!, [_1]) } - public var Conversation_ShareBotContactConfirmationTitle: String { return self._s[1115]! } - public var Notification_CallIncoming: String { return self._s[1116]! } - public var Stats_EnabledNotifications: String { return self._s[1117]! } - public var Notification_VoiceChatStartedChannel: String { return self._s[1118]! } - public var Notifications_PermissionsOpenSettings: String { return self._s[1119]! } - public var Checkout_ErrorProviderAccountTimeout: String { return self._s[1120]! } + public var Conversation_ShareBotContactConfirmationTitle: String { return self._s[1114]! } + public var Notification_CallIncoming: String { return self._s[1115]! } + public var Stats_EnabledNotifications: String { return self._s[1116]! } + public var Notification_VoiceChatStartedChannel: String { return self._s[1117]! } + public var Notifications_PermissionsOpenSettings: String { return self._s[1118]! } + public var Checkout_ErrorProviderAccountTimeout: String { return self._s[1119]! } public func Activity_RemindAboutChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1121]!, self._r[1121]!, [_0]) + return formatWithArgumentRanges(self._s[1120]!, self._r[1120]!, [_0]) } - public var VoiceChat_StatusMutedYou: String { return self._s[1122]! } - public var VoiceOver_Chat_ReplyToYourMessage: String { return self._s[1123]! } - public var Channel_DiscussionGroup_MakeHistoryPublic: String { return self._s[1124]! } - public var StickerPacksSettings_Title: String { return self._s[1125]! } + public var VoiceChat_StatusMutedYou: String { return self._s[1121]! } + public var VoiceOver_Chat_ReplyToYourMessage: String { return self._s[1122]! } + public var Channel_DiscussionGroup_MakeHistoryPublic: String { return self._s[1123]! } + public var StickerPacksSettings_Title: String { return self._s[1124]! } public func Channel_AdminLog_MessageGroupPreHistoryVisible(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1126]!, self._r[1126]!, [_0]) + return formatWithArgumentRanges(self._s[1125]!, self._r[1125]!, [_0]) } - public var Watch_NoConnection: String { return self._s[1127]! } - public var EncryptionKey_Title: String { return self._s[1128]! } - public var Widget_AuthRequired: String { return self._s[1129]! } + public var Watch_NoConnection: String { return self._s[1126]! } + public var EncryptionKey_Title: String { return self._s[1127]! } + public var Widget_AuthRequired: String { return self._s[1128]! } public func PUSH_MESSAGE_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1130]!, self._r[1130]!, [_1]) + return formatWithArgumentRanges(self._s[1129]!, self._r[1129]!, [_1]) } - public var Notifications_ExceptionsTitle: String { return self._s[1131]! } - public var EditTheme_Expand_TopInfo: String { return self._s[1132]! } + public var Notifications_ExceptionsTitle: String { return self._s[1130]! } + public var EditTheme_Expand_TopInfo: String { return self._s[1131]! } public func Contacts_AddPhoneNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1133]!, self._r[1133]!, [_0]) + return formatWithArgumentRanges(self._s[1132]!, self._r[1132]!, [_0]) } - public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[1135]! } - public var Notifications_GroupNotificationsSound: String { return self._s[1136]! } - public var VoiceChat_SpeakPermissionAdmin: String { return self._s[1137]! } - public var Passport_Email_EnterOtherEmail: String { return self._s[1138]! } + public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[1134]! } + public var Notifications_GroupNotificationsSound: String { return self._s[1135]! } + public var VoiceChat_SpeakPermissionAdmin: String { return self._s[1136]! } + public var Passport_Email_EnterOtherEmail: String { return self._s[1137]! } public func VoiceChat_RemovePeerConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1141]!, self._r[1141]!, [_0]) + return formatWithArgumentRanges(self._s[1140]!, self._r[1140]!, [_0]) } - public var Conversation_AddToContacts: String { return self._s[1142]! } - public var AutoDownloadSettings_DataUsageMedium: String { return self._s[1143]! } - public var AuthSessions_LogOutApplications: String { return self._s[1145]! } - public var VoiceChat_LeaveVoiceChat: String { return self._s[1146]! } - public var ChatList_Context_Unpin: String { return self._s[1147]! } - public var PeopleNearby_DiscoverDescription: String { return self._s[1148]! } - public var UserInfo_FakeBotWarning: String { return self._s[1149]! } - public var Notification_MessageLifetime1d: String { return self._s[1150]! } - public var PrivacyLastSeenSettings_NeverShareWith_Title: String { return self._s[1151]! } - public var ChatListFolder_CategoryChannels: String { return self._s[1152]! } - public var VoiceOver_Chat_SeenByRecipient: String { return self._s[1153]! } - public var Notifications_PermissionsAllow: String { return self._s[1154]! } - public var Undo_ScheduledMessagesCleared: String { return self._s[1155]! } - public var AutoDownloadSettings_PrivateChats: String { return self._s[1157]! } - public var VoiceChat_ImproveYourProfileText: String { return self._s[1158]! } - public var ApplyLanguage_ChangeLanguageAction: String { return self._s[1159]! } - public var ChatImportActivity_ErrorInvalidChatType: String { return self._s[1160]! } + public var Conversation_AddToContacts: String { return self._s[1141]! } + public var AutoDownloadSettings_DataUsageMedium: String { return self._s[1142]! } + public var AuthSessions_LogOutApplications: String { return self._s[1144]! } + public var VoiceChat_LeaveVoiceChat: String { return self._s[1145]! } + public var ChatList_Context_Unpin: String { return self._s[1146]! } + public var PeopleNearby_DiscoverDescription: String { return self._s[1147]! } + public var UserInfo_FakeBotWarning: String { return self._s[1148]! } + public var Notification_MessageLifetime1d: String { return self._s[1149]! } + public var PrivacyLastSeenSettings_NeverShareWith_Title: String { return self._s[1150]! } + public var ChatListFolder_CategoryChannels: String { return self._s[1151]! } + public var VoiceOver_Chat_SeenByRecipient: String { return self._s[1152]! } + public var Notifications_PermissionsAllow: String { return self._s[1153]! } + public var Undo_ScheduledMessagesCleared: String { return self._s[1154]! } + public var AutoDownloadSettings_PrivateChats: String { return self._s[1156]! } + public var VoiceChat_ImproveYourProfileText: String { return self._s[1157]! } + public var ApplyLanguage_ChangeLanguageAction: String { return self._s[1158]! } + public var ChatImportActivity_ErrorInvalidChatType: String { return self._s[1159]! } public func Conversation_ScheduledVoiceChatStartsToday(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1161]!, self._r[1161]!, [_0]) + return formatWithArgumentRanges(self._s[1160]!, self._r[1160]!, [_0]) } public func PrivacySettings_LastSeenNobodyPlus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1162]!, self._r[1162]!, [_0]) + return formatWithArgumentRanges(self._s[1161]!, self._r[1161]!, [_0]) } - public var Conversation_AutoremoveTimerRemovedChannel: String { return self._s[1164]! } - public var Notifications_MessageNotificationsHelp: String { return self._s[1166]! } - public var WallpaperSearch_ColorPink: String { return self._s[1167]! } - public var ContactInfo_PhoneNumberHidden: String { return self._s[1168]! } - public var Passport_Identity_IssueDate: String { return self._s[1170]! } + public var Conversation_AutoremoveTimerRemovedChannel: String { return self._s[1163]! } + public var Notifications_MessageNotificationsHelp: String { return self._s[1165]! } + public var WallpaperSearch_ColorPink: String { return self._s[1166]! } + public var ContactInfo_PhoneNumberHidden: String { return self._s[1167]! } + public var Passport_Identity_IssueDate: String { return self._s[1169]! } public func PUSH_CHAT_MESSAGE_GIF(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1171]!, self._r[1171]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1170]!, self._r[1170]!, [_1, _2]) } - public var ChatList_DeleteForAllSubscribersConfirmationText: String { return self._s[1172]! } - public var Channel_Info_Description: String { return self._s[1173]! } - public var PrivacySettings_DeleteAccountIfAwayFor: String { return self._s[1174]! } - public var Weekday_ShortTuesday: String { return self._s[1175]! } - public var Common_Back: String { return self._s[1176]! } - public var Chat_PinnedMessagesHiddenTitle: String { return self._s[1178]! } - public var ChatListFolder_AddChats: String { return self._s[1179]! } - public var Common_Close: String { return self._s[1181]! } - public var Map_OpenIn: String { return self._s[1182]! } - public var Group_Setup_HistoryTitle: String { return self._s[1183]! } - public var SettingsSearch_Synonyms_Data_AutoDownloadUsingWifi: String { return self._s[1184]! } - public var Notification_MessageLifetime1h: String { return self._s[1185]! } + public var ChatList_DeleteForAllSubscribersConfirmationText: String { return self._s[1171]! } + public var Channel_Info_Description: String { return self._s[1172]! } + public var PrivacySettings_DeleteAccountIfAwayFor: String { return self._s[1173]! } + public var Weekday_ShortTuesday: String { return self._s[1174]! } + public var Common_Back: String { return self._s[1175]! } + public var Chat_PinnedMessagesHiddenTitle: String { return self._s[1177]! } + public var ChatListFolder_AddChats: String { return self._s[1178]! } + public var Common_Close: String { return self._s[1180]! } + public var Map_OpenIn: String { return self._s[1181]! } + public var Group_Setup_HistoryTitle: String { return self._s[1182]! } + public var SettingsSearch_Synonyms_Data_AutoDownloadUsingWifi: String { return self._s[1183]! } + public var Notification_MessageLifetime1h: String { return self._s[1184]! } public func CancelResetAccount_Success(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1186]!, self._r[1186]!, [_0]) + return formatWithArgumentRanges(self._s[1185]!, self._r[1185]!, [_0]) } - public var Watch_Contacts_NoResults: String { return self._s[1188]! } - public var TwoStepAuth_SetupResendEmailCode: String { return self._s[1189]! } - public var Checkout_Phone: String { return self._s[1190]! } - public var OwnershipTransfer_ComeBackLater: String { return self._s[1191]! } + public var Watch_Contacts_NoResults: String { return self._s[1187]! } + public var TwoStepAuth_SetupResendEmailCode: String { return self._s[1188]! } + public var Checkout_Phone: String { return self._s[1189]! } + public var OwnershipTransfer_ComeBackLater: String { return self._s[1190]! } public func Channel_CommentsGroup_HeaderGroupSet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1192]!, self._r[1192]!, [_0]) + return formatWithArgumentRanges(self._s[1191]!, self._r[1191]!, [_0]) } public func DialogList_MultipleTypingSuffix(_ _0: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1193]!, self._r[1193]!, ["\(_0)"]) + return formatWithArgumentRanges(self._s[1192]!, self._r[1192]!, ["\(_0)"]) } - public var Conversation_AudioRateTooltipSpeedUp: String { return self._s[1194]! } - public var ChatAdmins_Title: String { return self._s[1195]! } - public var Appearance_ThemePreview_Chat_7_Text: String { return self._s[1196]! } + public var Conversation_AudioRateTooltipSpeedUp: String { return self._s[1193]! } + public var ChatAdmins_Title: String { return self._s[1194]! } + public var Appearance_ThemePreview_Chat_7_Text: String { return self._s[1195]! } public func PUSH_CHANNEL_MESSAGE_POLL(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1197]!, self._r[1197]!, [_1]) + return formatWithArgumentRanges(self._s[1196]!, self._r[1196]!, [_1]) } - public var Common_Done: String { return self._s[1198]! } - public var ChatList_HeaderImportIntoAnExistingGroup: String { return self._s[1199]! } - public var Appearance_ThemeCarouselNight: String { return self._s[1202]! } + public var Common_Done: String { return self._s[1197]! } + public var ChatList_HeaderImportIntoAnExistingGroup: String { return self._s[1198]! } + public var Appearance_ThemeCarouselNight: String { return self._s[1201]! } public func PUSH_PINNED_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1204]!, self._r[1204]!, [_1]) + return formatWithArgumentRanges(self._s[1203]!, self._r[1203]!, [_1]) } - public var InviteLink_Expired: String { return self._s[1206]! } - public var Preview_OpenInInstagram: String { return self._s[1207]! } - public var Wallpaper_SetColor: String { return self._s[1212]! } - public var VoiceOver_Media_PlaybackRate: String { return self._s[1213]! } - public var ChatSettings_Groups: String { return self._s[1214]! } + public var InviteLink_Expired: String { return self._s[1205]! } + public var Preview_OpenInInstagram: String { return self._s[1206]! } + public var Wallpaper_SetColor: String { return self._s[1211]! } + public var VoiceOver_Media_PlaybackRate: String { return self._s[1212]! } + public var ChatSettings_Groups: String { return self._s[1213]! } public func VoiceOver_Chat_VoiceMessageFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1215]!, self._r[1215]!, [_0]) + return formatWithArgumentRanges(self._s[1214]!, self._r[1214]!, [_0]) } - public var Contacts_SortedByName: String { return self._s[1216]! } - public var SettingsSearch_Synonyms_Notifications_ContactJoined: String { return self._s[1217]! } - public var Channel_Management_LabelCreator: String { return self._s[1218]! } - public var Contacts_PermissionsSuppressWarningTitle: String { return self._s[1219]! } + public var Contacts_SortedByName: String { return self._s[1215]! } + public var SettingsSearch_Synonyms_Notifications_ContactJoined: String { return self._s[1216]! } + public var Channel_Management_LabelCreator: String { return self._s[1217]! } + public var Contacts_PermissionsSuppressWarningTitle: String { return self._s[1218]! } public func PrivacySettings_LastSeenContactsMinusPlus(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1220]!, self._r[1220]!, [_0, _1]) + return formatWithArgumentRanges(self._s[1219]!, self._r[1219]!, [_0, _1]) } - public var Group_GroupMembersHeader: String { return self._s[1221]! } - public var Group_PublicLink_Title: String { return self._s[1222]! } - public var Channel_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[1223]! } - public var VoiceOver_Chat_Photo: String { return self._s[1224]! } - public var TwoFactorSetup_EmailVerification_Placeholder: String { return self._s[1225]! } - public var IntentsSettings_SuggestBy: String { return self._s[1226]! } - public var Privacy_Calls_AlwaysAllow_Placeholder: String { return self._s[1227]! } - public var Appearance_ThemePreview_ChatList_1_Name: String { return self._s[1228]! } - public var PhoneNumberHelp_ChangeNumber: String { return self._s[1229]! } - public var LogoutOptions_SetPasscodeText: String { return self._s[1230]! } - public var Map_OpenInMaps: String { return self._s[1231]! } - public var ContactInfo_PhoneLabelWorkFax: String { return self._s[1232]! } - public var BlockedUsers_Unblock: String { return self._s[1233]! } + public var Group_GroupMembersHeader: String { return self._s[1220]! } + public var Group_PublicLink_Title: String { return self._s[1221]! } + public var Channel_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[1222]! } + public var VoiceOver_Chat_Photo: String { return self._s[1223]! } + public var TwoFactorSetup_EmailVerification_Placeholder: String { return self._s[1224]! } + public var IntentsSettings_SuggestBy: String { return self._s[1225]! } + public var Privacy_Calls_AlwaysAllow_Placeholder: String { return self._s[1226]! } + public var Appearance_ThemePreview_ChatList_1_Name: String { return self._s[1227]! } + public var PhoneNumberHelp_ChangeNumber: String { return self._s[1228]! } + public var LogoutOptions_SetPasscodeText: String { return self._s[1229]! } + public var Map_OpenInMaps: String { return self._s[1230]! } + public var ContactInfo_PhoneLabelWorkFax: String { return self._s[1231]! } + public var BlockedUsers_Unblock: String { return self._s[1232]! } public func Settings_ApplyProxyAlert(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1234]!, self._r[1234]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1233]!, self._r[1233]!, [_1, _2]) } public func Channel_AdminLog_MessageRestrictedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1235]!, self._r[1235]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1234]!, self._r[1234]!, [_1, _2]) } - public var ChatImport_CreateGroupAlertTitle: String { return self._s[1237]! } - public var Conversation_Block: String { return self._s[1238]! } - public var VoiceChat_PersonalAccount: String { return self._s[1239]! } - public var Passport_Scans_UploadNew: String { return self._s[1240]! } - public var Share_Title: String { return self._s[1241]! } - public var Conversation_ApplyLocalization: String { return self._s[1242]! } - public var SharedMedia_EmptyLinksText: String { return self._s[1243]! } - public var Settings_NotificationsAndSounds: String { return self._s[1244]! } - public var Stats_ViewsByHoursTitle: String { return self._s[1245]! } - public var PhotoEditor_QualityMedium: String { return self._s[1246]! } - public var Conversation_ContextMenuCancelSending: String { return self._s[1247]! } + public var ChatImport_CreateGroupAlertTitle: String { return self._s[1236]! } + public var Conversation_Block: String { return self._s[1237]! } + public var VoiceChat_PersonalAccount: String { return self._s[1238]! } + public var Passport_Scans_UploadNew: String { return self._s[1239]! } + public var Share_Title: String { return self._s[1240]! } + public var Conversation_ApplyLocalization: String { return self._s[1241]! } + public var SharedMedia_EmptyLinksText: String { return self._s[1242]! } + public var Settings_NotificationsAndSounds: String { return self._s[1243]! } + public var Stats_ViewsByHoursTitle: String { return self._s[1244]! } + public var PhotoEditor_QualityMedium: String { return self._s[1245]! } + public var Conversation_ContextMenuCancelSending: String { return self._s[1246]! } public func PUSH_CHANNEL_MESSAGE_GAME(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1248]!, self._r[1248]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1247]!, self._r[1247]!, [_1, _2]) } - public var Conversation_RestrictedInline: String { return self._s[1249]! } - public var Passport_Language_tr: String { return self._s[1250]! } - public var Call_Mute: String { return self._s[1251]! } + public var Conversation_RestrictedInline: String { return self._s[1248]! } + public var Passport_Language_tr: String { return self._s[1249]! } + public var Call_Mute: String { return self._s[1250]! } public func Conversation_NoticeInvitedByInGroup(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1252]!, self._r[1252]!, [_0]) + return formatWithArgumentRanges(self._s[1251]!, self._r[1251]!, [_0]) } - public var Passport_Language_bn: String { return self._s[1253]! } - public var Common_Save: String { return self._s[1255]! } - public var AccessDenied_LocationTracking: String { return self._s[1257]! } - public var Month_ShortOctober: String { return self._s[1258]! } - public var AutoDownloadSettings_WiFi: String { return self._s[1259]! } - public var ProfilePhoto_SetMainPhoto: String { return self._s[1261]! } - public var ChangePhoneNumberNumber_NewNumber: String { return self._s[1262]! } + public var Passport_Language_bn: String { return self._s[1252]! } + public var Common_Save: String { return self._s[1254]! } + public var AccessDenied_LocationTracking: String { return self._s[1256]! } + public var Month_ShortOctober: String { return self._s[1257]! } + public var AutoDownloadSettings_WiFi: String { return self._s[1258]! } + public var ProfilePhoto_SetMainPhoto: String { return self._s[1260]! } + public var ChangePhoneNumberNumber_NewNumber: String { return self._s[1261]! } public func Time_MonthOfYear_m3(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1263]!, self._r[1263]!, [_0]) + return formatWithArgumentRanges(self._s[1262]!, self._r[1262]!, [_0]) } - public var Watch_ChannelInfo_Title: String { return self._s[1264]! } - public var State_Updating: String { return self._s[1265]! } - public var Conversation_UnblockUser: String { return self._s[1266]! } - public var Notifications_ChannelNotificationsSound: String { return self._s[1267]! } - public var Map_GetDirections: String { return self._s[1268]! } - public var Watch_Compose_AddContact: String { return self._s[1270]! } - public var Conversation_Dice_u26BD: String { return self._s[1271]! } - public var AccessDenied_PhotosRestricted: String { return self._s[1272]! } + public var Watch_ChannelInfo_Title: String { return self._s[1263]! } + public var State_Updating: String { return self._s[1264]! } + public var Conversation_UnblockUser: String { return self._s[1265]! } + public var Notifications_ChannelNotificationsSound: String { return self._s[1266]! } + public var Map_GetDirections: String { return self._s[1267]! } + public var Watch_Compose_AddContact: String { return self._s[1269]! } + public var Conversation_Dice_u26BD: String { return self._s[1270]! } + public var AccessDenied_PhotosRestricted: String { return self._s[1271]! } public func Channel_AdminLog_MessageRank(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1273]!, self._r[1273]!, [_1]) + return formatWithArgumentRanges(self._s[1272]!, self._r[1272]!, [_1]) } - public var Map_LoadError: String { return self._s[1275]! } - public var SettingsSearch_Synonyms_Privacy_Calls: String { return self._s[1276]! } - public var PhotoEditor_CropAuto: String { return self._s[1277]! } + public var Map_LoadError: String { return self._s[1274]! } + public var SettingsSearch_Synonyms_Privacy_Calls: String { return self._s[1275]! } + public var PhotoEditor_CropAuto: String { return self._s[1276]! } public func Target_ShareGameConfirmationPrivate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1280]!, self._r[1280]!, [_0]) + return formatWithArgumentRanges(self._s[1279]!, self._r[1279]!, [_0]) } - public var Username_TooManyPublicUsernamesError: String { return self._s[1282]! } + public var Username_TooManyPublicUsernamesError: String { return self._s[1281]! } public func PUSH_PINNED_GAME(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1283]!, self._r[1283]!, [_1]) + return formatWithArgumentRanges(self._s[1282]!, self._r[1282]!, [_1]) } - public var Settings_PhoneNumber: String { return self._s[1284]! } + public var Settings_PhoneNumber: String { return self._s[1283]! } public func Channel_AdminLog_MessageTransferedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1285]!, self._r[1285]!, [_1]) + return formatWithArgumentRanges(self._s[1284]!, self._r[1284]!, [_1]) } - public var Month_GenJune: String { return self._s[1287]! } - public var Notifications_ExceptionsGroupPlaceholder: String { return self._s[1288]! } - public var ChatListFolder_CategoryRead: String { return self._s[1289]! } - public var LoginPassword_ResetAccount: String { return self._s[1290]! } + public var Month_GenJune: String { return self._s[1286]! } + public var Notifications_ExceptionsGroupPlaceholder: String { return self._s[1287]! } + public var ChatListFolder_CategoryRead: String { return self._s[1288]! } + public var LoginPassword_ResetAccount: String { return self._s[1289]! } public func DialogList_SingleUploadingFileSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1291]!, self._r[1291]!, [_0]) + return formatWithArgumentRanges(self._s[1290]!, self._r[1290]!, [_0]) } - public var Call_CameraConfirmationConfirm: String { return self._s[1292]! } - public var Notification_RenamedChannel: String { return self._s[1293]! } + public var Call_CameraConfirmationConfirm: String { return self._s[1291]! } + public var Notification_RenamedChannel: String { return self._s[1292]! } public func Channel_AdminLog_MessageUnpinned(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1294]!, self._r[1294]!, [_0]) + return formatWithArgumentRanges(self._s[1293]!, self._r[1293]!, [_0]) } - public var Channel_AdminLogFilter_EventsAdmins: String { return self._s[1295]! } - public var IntentsSettings_Title: String { return self._s[1297]! } - public var CallList_DeleteAllForMe: String { return self._s[1298]! } - public var Settings_AppleWatch: String { return self._s[1299]! } - public var Conversation_LinkCopied: String { return self._s[1300]! } - public var DialogList_NoMessagesText: String { return self._s[1301]! } + public var Channel_AdminLogFilter_EventsAdmins: String { return self._s[1294]! } + public var IntentsSettings_Title: String { return self._s[1296]! } + public var CallList_DeleteAllForMe: String { return self._s[1297]! } + public var Settings_AppleWatch: String { return self._s[1298]! } + public var Conversation_LinkCopied: String { return self._s[1299]! } + public var DialogList_NoMessagesText: String { return self._s[1300]! } public func VoiceChat_SendPublicLinkText(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1302]!, self._r[1302]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1301]!, self._r[1301]!, [_1, _2]) } - public var GroupPermission_NoChangeInfo: String { return self._s[1303]! } - public var Channel_ErrorAccessDenied: String { return self._s[1305]! } - public var ScheduledMessages_EmptyPlaceholder: String { return self._s[1306]! } + public var GroupPermission_NoChangeInfo: String { return self._s[1302]! } + public var Channel_ErrorAccessDenied: String { return self._s[1304]! } + public var ScheduledMessages_EmptyPlaceholder: String { return self._s[1305]! } public func Message_StickerText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1307]!, self._r[1307]!, [_0]) + return formatWithArgumentRanges(self._s[1306]!, self._r[1306]!, [_0]) } - public var AuthSessions_TerminateOtherSessionsHelp: String { return self._s[1308]! } - public var StickerPacksSettings_AnimatedStickers: String { return self._s[1309]! } - public var Month_ShortJanuary: String { return self._s[1310]! } - public var Conversation_UnreadMessages: String { return self._s[1311]! } - public var Conversation_PrivateChannelTooltip: String { return self._s[1313]! } - public var Call_VoiceOver_VideoCallCanceled: String { return self._s[1314]! } - public var PrivacySettings_DeleteAccountTitle: String { return self._s[1316]! } - public var Channel_Members_AddBannedErrorAdmin: String { return self._s[1317]! } + public var AuthSessions_TerminateOtherSessionsHelp: String { return self._s[1307]! } + public var StickerPacksSettings_AnimatedStickers: String { return self._s[1308]! } + public var Month_ShortJanuary: String { return self._s[1309]! } + public var Conversation_UnreadMessages: String { return self._s[1310]! } + public var Conversation_PrivateChannelTooltip: String { return self._s[1312]! } + public var Call_VoiceOver_VideoCallCanceled: String { return self._s[1313]! } + public var PrivacySettings_DeleteAccountTitle: String { return self._s[1315]! } + public var Channel_Members_AddBannedErrorAdmin: String { return self._s[1316]! } public func Conversation_ShareMyPhoneNumberConfirmation(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1321]!, self._r[1321]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1320]!, self._r[1320]!, [_1, _2]) } - public var Widget_ApplicationLocked: String { return self._s[1322]! } + public var Widget_ApplicationLocked: String { return self._s[1321]! } public func TextFormat_AddLinkText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1323]!, self._r[1323]!, [_0]) + return formatWithArgumentRanges(self._s[1322]!, self._r[1322]!, [_0]) } - public var Common_TakePhotoOrVideo: String { return self._s[1324]! } - public var Passport_Language_ru: String { return self._s[1326]! } - public var MediaPicker_VideoMuteDescription: String { return self._s[1327]! } - public var EditTheme_ErrorLinkTaken: String { return self._s[1328]! } + public var Common_TakePhotoOrVideo: String { return self._s[1323]! } + public var Passport_Language_ru: String { return self._s[1325]! } + public var MediaPicker_VideoMuteDescription: String { return self._s[1326]! } + public var EditTheme_ErrorLinkTaken: String { return self._s[1327]! } public func Group_EditAdmin_RankInfo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1330]!, self._r[1330]!, [_0]) + return formatWithArgumentRanges(self._s[1329]!, self._r[1329]!, [_0]) } - public var VoiceChat_ShareShort: String { return self._s[1331]! } - public var Channel_Members_AddAdminErrorBlacklisted: String { return self._s[1332]! } - public var Conversation_Owner: String { return self._s[1334]! } - public var Settings_FAQ_Intro: String { return self._s[1335]! } - public var PhotoEditor_QualityLow: String { return self._s[1337]! } - public var Widget_GalleryTitle: String { return self._s[1338]! } - public var Call_End: String { return self._s[1339]! } - public var StickerPacksSettings_FeaturedPacks: String { return self._s[1341]! } - public var Privacy_ContactsSyncHelp: String { return self._s[1342]! } - public var OldChannels_NoticeUpgradeText: String { return self._s[1346]! } - public var Conversation_Call: String { return self._s[1348]! } - public var Watch_MessageView_Title: String { return self._s[1349]! } + public var VoiceChat_ShareShort: String { return self._s[1330]! } + public var Channel_Members_AddAdminErrorBlacklisted: String { return self._s[1331]! } + public var Conversation_Owner: String { return self._s[1333]! } + public var Settings_FAQ_Intro: String { return self._s[1334]! } + public var PhotoEditor_QualityLow: String { return self._s[1336]! } + public var Widget_GalleryTitle: String { return self._s[1337]! } + public var Call_End: String { return self._s[1338]! } + public var StickerPacksSettings_FeaturedPacks: String { return self._s[1340]! } + public var Privacy_ContactsSyncHelp: String { return self._s[1341]! } + public var OldChannels_NoticeUpgradeText: String { return self._s[1345]! } + public var Conversation_Call: String { return self._s[1347]! } + public var Watch_MessageView_Title: String { return self._s[1348]! } public func Notification_RenamedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1350]!, self._r[1350]!, [_0]) + return formatWithArgumentRanges(self._s[1349]!, self._r[1349]!, [_0]) } - public var Passport_PasswordCompleteSetup: String { return self._s[1351]! } + public var Passport_PasswordCompleteSetup: String { return self._s[1350]! } public func Notification_ChangedGroupVideo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1352]!, self._r[1352]!, [_0]) + return formatWithArgumentRanges(self._s[1351]!, self._r[1351]!, [_0]) } public func TwoFactorSetup_EmailVerification_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1354]!, self._r[1354]!, [_0]) + return formatWithArgumentRanges(self._s[1353]!, self._r[1353]!, [_0]) } - public var Map_Location: String { return self._s[1355]! } - public var Watch_MessageView_ViewOnPhone: String { return self._s[1356]! } - public var Login_CountryCode: String { return self._s[1357]! } - public var Channel_DiscussionGroup_PrivateGroup: String { return self._s[1359]! } - public var ChatState_ConnectingToProxy: String { return self._s[1360]! } - public var Login_CallRequestState3: String { return self._s[1361]! } - public var NetworkUsageSettings_MediaAudioDataSection: String { return self._s[1364]! } - public var SocksProxySetup_ProxyStatusConnecting: String { return self._s[1365]! } - public var Widget_ChatsGalleryDescription: String { return self._s[1367]! } - public var PrivacyLastSeenSettings_NeverShareWith_Placeholder: String { return self._s[1369]! } - public var InstantPage_FontSanFrancisco: String { return self._s[1370]! } - public var Call_StatusEnded: String { return self._s[1371]! } + public var Map_Location: String { return self._s[1354]! } + public var Watch_MessageView_ViewOnPhone: String { return self._s[1355]! } + public var Login_CountryCode: String { return self._s[1356]! } + public var Channel_DiscussionGroup_PrivateGroup: String { return self._s[1358]! } + public var ChatState_ConnectingToProxy: String { return self._s[1359]! } + public var Login_CallRequestState3: String { return self._s[1360]! } + public var NetworkUsageSettings_MediaAudioDataSection: String { return self._s[1363]! } + public var SocksProxySetup_ProxyStatusConnecting: String { return self._s[1364]! } + public var Widget_ChatsGalleryDescription: String { return self._s[1366]! } + public var PrivacyLastSeenSettings_NeverShareWith_Placeholder: String { return self._s[1368]! } + public var InstantPage_FontSanFrancisco: String { return self._s[1369]! } + public var Call_StatusEnded: String { return self._s[1370]! } public func Checkout_SuccessfulTooltip(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1374]!, self._r[1374]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1373]!, self._r[1373]!, [_1, _2]) } - public var MusicPlayer_VoiceNote: String { return self._s[1375]! } - public var ChatImportActivity_ErrorUserBlocked: String { return self._s[1376]! } + public var MusicPlayer_VoiceNote: String { return self._s[1374]! } + public var ChatImportActivity_ErrorUserBlocked: String { return self._s[1375]! } public func PUSH_CHANNEL_MESSAGE_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1377]!, self._r[1377]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1376]!, self._r[1376]!, [_1, _2]) } - public var VoiceOver_MessageContextShare: String { return self._s[1378]! } - public var ProfilePhoto_SearchWeb: String { return self._s[1379]! } - public var EditProfile_Title: String { return self._s[1380]! } + public var VoiceOver_MessageContextShare: String { return self._s[1377]! } + public var ProfilePhoto_SearchWeb: String { return self._s[1378]! } + public var EditProfile_Title: String { return self._s[1379]! } public func Notification_PinnedQuizMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1381]!, self._r[1381]!, [_0]) + return formatWithArgumentRanges(self._s[1380]!, self._r[1380]!, [_0]) } - public var VoiceChat_Unmute: String { return self._s[1382]! } - public var ChangePhoneNumberCode_CodePlaceholder: String { return self._s[1383]! } - public var NetworkUsageSettings_ResetStats: String { return self._s[1385]! } - public var NetworkUsageSettings_GeneralDataSection: String { return self._s[1386]! } - public var StickerPackActionInfo_AddedTitle: String { return self._s[1387]! } - public var Channel_BanUser_PermissionSendStickersAndGifs: String { return self._s[1388]! } + public var VoiceChat_Unmute: String { return self._s[1381]! } + public var ChangePhoneNumberCode_CodePlaceholder: String { return self._s[1382]! } + public var NetworkUsageSettings_ResetStats: String { return self._s[1384]! } + public var NetworkUsageSettings_GeneralDataSection: String { return self._s[1385]! } + public var StickerPackActionInfo_AddedTitle: String { return self._s[1386]! } + public var Channel_BanUser_PermissionSendStickersAndGifs: String { return self._s[1387]! } public func Call_ParticipantVideoVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1389]!, self._r[1389]!, [_0]) + return formatWithArgumentRanges(self._s[1388]!, self._r[1388]!, [_0]) } - public var Location_ProximityNotification_Title: String { return self._s[1390]! } - public var AuthSessions_AddDeviceIntro_Text1: String { return self._s[1391]! } - public var Passport_Identity_LatinNameHelp: String { return self._s[1394]! } - public var AuthSessions_AddDeviceIntro_Text2: String { return self._s[1395]! } - public var Stats_GroupMembersTitle: String { return self._s[1396]! } - public var AuthSessions_AddDeviceIntro_Text3: String { return self._s[1397]! } - public var InviteLink_InviteLinkRevoked: String { return self._s[1398]! } - public var Contacts_PermissionsSuppressWarningText: String { return self._s[1399]! } - public var OpenFile_PotentiallyDangerousContentAlert: String { return self._s[1400]! } - public var Settings_SetUsername: String { return self._s[1401]! } - public var GroupInfo_ActionRestrict: String { return self._s[1402]! } - public var SettingsSearch_Synonyms_SavedMessages: String { return self._s[1403]! } + public var Location_ProximityNotification_Title: String { return self._s[1389]! } + public var AuthSessions_AddDeviceIntro_Text1: String { return self._s[1390]! } + public var Passport_Identity_LatinNameHelp: String { return self._s[1393]! } + public var AuthSessions_AddDeviceIntro_Text2: String { return self._s[1394]! } + public var Stats_GroupMembersTitle: String { return self._s[1395]! } + public var AuthSessions_AddDeviceIntro_Text3: String { return self._s[1396]! } + public var InviteLink_InviteLinkRevoked: String { return self._s[1397]! } + public var Contacts_PermissionsSuppressWarningText: String { return self._s[1398]! } + public var OpenFile_PotentiallyDangerousContentAlert: String { return self._s[1399]! } + public var Settings_SetUsername: String { return self._s[1400]! } + public var GroupInfo_ActionRestrict: String { return self._s[1401]! } + public var SettingsSearch_Synonyms_SavedMessages: String { return self._s[1402]! } public func Time_PreciseDate_m2(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1404]!, self._r[1404]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1403]!, self._r[1403]!, [_1, _2, _3]) } - public var Notifications_DisplayNamesOnLockScreenInfoWithLink: String { return self._s[1406]! } - public var Notification_Exceptions_AlwaysOff: String { return self._s[1407]! } - public var Conversation_ContextMenuDelete: String { return self._s[1408]! } - public var Privacy_Calls_WhoCanCallMe: String { return self._s[1409]! } - public var ChatList_PsaAlert_covid: String { return self._s[1412]! } - public var VoiceOver_SilentPostOn: String { return self._s[1413]! } - public var DialogList_Pin: String { return self._s[1414]! } - public var Channel_AdminLog_CanInviteUsersViaLink: String { return self._s[1415]! } - public var PrivacySettings_SecurityTitle: String { return self._s[1416]! } - public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[1417]! } - public var PeopleNearby_Groups: String { return self._s[1418]! } - public var Message_File: String { return self._s[1419]! } - public var Calls_NoCallsPlaceholder: String { return self._s[1420]! } - public var ChatList_GenericPsaLabel: String { return self._s[1423]! } - public var UserInfo_LastNamePlaceholder: String { return self._s[1424]! } - public var IntentsSettings_Reset: String { return self._s[1426]! } - public var Call_ConnectionErrorTitle: String { return self._s[1427]! } - public var PhotoEditor_SaturationTool: String { return self._s[1428]! } - public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[1429]! } - public var SettingsSearch_Synonyms_Stickers_ArchivedPacks: String { return self._s[1430]! } - public var Conversation_SearchNoResults: String { return self._s[1431]! } - public var Channel_DiscussionGroup_PrivateChannel: String { return self._s[1432]! } - public var Map_OpenInWaze: String { return self._s[1433]! } - public var InviteLink_PeopleJoinedNone: String { return self._s[1434]! } - public var WallpaperPreview_Title: String { return self._s[1435]! } + public var Notifications_DisplayNamesOnLockScreenInfoWithLink: String { return self._s[1405]! } + public var Notification_Exceptions_AlwaysOff: String { return self._s[1406]! } + public var Conversation_ContextMenuDelete: String { return self._s[1407]! } + public var Privacy_Calls_WhoCanCallMe: String { return self._s[1408]! } + public var ChatList_PsaAlert_covid: String { return self._s[1411]! } + public var VoiceOver_SilentPostOn: String { return self._s[1412]! } + public var DialogList_Pin: String { return self._s[1413]! } + public var Channel_AdminLog_CanInviteUsersViaLink: String { return self._s[1414]! } + public var PrivacySettings_SecurityTitle: String { return self._s[1415]! } + public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[1416]! } + public var PeopleNearby_Groups: String { return self._s[1417]! } + public var Message_File: String { return self._s[1418]! } + public var Calls_NoCallsPlaceholder: String { return self._s[1419]! } + public var ChatList_GenericPsaLabel: String { return self._s[1422]! } + public var UserInfo_LastNamePlaceholder: String { return self._s[1423]! } + public var IntentsSettings_Reset: String { return self._s[1425]! } + public var Call_ConnectionErrorTitle: String { return self._s[1426]! } + public var PhotoEditor_SaturationTool: String { return self._s[1427]! } + public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[1428]! } + public var SettingsSearch_Synonyms_Stickers_ArchivedPacks: String { return self._s[1429]! } + public var Conversation_SearchNoResults: String { return self._s[1430]! } + public var Channel_DiscussionGroup_PrivateChannel: String { return self._s[1431]! } + public var Map_OpenInWaze: String { return self._s[1432]! } + public var InviteLink_PeopleJoinedNone: String { return self._s[1433]! } + public var WallpaperPreview_Title: String { return self._s[1434]! } public func Passport_AcceptHelp(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1437]!, self._r[1437]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1436]!, self._r[1436]!, [_1, _2]) } - public var AuthSessions_AddDeviceIntro_Title: String { return self._s[1438]! } - public var VoiceOver_Chat_RecordModeVideoMessageInfo: String { return self._s[1439]! } - public var VoiceOver_Chat_ChannelInfo: String { return self._s[1440]! } - public var Conversation_ImageCopied: String { return self._s[1441]! } - public var Passport_Identity_OneOfTypeInternalPassport: String { return self._s[1442]! } - public var Notifications_PermissionsUnreachableTitle: String { return self._s[1444]! } - public var Stats_Total: String { return self._s[1447]! } - public var Stats_GroupMessages: String { return self._s[1448]! } - public var TwoFactorSetup_Email_SkipAction: String { return self._s[1449]! } - public var CheckoutInfo_ErrorPhoneInvalid: String { return self._s[1450]! } - public var VoiceChat_You: String { return self._s[1451]! } - public var VoiceChat_DisplayAsInfoGroup: String { return self._s[1452]! } - public var Passport_Identity_Translation: String { return self._s[1453]! } - public var Notifications_TextTone: String { return self._s[1456]! } - public var Settings_RemoveConfirmation: String { return self._s[1458]! } - public var ScheduledMessages_Delete: String { return self._s[1459]! } - public var Channel_AdminLog_BanEmbedLinks: String { return self._s[1460]! } - public var Passport_PasswordNext: String { return self._s[1461]! } + public var AuthSessions_AddDeviceIntro_Title: String { return self._s[1437]! } + public var VoiceOver_Chat_RecordModeVideoMessageInfo: String { return self._s[1438]! } + public var VoiceOver_Chat_ChannelInfo: String { return self._s[1439]! } + public var Conversation_ImageCopied: String { return self._s[1440]! } + public var Passport_Identity_OneOfTypeInternalPassport: String { return self._s[1441]! } + public var Notifications_PermissionsUnreachableTitle: String { return self._s[1443]! } + public var Stats_Total: String { return self._s[1446]! } + public var Stats_GroupMessages: String { return self._s[1447]! } + public var TwoFactorSetup_Email_SkipAction: String { return self._s[1448]! } + public var CheckoutInfo_ErrorPhoneInvalid: String { return self._s[1449]! } + public var VoiceChat_You: String { return self._s[1450]! } + public var VoiceChat_DisplayAsInfoGroup: String { return self._s[1451]! } + public var Passport_Identity_Translation: String { return self._s[1452]! } + public var Notifications_TextTone: String { return self._s[1455]! } + public var Settings_RemoveConfirmation: String { return self._s[1457]! } + public var ScheduledMessages_Delete: String { return self._s[1458]! } + public var Channel_AdminLog_BanEmbedLinks: String { return self._s[1459]! } + public var Passport_PasswordNext: String { return self._s[1460]! } public func PUSH_ENCRYPTED_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1462]!, self._r[1462]!, [_1]) + return formatWithArgumentRanges(self._s[1461]!, self._r[1461]!, [_1]) } - public var Passport_Address_EditBankStatement: String { return self._s[1463]! } - public var PhotoEditor_ShadowsTool: String { return self._s[1464]! } - public var Notification_VideoCallMissed: String { return self._s[1465]! } - public var AccessDenied_CameraDisabled: String { return self._s[1467]! } - public var AuthSessions_AddDevice_ScanInfo: String { return self._s[1468]! } - public var Notifications_ExceptionsMuted: String { return self._s[1469]! } - public var Conversation_ScheduleMessage_SendWhenOnline: String { return self._s[1470]! } - public var Channel_BlackList_Title: String { return self._s[1471]! } - public var PasscodeSettings_4DigitCode: String { return self._s[1472]! } - public var NotificationsSound_Bamboo: String { return self._s[1473]! } - public var PrivacySettings_LastSeenContacts: String { return self._s[1474]! } - public var Passport_Address_TypeUtilityBill: String { return self._s[1475]! } - public var Passport_Address_CountryPlaceholder: String { return self._s[1476]! } - public var GroupPermission_SectionTitle: String { return self._s[1477]! } - public var InviteLink_ContextRevoke: String { return self._s[1478]! } + public var Passport_Address_EditBankStatement: String { return self._s[1462]! } + public var PhotoEditor_ShadowsTool: String { return self._s[1463]! } + public var Notification_VideoCallMissed: String { return self._s[1464]! } + public var AccessDenied_CameraDisabled: String { return self._s[1466]! } + public var AuthSessions_AddDevice_ScanInfo: String { return self._s[1467]! } + public var Notifications_ExceptionsMuted: String { return self._s[1468]! } + public var Conversation_ScheduleMessage_SendWhenOnline: String { return self._s[1469]! } + public var Channel_BlackList_Title: String { return self._s[1470]! } + public var PasscodeSettings_4DigitCode: String { return self._s[1471]! } + public var NotificationsSound_Bamboo: String { return self._s[1472]! } + public var PrivacySettings_LastSeenContacts: String { return self._s[1473]! } + public var Passport_Address_TypeUtilityBill: String { return self._s[1474]! } + public var Passport_Address_CountryPlaceholder: String { return self._s[1475]! } + public var GroupPermission_SectionTitle: String { return self._s[1476]! } + public var InviteLink_ContextRevoke: String { return self._s[1477]! } public func Notification_InvitedMultiple(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1479]!, self._r[1479]!, [_0, _1]) + return formatWithArgumentRanges(self._s[1478]!, self._r[1478]!, [_0, _1]) } - public var CheckoutInfo_ShippingInfoStatePlaceholder: String { return self._s[1480]! } - public var Channel_LeaveChannel: String { return self._s[1481]! } - public var Watch_Notification_Joined: String { return self._s[1482]! } - public var PeerInfo_ButtonMore: String { return self._s[1483]! } - public var Passport_FieldEmailHelp: String { return self._s[1484]! } - public var ChatList_Context_Pin: String { return self._s[1485]! } + public var CheckoutInfo_ShippingInfoStatePlaceholder: String { return self._s[1479]! } + public var Channel_LeaveChannel: String { return self._s[1480]! } + public var Watch_Notification_Joined: String { return self._s[1481]! } + public var PeerInfo_ButtonMore: String { return self._s[1482]! } + public var Passport_FieldEmailHelp: String { return self._s[1483]! } + public var ChatList_Context_Pin: String { return self._s[1484]! } public func Time_MonthOfYear_m9(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1486]!, self._r[1486]!, [_0]) + return formatWithArgumentRanges(self._s[1485]!, self._r[1485]!, [_0]) } - public var Group_Location_CreateInThisPlace: String { return self._s[1487]! } - public var PhotoEditor_QualityVeryHigh: String { return self._s[1488]! } - public var Tour_Title5: String { return self._s[1489]! } + public var Group_Location_CreateInThisPlace: String { return self._s[1486]! } + public var PhotoEditor_QualityVeryHigh: String { return self._s[1487]! } + public var Tour_Title5: String { return self._s[1488]! } public func PUSH_CHAT_MESSAGE_FWD(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1490]!, self._r[1490]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1489]!, self._r[1489]!, [_1, _2]) } - public var Passport_Language_en: String { return self._s[1491]! } - public var Checkout_Name: String { return self._s[1492]! } - public var ChatImport_Title: String { return self._s[1493]! } + public var Passport_Language_en: String { return self._s[1490]! } + public var Checkout_Name: String { return self._s[1491]! } + public var ChatImport_Title: String { return self._s[1492]! } public func NetworkUsageSettings_WifiUsageSince(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1494]!, self._r[1494]!, [_0]) + return formatWithArgumentRanges(self._s[1493]!, self._r[1493]!, [_0]) } - public var PhotoEditor_EnhanceTool: String { return self._s[1495]! } + public var PhotoEditor_EnhanceTool: String { return self._s[1494]! } public func PUSH_CHAT_DELETE_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1496]!, self._r[1496]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1495]!, self._r[1495]!, [_1, _2]) } public func VoiceChat_UserCanNowSpeak(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1497]!, self._r[1497]!, [_0]) + return formatWithArgumentRanges(self._s[1496]!, self._r[1496]!, [_0]) } - public var PeerInfo_CustomizeNotifications: String { return self._s[1498]! } + public var PeerInfo_CustomizeNotifications: String { return self._s[1497]! } public func Login_TermsOfService_ProceedBot(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1499]!, self._r[1499]!, [_0]) + return formatWithArgumentRanges(self._s[1498]!, self._r[1498]!, [_0]) } - public var Group_ErrorSendRestrictedMedia: String { return self._s[1500]! } + public var Group_ErrorSendRestrictedMedia: String { return self._s[1499]! } public func UserInfo_NotificationsDefaultSound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1501]!, self._r[1501]!, [_0]) + return formatWithArgumentRanges(self._s[1500]!, self._r[1500]!, [_0]) } - public var Login_UnknownError: String { return self._s[1502]! } - public var Conversation_ImportedMessageHint: String { return self._s[1504]! } + public var Login_UnknownError: String { return self._s[1501]! } + public var Conversation_ImportedMessageHint: String { return self._s[1503]! } public func VoiceChat_ForwardTooltip_Chat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1505]!, self._r[1505]!, [_0]) + return formatWithArgumentRanges(self._s[1504]!, self._r[1504]!, [_0]) } - public var Passport_Identity_TypeDriversLicense: String { return self._s[1507]! } - public var ChatList_AutoarchiveSuggestion_Title: String { return self._s[1508]! } - public var Watch_PhotoView_Title: String { return self._s[1509]! } - public var Appearance_ThemePreview_ChatList_3_Text: String { return self._s[1510]! } - public var Checkout_TotalAmount: String { return self._s[1511]! } - public var ChatList_RemoveFolderAction: String { return self._s[1512]! } + public var Passport_Identity_TypeDriversLicense: String { return self._s[1506]! } + public var ChatList_AutoarchiveSuggestion_Title: String { return self._s[1507]! } + public var Watch_PhotoView_Title: String { return self._s[1508]! } + public var Appearance_ThemePreview_ChatList_3_Text: String { return self._s[1509]! } + public var Checkout_TotalAmount: String { return self._s[1510]! } + public var ChatList_RemoveFolderAction: String { return self._s[1511]! } public func GroupInfo_Permissions_BroadcastConvertInfo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1513]!, self._r[1513]!, [_0]) + return formatWithArgumentRanges(self._s[1512]!, self._r[1512]!, [_0]) } - public var GroupInfo_SetGroupPhoto: String { return self._s[1514]! } - public var Watch_AppName: String { return self._s[1515]! } + public var GroupInfo_SetGroupPhoto: String { return self._s[1513]! } + public var Watch_AppName: String { return self._s[1514]! } public func PUSH_PINNED_GAME_SCORE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1516]!, self._r[1516]!, [_1]) + return formatWithArgumentRanges(self._s[1515]!, self._r[1515]!, [_1]) } - public var Channel_Username_CheckingUsername: String { return self._s[1517]! } - public var ContactList_Context_Call: String { return self._s[1518]! } - public var ChatList_ReorderTabs: String { return self._s[1519]! } - public var Watch_ChatList_Compose: String { return self._s[1520]! } + public var Channel_Username_CheckingUsername: String { return self._s[1516]! } + public var ContactList_Context_Call: String { return self._s[1517]! } + public var ChatList_ReorderTabs: String { return self._s[1518]! } + public var Watch_ChatList_Compose: String { return self._s[1519]! } public func Conversation_LiveLocationYouAnd(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1521]!, self._r[1521]!, [_0]) + return formatWithArgumentRanges(self._s[1520]!, self._r[1520]!, [_0]) } - public var Channel_AdminLog_EmptyFilterTitle: String { return self._s[1522]! } - public var ArchivedChats_IntroTitle1: String { return self._s[1523]! } + public var Channel_AdminLog_EmptyFilterTitle: String { return self._s[1521]! } + public var ArchivedChats_IntroTitle1: String { return self._s[1522]! } public func PUSH_ENCRYPTION_ACCEPT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1524]!, self._r[1524]!, [_1]) + return formatWithArgumentRanges(self._s[1523]!, self._r[1523]!, [_1]) } - public var Call_StatusRequesting: String { return self._s[1526]! } - public var Checkout_TotalPaidAmount: String { return self._s[1527]! } - public var Weekday_Friday: String { return self._s[1529]! } - public var CreateGroup_ChannelsTooMuch: String { return self._s[1530]! } + public var Call_StatusRequesting: String { return self._s[1525]! } + public var Checkout_TotalPaidAmount: String { return self._s[1526]! } + public var Weekday_Friday: String { return self._s[1528]! } + public var CreateGroup_ChannelsTooMuch: String { return self._s[1529]! } public func ChatImport_SelectionConfirmationUserWithoutTitle(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1531]!, self._r[1531]!, [_0]) + return formatWithArgumentRanges(self._s[1530]!, self._r[1530]!, [_0]) } - public var Watch_ChatList_NoConversationsText: String { return self._s[1532]! } - public var Group_Members_AddMembersHelp: String { return self._s[1533]! } + public var Watch_ChatList_NoConversationsText: String { return self._s[1531]! } + public var Group_Members_AddMembersHelp: String { return self._s[1532]! } public func Channel_AdminLog_MessageChangedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1534]!, self._r[1534]!, [_0]) + return formatWithArgumentRanges(self._s[1533]!, self._r[1533]!, [_0]) } - public var SecretVideo_Title: String { return self._s[1535]! } + public var SecretVideo_Title: String { return self._s[1534]! } public func Notification_PinnedStickerMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1538]!, self._r[1538]!, [_0]) + return formatWithArgumentRanges(self._s[1537]!, self._r[1537]!, [_0]) } - public var Undo_Undo: String { return self._s[1539]! } - public var Watch_Microphone_Access: String { return self._s[1540]! } + public var Undo_Undo: String { return self._s[1538]! } + public var Watch_Microphone_Access: String { return self._s[1539]! } public func ChatImport_SelectionConfirmationGroupWithTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1541]!, self._r[1541]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1540]!, self._r[1540]!, [_1, _2]) } public func PUSH_CHAT_MESSAGE_PHOTO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1542]!, self._r[1542]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1541]!, self._r[1541]!, [_1, _2]) } public func ChatList_Search_NoResultsQueryDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1543]!, self._r[1543]!, [_0]) + return formatWithArgumentRanges(self._s[1542]!, self._r[1542]!, [_0]) } - public var Checkout_NewCard_PostcodeTitle: String { return self._s[1545]! } - public var TwoFactorSetup_Intro_Action: String { return self._s[1546]! } - public var Passport_Language_ne: String { return self._s[1547]! } - public var TwoStepAuth_EmailHelp: String { return self._s[1549]! } - public var Profile_MessageLifetime2s: String { return self._s[1550]! } + public var Checkout_NewCard_PostcodeTitle: String { return self._s[1544]! } + public var TwoFactorSetup_Intro_Action: String { return self._s[1545]! } + public var Passport_Language_ne: String { return self._s[1546]! } + public var TwoStepAuth_EmailHelp: String { return self._s[1548]! } + public var Profile_MessageLifetime2s: String { return self._s[1549]! } public func Conversation_MessageDialogRetryAll(_ _1: Int) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1552]!, self._r[1552]!, ["\(_1)"]) + return formatWithArgumentRanges(self._s[1551]!, self._r[1551]!, ["\(_1)"]) } public func Items_NOfM(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1553]!, self._r[1553]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1552]!, self._r[1552]!, [_1, _2]) } - public var VoiceChat_SendPublicLinkSend: String { return self._s[1554]! } - public var Media_LimitedAccessText: String { return self._s[1555]! } + public var VoiceChat_SendPublicLinkSend: String { return self._s[1553]! } + public var Media_LimitedAccessText: String { return self._s[1554]! } public func PUSH_CHAT_TITLE_EDITED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1556]!, self._r[1556]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1555]!, self._r[1555]!, [_1, _2]) } - public var GroupPermission_NoPinMessages: String { return self._s[1557]! } + public var GroupPermission_NoPinMessages: String { return self._s[1556]! } public func Notification_VoiceChatStarted(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1558]!, self._r[1558]!, [_1]) + return formatWithArgumentRanges(self._s[1557]!, self._r[1557]!, [_1]) } public func Notification_CreatedChat(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1559]!, self._r[1559]!, [_0]) + return formatWithArgumentRanges(self._s[1558]!, self._r[1558]!, [_0]) } - public var FastTwoStepSetup_HintHelp: String { return self._s[1560]! } - public var VoiceOver_SilentPostOff: String { return self._s[1561]! } - public var WallpaperSearch_ColorRed: String { return self._s[1562]! } - public var Watch_ConnectionDescription: String { return self._s[1563]! } - public var Notification_Exceptions_AddException: String { return self._s[1564]! } - public var LocalGroup_IrrelevantWarning: String { return self._s[1565]! } - public var VoiceOver_MessageContextDelete: String { return self._s[1566]! } - public var LogoutOptions_AlternativeOptionsSection: String { return self._s[1567]! } - public var Passport_PasswordPlaceholder: String { return self._s[1568]! } - public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[1569]! } - public var Stats_MessageInteractionsTitle: String { return self._s[1570]! } - public var Appearance_ThemeCarouselClassic: String { return self._s[1571]! } - public var TwoFactorSetup_Email_SkipConfirmationText: String { return self._s[1573]! } - public var Channel_AdminLog_PinMessages: String { return self._s[1574]! } - public var Passport_Address_AddRentalAgreement: String { return self._s[1576]! } - public var Watch_Message_Game: String { return self._s[1577]! } - public var PrivacyLastSeenSettings_NeverShareWith: String { return self._s[1578]! } - public var PrivacyPolicy_DeclineLastWarning: String { return self._s[1579]! } - public var EditTheme_FileReadError: String { return self._s[1580]! } - public var Group_ErrorAddBlocked: String { return self._s[1581]! } - public var CallSettings_UseLessDataLongDescription: String { return self._s[1582]! } + public var FastTwoStepSetup_HintHelp: String { return self._s[1559]! } + public var VoiceOver_SilentPostOff: String { return self._s[1560]! } + public var WallpaperSearch_ColorRed: String { return self._s[1561]! } + public var Watch_ConnectionDescription: String { return self._s[1562]! } + public var Notification_Exceptions_AddException: String { return self._s[1563]! } + public var LocalGroup_IrrelevantWarning: String { return self._s[1564]! } + public var VoiceOver_MessageContextDelete: String { return self._s[1565]! } + public var LogoutOptions_AlternativeOptionsSection: String { return self._s[1566]! } + public var Passport_PasswordPlaceholder: String { return self._s[1567]! } + public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[1568]! } + public var Stats_MessageInteractionsTitle: String { return self._s[1569]! } + public var Appearance_ThemeCarouselClassic: String { return self._s[1570]! } + public var TwoFactorSetup_Email_SkipConfirmationText: String { return self._s[1572]! } + public var Channel_AdminLog_PinMessages: String { return self._s[1573]! } + public var Passport_Address_AddRentalAgreement: String { return self._s[1575]! } + public var Watch_Message_Game: String { return self._s[1576]! } + public var PrivacyLastSeenSettings_NeverShareWith: String { return self._s[1577]! } + public var PrivacyPolicy_DeclineLastWarning: String { return self._s[1578]! } + public var EditTheme_FileReadError: String { return self._s[1579]! } + public var Group_ErrorAddBlocked: String { return self._s[1580]! } + public var CallSettings_UseLessDataLongDescription: String { return self._s[1581]! } public func PUSH_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1584]!, self._r[1584]!, [_1]) + return formatWithArgumentRanges(self._s[1583]!, self._r[1583]!, [_1]) } - public var GroupRemoved_ViewChannelInfo: String { return self._s[1585]! } + public var GroupRemoved_ViewChannelInfo: String { return self._s[1584]! } public func UserInfo_BlockConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1586]!, self._r[1586]!, [_0]) + return formatWithArgumentRanges(self._s[1585]!, self._r[1585]!, [_0]) } - public var CheckoutInfo_ShippingInfoAddress2Placeholder: String { return self._s[1587]! } - public var TwoFactorSetup_EmailVerification_Action: String { return self._s[1588]! } + public var CheckoutInfo_ShippingInfoAddress2Placeholder: String { return self._s[1586]! } + public var TwoFactorSetup_EmailVerification_Action: String { return self._s[1587]! } public func Username_LinkHint(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1589]!, self._r[1589]!, [_0]) + return formatWithArgumentRanges(self._s[1588]!, self._r[1588]!, [_0]) } - public var ConversationProfile_ErrorCreatingConversation: String { return self._s[1590]! } - public var Bot_GroupStatusReadsHistory: String { return self._s[1591]! } - public var PhotoEditor_CurvesRed: String { return self._s[1592]! } - public var InstantPage_TapToOpenLink: String { return self._s[1593]! } - public var InviteLink_PeopleJoinedShortNoneExpired: String { return self._s[1594]! } - public var FastTwoStepSetup_PasswordHelp: String { return self._s[1595]! } - public var Conversation_DiscussionNotStarted: String { return self._s[1596]! } - public var Notification_CallMissedShort: String { return self._s[1597]! } + public var ConversationProfile_ErrorCreatingConversation: String { return self._s[1589]! } + public var Bot_GroupStatusReadsHistory: String { return self._s[1590]! } + public var PhotoEditor_CurvesRed: String { return self._s[1591]! } + public var InstantPage_TapToOpenLink: String { return self._s[1592]! } + public var InviteLink_PeopleJoinedShortNoneExpired: String { return self._s[1593]! } + public var FastTwoStepSetup_PasswordHelp: String { return self._s[1594]! } + public var Conversation_DiscussionNotStarted: String { return self._s[1595]! } + public var Notification_CallMissedShort: String { return self._s[1596]! } public func Notification_JoinedGroupByLink(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1598]!, self._r[1598]!, [_0]) + return formatWithArgumentRanges(self._s[1597]!, self._r[1597]!, [_0]) } - public var Conversation_DeleteMessagesForEveryone: String { return self._s[1599]! } - public var VoiceChat_UnpinVideo: String { return self._s[1600]! } - public var Permissions_SiriTitle_v0: String { return self._s[1601]! } - public var GroupInfo_AddUserLeftError: String { return self._s[1602]! } - public var Conversation_SendMessage_SendSilently: String { return self._s[1603]! } - public var Paint_Duplicate: String { return self._s[1604]! } - public var AttachmentMenu_WebSearch: String { return self._s[1605]! } - public var Bot_Stop: String { return self._s[1607]! } - public var Conversation_PrivateChannelTimeLimitedAlertTitle: String { return self._s[1608]! } - public var ReportGroupLocation_Report: String { return self._s[1609]! } - public var Compose_Create: String { return self._s[1610]! } - public var Stats_GroupViewers: String { return self._s[1611]! } - public var AutoDownloadSettings_Channels: String { return self._s[1612]! } - public var PhotoEditor_QualityHigh: String { return self._s[1613]! } - public var VoiceChat_Leave: String { return self._s[1614]! } - public var Call_Speaker: String { return self._s[1615]! } + public var Conversation_DeleteMessagesForEveryone: String { return self._s[1598]! } + public var VoiceChat_UnpinVideo: String { return self._s[1599]! } + public var Permissions_SiriTitle_v0: String { return self._s[1600]! } + public var GroupInfo_AddUserLeftError: String { return self._s[1601]! } + public var Conversation_SendMessage_SendSilently: String { return self._s[1602]! } + public var Paint_Duplicate: String { return self._s[1603]! } + public var AttachmentMenu_WebSearch: String { return self._s[1604]! } + public var Bot_Stop: String { return self._s[1606]! } + public var Conversation_PrivateChannelTimeLimitedAlertTitle: String { return self._s[1607]! } + public var ReportGroupLocation_Report: String { return self._s[1608]! } + public var Compose_Create: String { return self._s[1609]! } + public var Stats_GroupViewers: String { return self._s[1610]! } + public var AutoDownloadSettings_Channels: String { return self._s[1611]! } + public var PhotoEditor_QualityHigh: String { return self._s[1612]! } + public var VoiceChat_Leave: String { return self._s[1613]! } + public var Call_Speaker: String { return self._s[1614]! } public func ChatList_LeaveGroupConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1616]!, self._r[1616]!, [_0]) + return formatWithArgumentRanges(self._s[1615]!, self._r[1615]!, [_0]) } - public var Conversation_CloudStorage_ChatStatus: String { return self._s[1617]! } - public var Chat_AttachmentMultipleFilesDisabled: String { return self._s[1618]! } - public var ChatList_Context_AddToFolder: String { return self._s[1619]! } - public var InviteLink_QRCode_Info: String { return self._s[1620]! } - public var AutoremoveSetup_Title: String { return self._s[1621]! } - public var ChatList_DeleteForAllMembersConfirmationText: String { return self._s[1622]! } - public var Conversation_Unblock: String { return self._s[1623]! } - public var SettingsSearch_Synonyms_Proxy_UseForCalls: String { return self._s[1624]! } + public var Conversation_CloudStorage_ChatStatus: String { return self._s[1616]! } + public var Chat_AttachmentMultipleFilesDisabled: String { return self._s[1617]! } + public var ChatList_Context_AddToFolder: String { return self._s[1618]! } + public var InviteLink_QRCode_Info: String { return self._s[1619]! } + public var AutoremoveSetup_Title: String { return self._s[1620]! } + public var ChatList_DeleteForAllMembersConfirmationText: String { return self._s[1621]! } + public var Conversation_Unblock: String { return self._s[1622]! } + public var SettingsSearch_Synonyms_Proxy_UseForCalls: String { return self._s[1623]! } public func Time_PreciseDate_m8(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1625]!, self._r[1625]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[1624]!, self._r[1624]!, [_1, _2, _3]) } - public var Conversation_ContextMenuReply: String { return self._s[1626]! } - public var Contacts_SearchLabel: String { return self._s[1627]! } - public var Forward_ErrorPublicQuizDisabledInChannels: String { return self._s[1628]! } - public var Stats_GroupMessagesTitle: String { return self._s[1630]! } - public var Notification_CallCanceled: String { return self._s[1631]! } - public var VoiceOver_Chat_Selected: String { return self._s[1632]! } - public var NotificationsSound_Tremolo: String { return self._s[1634]! } - public var VoiceOver_AuthSessions_CurrentSession: String { return self._s[1635]! } - public var ChatList_Search_NoResultsDescription: String { return self._s[1636]! } - public var AccessDenied_PhotosAndVideos: String { return self._s[1637]! } - public var LogoutOptions_ClearCacheText: String { return self._s[1638]! } + public var Conversation_ContextMenuReply: String { return self._s[1625]! } + public var Contacts_SearchLabel: String { return self._s[1626]! } + public var Forward_ErrorPublicQuizDisabledInChannels: String { return self._s[1627]! } + public var Stats_GroupMessagesTitle: String { return self._s[1629]! } + public var Notification_CallCanceled: String { return self._s[1630]! } + public var VoiceOver_Chat_Selected: String { return self._s[1631]! } + public var NotificationsSound_Tremolo: String { return self._s[1633]! } + public var VoiceOver_AuthSessions_CurrentSession: String { return self._s[1634]! } + public var ChatList_Search_NoResultsDescription: String { return self._s[1635]! } + public var AccessDenied_PhotosAndVideos: String { return self._s[1636]! } + public var LogoutOptions_ClearCacheText: String { return self._s[1637]! } public func VoiceChat_DisplayAsSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1640]!, self._r[1640]!, [_0]) + return formatWithArgumentRanges(self._s[1639]!, self._r[1639]!, [_0]) } - public var VoiceOver_Chat_Sticker: String { return self._s[1641]! } - public var ChatListFolder_NameUnread: String { return self._s[1642]! } - public var PeerInfo_ButtonMessage: String { return self._s[1644]! } - public var InfoPlist_NSPhotoLibraryAddUsageDescription: String { return self._s[1645]! } - public var BlockedUsers_SelectUserTitle: String { return self._s[1646]! } - public var ChatSettings_Other: String { return self._s[1647]! } - public var UserInfo_NotificationsEnabled: String { return self._s[1648]! } - public var CreatePoll_OptionsHeader: String { return self._s[1649]! } - public var Appearance_RemoveThemeColorConfirmation: String { return self._s[1652]! } - public var Channel_Moderator_Title: String { return self._s[1653]! } + public var VoiceOver_Chat_Sticker: String { return self._s[1640]! } + public var ChatListFolder_NameUnread: String { return self._s[1641]! } + public var PeerInfo_ButtonMessage: String { return self._s[1643]! } + public var InfoPlist_NSPhotoLibraryAddUsageDescription: String { return self._s[1644]! } + public var BlockedUsers_SelectUserTitle: String { return self._s[1645]! } + public var ChatSettings_Other: String { return self._s[1646]! } + public var UserInfo_NotificationsEnabled: String { return self._s[1647]! } + public var CreatePoll_OptionsHeader: String { return self._s[1648]! } + public var Appearance_RemoveThemeColorConfirmation: String { return self._s[1651]! } + public var Channel_Moderator_Title: String { return self._s[1652]! } public func Conversation_ForwardTooltip_Chat_Many(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1654]!, self._r[1654]!, [_0]) + return formatWithArgumentRanges(self._s[1653]!, self._r[1653]!, [_0]) } public func UserInfo_ContactForwardTooltip_ManyChats_One(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1655]!, self._r[1655]!, [_0, _1]) + return formatWithArgumentRanges(self._s[1654]!, self._r[1654]!, [_0, _1]) } - public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[1656]! } - public var WallpaperColors_Title: String { return self._s[1657]! } - public var InviteLink_InviteLink: String { return self._s[1659]! } - public var PrivacyPolicy_DeclineMessage: String { return self._s[1660]! } - public var AutoDownloadSettings_VoiceMessagesTitle: String { return self._s[1661]! } - public var Your_card_was_declined: String { return self._s[1662]! } - public var SettingsSearch_FAQ: String { return self._s[1664]! } - public var EditTheme_Expand_Preview_IncomingReplyName: String { return self._s[1665]! } - public var Conversation_ReportSpamConfirmation: String { return self._s[1666]! } - public var OwnershipTransfer_SecurityCheck: String { return self._s[1668]! } - public var PrivacySettings_DataSettingsHelp: String { return self._s[1669]! } - public var Settings_About_Help: String { return self._s[1670]! } + public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[1655]! } + public var WallpaperColors_Title: String { return self._s[1656]! } + public var InviteLink_InviteLink: String { return self._s[1658]! } + public var PrivacyPolicy_DeclineMessage: String { return self._s[1659]! } + public var AutoDownloadSettings_VoiceMessagesTitle: String { return self._s[1660]! } + public var Your_card_was_declined: String { return self._s[1661]! } + public var SettingsSearch_FAQ: String { return self._s[1663]! } + public var EditTheme_Expand_Preview_IncomingReplyName: String { return self._s[1664]! } + public var Conversation_ReportSpamConfirmation: String { return self._s[1665]! } + public var OwnershipTransfer_SecurityCheck: String { return self._s[1667]! } + public var PrivacySettings_DataSettingsHelp: String { return self._s[1668]! } + public var Settings_About_Help: String { return self._s[1669]! } public func Channel_DiscussionGroup_HeaderGroupSet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1671]!, self._r[1671]!, [_0]) + return formatWithArgumentRanges(self._s[1670]!, self._r[1670]!, [_0]) } - public var Settings_Proxy: String { return self._s[1672]! } - public var TwoStepAuth_ResetAccountConfirmation: String { return self._s[1673]! } - public var Passport_Identity_TypePassportUploadScan: String { return self._s[1675]! } - public var NotificationsSound_Bell: String { return self._s[1676]! } - public var PrivacySettings_Title: String { return self._s[1678]! } - public var PrivacySettings_DataSettings: String { return self._s[1679]! } - public var ConversationMedia_Title: String { return self._s[1680]! } + public var Settings_Proxy: String { return self._s[1671]! } + public var TwoStepAuth_ResetAccountConfirmation: String { return self._s[1672]! } + public var Passport_Identity_TypePassportUploadScan: String { return self._s[1674]! } + public var NotificationsSound_Bell: String { return self._s[1675]! } + public var PrivacySettings_Title: String { return self._s[1677]! } + public var PrivacySettings_DataSettings: String { return self._s[1678]! } + public var ConversationMedia_Title: String { return self._s[1679]! } public func Channel_AdminLog_MessageAddedAdminName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1681]!, self._r[1681]!, [_1]) + return formatWithArgumentRanges(self._s[1680]!, self._r[1680]!, [_1]) } public func Conversation_EncryptedPlaceholderTitleIncoming(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1682]!, self._r[1682]!, [_0]) + return formatWithArgumentRanges(self._s[1681]!, self._r[1681]!, [_0]) } - public var PrivacySettings_BlockedPeersEmpty: String { return self._s[1683]! } - public var ReportPeer_ReasonPornography: String { return self._s[1685]! } - public var Privacy_Calls: String { return self._s[1687]! } - public var TwoFactorSetup_Email_Text: String { return self._s[1688]! } - public var Conversation_EncryptedDescriptionTitle: String { return self._s[1689]! } + public var PrivacySettings_BlockedPeersEmpty: String { return self._s[1682]! } + public var ReportPeer_ReasonPornography: String { return self._s[1684]! } + public var Privacy_Calls: String { return self._s[1686]! } + public var TwoFactorSetup_Email_Text: String { return self._s[1687]! } + public var Conversation_EncryptedDescriptionTitle: String { return self._s[1688]! } public func VoiceOver_Chat_MusicTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1690]!, self._r[1690]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1689]!, self._r[1689]!, [_1, _2]) } - public var Passport_Identity_FrontSideHelp: String { return self._s[1691]! } - public var InstantPage_VoiceOver_DecreaseFontSize: String { return self._s[1692]! } - public var GroupInfo_Permissions_SlowmodeHeader: String { return self._s[1694]! } - public var ContactList_Context_VideoCall: String { return self._s[1695]! } - public var Settings_SaveIncomingPhotos: String { return self._s[1696]! } - public var Passport_Identity_MiddleName: String { return self._s[1697]! } - public var MessagePoll_QuizNoUsers: String { return self._s[1698]! } + public var Passport_Identity_FrontSideHelp: String { return self._s[1690]! } + public var InstantPage_VoiceOver_DecreaseFontSize: String { return self._s[1691]! } + public var GroupInfo_Permissions_SlowmodeHeader: String { return self._s[1693]! } + public var ContactList_Context_VideoCall: String { return self._s[1694]! } + public var Settings_SaveIncomingPhotos: String { return self._s[1695]! } + public var Passport_Identity_MiddleName: String { return self._s[1696]! } + public var MessagePoll_QuizNoUsers: String { return self._s[1697]! } public func Channel_AdminLog_MutedParticipant(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1699]!, self._r[1699]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1698]!, self._r[1698]!, [_1, _2]) } - public var OldChannels_ChannelFormat: String { return self._s[1700]! } - public var Watch_Message_Call: String { return self._s[1701]! } - public var VoiceChat_OpenChannel: String { return self._s[1702]! } - public var Wallpaper_Title: String { return self._s[1703]! } - public var PasscodeSettings_TurnPasscodeOff: String { return self._s[1704]! } - public var IntentsSettings_SuggestedChatsSavedMessages: String { return self._s[1705]! } - public var ReportGroupLocation_Text: String { return self._s[1706]! } - public var InviteText_URL: String { return self._s[1707]! } - public var ClearCache_StorageServiceFiles: String { return self._s[1708]! } - public var MessageTimer_Custom: String { return self._s[1709]! } - public var Message_PinnedLocationMessage: String { return self._s[1710]! } + public var OldChannels_ChannelFormat: String { return self._s[1699]! } + public var Watch_Message_Call: String { return self._s[1700]! } + public var VoiceChat_OpenChannel: String { return self._s[1701]! } + public var Wallpaper_Title: String { return self._s[1702]! } + public var PasscodeSettings_TurnPasscodeOff: String { return self._s[1703]! } + public var IntentsSettings_SuggestedChatsSavedMessages: String { return self._s[1704]! } + public var ReportGroupLocation_Text: String { return self._s[1705]! } + public var InviteText_URL: String { return self._s[1706]! } + public var ClearCache_StorageServiceFiles: String { return self._s[1707]! } + public var MessageTimer_Custom: String { return self._s[1708]! } + public var Message_PinnedLocationMessage: String { return self._s[1709]! } public func VoiceOver_Chat_ContactOrganization(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1711]!, self._r[1711]!, [_0]) + return formatWithArgumentRanges(self._s[1710]!, self._r[1710]!, [_0]) } - public var EditTheme_UploadNewTheme: String { return self._s[1712]! } - public var ChatImportActivity_ErrorLimitExceeded: String { return self._s[1715]! } + public var EditTheme_UploadNewTheme: String { return self._s[1711]! } + public var ChatImportActivity_ErrorLimitExceeded: String { return self._s[1714]! } public func AutoDownloadSettings_UpToForAll(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1716]!, self._r[1716]!, [_0]) + return formatWithArgumentRanges(self._s[1715]!, self._r[1715]!, [_0]) } - public var Login_CodeSentCall: String { return self._s[1718]! } + public var Login_CodeSentCall: String { return self._s[1717]! } public func Conversation_AutoremoveTimerSetUser(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1719]!, self._r[1719]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1718]!, self._r[1718]!, [_1, _2]) } - public var Conversation_Report: String { return self._s[1720]! } - public var NotificationSettings_ContactJoined: String { return self._s[1721]! } + public var Conversation_Report: String { return self._s[1719]! } + public var NotificationSettings_ContactJoined: String { return self._s[1720]! } public func PUSH_MESSAGE_SCREENSHOT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1722]!, self._r[1722]!, [_1]) + return formatWithArgumentRanges(self._s[1721]!, self._r[1721]!, [_1]) } - public var StickerPacksSettings_ShowStickersButtonHelp: String { return self._s[1723]! } - public var BroadcastGroups_IntroText: String { return self._s[1724]! } - public var IntentsSettings_SuggestByAll: String { return self._s[1726]! } - public var StickerPacksSettings_ShowStickersButton: String { return self._s[1727]! } - public var AuthSessions_Title: String { return self._s[1728]! } + public var StickerPacksSettings_ShowStickersButtonHelp: String { return self._s[1722]! } + public var BroadcastGroups_IntroText: String { return self._s[1723]! } + public var IntentsSettings_SuggestByAll: String { return self._s[1725]! } + public var StickerPacksSettings_ShowStickersButton: String { return self._s[1726]! } + public var AuthSessions_Title: String { return self._s[1727]! } public func Notification_VoiceChatEnded(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1729]!, self._r[1729]!, [_0]) + return formatWithArgumentRanges(self._s[1728]!, self._r[1728]!, [_0]) } - public var Settings_Tips: String { return self._s[1730]! } - public var Channel_AdminLog_TitleAllEvents: String { return self._s[1731]! } - public var KeyCommand_JumpToNextUnreadChat: String { return self._s[1732]! } - public var VoiceChat_YouCanNowSpeak: String { return self._s[1735]! } - public var Passport_Address_AddPassportRegistration: String { return self._s[1737]! } + public var Settings_Tips: String { return self._s[1729]! } + public var Channel_AdminLog_TitleAllEvents: String { return self._s[1730]! } + public var KeyCommand_JumpToNextUnreadChat: String { return self._s[1731]! } + public var VoiceChat_YouCanNowSpeak: String { return self._s[1734]! } + public var Passport_Address_AddPassportRegistration: String { return self._s[1736]! } public func UserInfo_LinkForwardTooltip_ManyChats_One(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1738]!, self._r[1738]!, [_0, _1]) + return formatWithArgumentRanges(self._s[1737]!, self._r[1737]!, [_0, _1]) } - public var AutoDownloadSettings_MaxVideoSize: String { return self._s[1739]! } - public var ExplicitContent_AlertTitle: String { return self._s[1740]! } - public var Channel_UpdatePhotoItem: String { return self._s[1742]! } - public var ChatList_AutoarchiveSuggestion_Text: String { return self._s[1744]! } - public var Channel_DiscussionGroup_LinkGroup: String { return self._s[1745]! } + public var AutoDownloadSettings_MaxVideoSize: String { return self._s[1738]! } + public var ExplicitContent_AlertTitle: String { return self._s[1739]! } + public var Channel_UpdatePhotoItem: String { return self._s[1741]! } + public var ChatList_AutoarchiveSuggestion_Text: String { return self._s[1743]! } + public var Channel_DiscussionGroup_LinkGroup: String { return self._s[1744]! } public func Call_BatteryLow(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1746]!, self._r[1746]!, [_0]) + return formatWithArgumentRanges(self._s[1745]!, self._r[1745]!, [_0]) } - public var Login_HaveNotReceivedCodeInternal: String { return self._s[1747]! } - public var WallpaperPreview_PatternPaternApply: String { return self._s[1748]! } - public var Notifications_MessageNotificationsSound: String { return self._s[1749]! } - public var CommentsGroup_ErrorAccessDenied: String { return self._s[1750]! } - public var Appearance_AccentColor: String { return self._s[1752]! } - public var GroupInfo_SharedMedia: String { return self._s[1753]! } - public var Login_PhonePlaceholder: String { return self._s[1754]! } - public var Appearance_TextSize_Automatic: String { return self._s[1755]! } - public var EmptyGroupInfo_Line2: String { return self._s[1756]! } + public var Login_HaveNotReceivedCodeInternal: String { return self._s[1746]! } + public var WallpaperPreview_PatternPaternApply: String { return self._s[1747]! } + public var Notifications_MessageNotificationsSound: String { return self._s[1748]! } + public var CommentsGroup_ErrorAccessDenied: String { return self._s[1749]! } + public var Appearance_AccentColor: String { return self._s[1751]! } + public var GroupInfo_SharedMedia: String { return self._s[1752]! } + public var Login_PhonePlaceholder: String { return self._s[1753]! } + public var Appearance_TextSize_Automatic: String { return self._s[1754]! } + public var EmptyGroupInfo_Line2: String { return self._s[1755]! } public func PUSH_CHAT_CREATED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1757]!, self._r[1757]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1756]!, self._r[1756]!, [_1, _2]) } - public var VoiceChat_TapToAddPhotoOrBio: String { return self._s[1758]! } - public var Conversation_ClearChannel: String { return self._s[1759]! } - public var Appearance_AppIconDefaultX: String { return self._s[1761]! } - public var EditProfile_NameAndPhotoOrVideoHelp: String { return self._s[1762]! } - public var CheckoutInfo_ShippingInfoPostcodePlaceholder: String { return self._s[1763]! } - public var Notifications_GroupNotificationsHelp: String { return self._s[1764]! } + public var VoiceChat_TapToAddPhotoOrBio: String { return self._s[1757]! } + public var Conversation_ClearChannel: String { return self._s[1758]! } + public var Appearance_AppIconDefaultX: String { return self._s[1760]! } + public var EditProfile_NameAndPhotoOrVideoHelp: String { return self._s[1761]! } + public var CheckoutInfo_ShippingInfoPostcodePlaceholder: String { return self._s[1762]! } + public var Notifications_GroupNotificationsHelp: String { return self._s[1763]! } public func PUSH_CHAT_MESSAGE_NOTEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1765]!, self._r[1765]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1764]!, self._r[1764]!, [_1, _2]) } - public var ChatList_EmptyChatListEditFilter: String { return self._s[1766]! } - public var ChatSettings_ConnectionType_UseProxy: String { return self._s[1769]! } - public var Chat_PinnedMessagesHiddenText: String { return self._s[1770]! } + public var ChatList_EmptyChatListEditFilter: String { return self._s[1765]! } + public var ChatSettings_ConnectionType_UseProxy: String { return self._s[1768]! } + public var Chat_PinnedMessagesHiddenText: String { return self._s[1769]! } public func Message_PinnedGenericMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1771]!, self._r[1771]!, [_0]) + return formatWithArgumentRanges(self._s[1770]!, self._r[1770]!, [_0]) } public func Location_ProximityTip(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1772]!, self._r[1772]!, [_0]) + return formatWithArgumentRanges(self._s[1771]!, self._r[1771]!, [_0]) } - public var UserInfo_NotificationsEnable: String { return self._s[1773]! } - public var Checkout_PayWithTouchId: String { return self._s[1774]! } - public var SharedMedia_ViewInChat: String { return self._s[1775]! } + public var UserInfo_NotificationsEnable: String { return self._s[1772]! } + public var Checkout_PayWithTouchId: String { return self._s[1773]! } + public var SharedMedia_ViewInChat: String { return self._s[1774]! } public func Notification_CreatedChatWithTitle(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1776]!, self._r[1776]!, [_0, _1]) + return formatWithArgumentRanges(self._s[1775]!, self._r[1775]!, [_0, _1]) } - public var ChatSettings_AutoDownloadSettings_OffForAll: String { return self._s[1777]! } + public var ChatSettings_AutoDownloadSettings_OffForAll: String { return self._s[1776]! } public func Channel_DiscussionGroup_PublicChannelLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1778]!, self._r[1778]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1777]!, self._r[1777]!, [_1, _2]) } public func Cache_Clear(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1780]!, self._r[1780]!, [_0]) + return formatWithArgumentRanges(self._s[1779]!, self._r[1779]!, [_0]) } - public var Conversation_PeerNearbyText: String { return self._s[1782]! } - public var Conversation_StopPollConfirmationTitle: String { return self._s[1783]! } - public var PhotoEditor_Skip: String { return self._s[1784]! } - public var SettingsSearch_Synonyms_Appearance_ChatBackground_SetColor: String { return self._s[1785]! } - public var ChatList_EmptyChatList: String { return self._s[1786]! } - public var Channel_BanUser_Unban: String { return self._s[1787]! } + public var Conversation_PeerNearbyText: String { return self._s[1781]! } + public var Conversation_StopPollConfirmationTitle: String { return self._s[1782]! } + public var PhotoEditor_Skip: String { return self._s[1783]! } + public var SettingsSearch_Synonyms_Appearance_ChatBackground_SetColor: String { return self._s[1784]! } + public var ChatList_EmptyChatList: String { return self._s[1785]! } + public var Channel_BanUser_Unban: String { return self._s[1786]! } public func Message_GenericForwardedPsa(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1788]!, self._r[1788]!, [_0]) + return formatWithArgumentRanges(self._s[1787]!, self._r[1787]!, [_0]) } - public var Appearance_TextSize_Apply: String { return self._s[1789]! } + public var Appearance_TextSize_Apply: String { return self._s[1788]! } public func Conversation_MessageViewCommentsFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1790]!, self._r[1790]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1789]!, self._r[1789]!, [_1, _2]) } - public var Login_InfoFirstNamePlaceholder: String { return self._s[1791]! } - public var VoiceOver_Chat_YourSticker: String { return self._s[1792]! } - public var TwoStepAuth_HintPlaceholder: String { return self._s[1793]! } - public var TwoStepAuth_EmailSkip: String { return self._s[1795]! } - public var ChatList_UndoArchiveMultipleTitle: String { return self._s[1796]! } - public var TwoFactorSetup_Email_SkipConfirmationTitle: String { return self._s[1797]! } + public var Login_InfoFirstNamePlaceholder: String { return self._s[1790]! } + public var VoiceOver_Chat_YourSticker: String { return self._s[1791]! } + public var TwoStepAuth_HintPlaceholder: String { return self._s[1792]! } + public var TwoStepAuth_EmailSkip: String { return self._s[1794]! } + public var ChatList_UndoArchiveMultipleTitle: String { return self._s[1795]! } + public var TwoFactorSetup_Email_SkipConfirmationTitle: String { return self._s[1796]! } public func PUSH_MESSAGE_QUIZ(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1798]!, self._r[1798]!, [_1]) + return formatWithArgumentRanges(self._s[1797]!, self._r[1797]!, [_1]) } - public var VoiceOver_Chat_GoToOriginalMessage: String { return self._s[1800]! } - public var State_WaitingForNetwork: String { return self._s[1801]! } - public var AccessDenied_CameraRestricted: String { return self._s[1802]! } - public var ChatSettings_Appearance: String { return self._s[1803]! } - public var ScheduledMessages_BotActionUnavailable: String { return self._s[1804]! } - public var GroupInfo_InviteLink_CopyAlert_Success: String { return self._s[1805]! } - public var Channel_DiscussionGroupAdd: String { return self._s[1806]! } - public var Conversation_SelectMessages: String { return self._s[1808]! } - public var Map_NoPlacesNearby: String { return self._s[1809]! } - public var AuthSessions_IncompleteAttemptsInfo: String { return self._s[1810]! } - public var GroupRemoved_Title: String { return self._s[1811]! } - public var TwoStepAuth_EnterPasswordHelp: String { return self._s[1813]! } - public var VoiceChat_Mute: String { return self._s[1814]! } - public var Paint_Marker: String { return self._s[1815]! } - public var Widget_ChatsGalleryTitle: String { return self._s[1816]! } + public var VoiceOver_Chat_GoToOriginalMessage: String { return self._s[1799]! } + public var State_WaitingForNetwork: String { return self._s[1800]! } + public var AccessDenied_CameraRestricted: String { return self._s[1801]! } + public var ChatSettings_Appearance: String { return self._s[1802]! } + public var ScheduledMessages_BotActionUnavailable: String { return self._s[1803]! } + public var GroupInfo_InviteLink_CopyAlert_Success: String { return self._s[1804]! } + public var Channel_DiscussionGroupAdd: String { return self._s[1805]! } + public var Conversation_SelectMessages: String { return self._s[1807]! } + public var Map_NoPlacesNearby: String { return self._s[1808]! } + public var AuthSessions_IncompleteAttemptsInfo: String { return self._s[1809]! } + public var GroupRemoved_Title: String { return self._s[1810]! } + public var TwoStepAuth_EnterPasswordHelp: String { return self._s[1812]! } + public var VoiceChat_Mute: String { return self._s[1813]! } + public var Paint_Marker: String { return self._s[1814]! } + public var Widget_ChatsGalleryTitle: String { return self._s[1815]! } public func AddContact_ContactWillBeSharedAfterMutual(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1817]!, self._r[1817]!, [_1]) + return formatWithArgumentRanges(self._s[1816]!, self._r[1816]!, [_1]) } - public var SocksProxySetup_ShareProxyList: String { return self._s[1818]! } - public var GroupInfo_InvitationLinkDoesNotExist: String { return self._s[1819]! } + public var SocksProxySetup_ShareProxyList: String { return self._s[1817]! } + public var GroupInfo_InvitationLinkDoesNotExist: String { return self._s[1818]! } public func VoiceOver_Chat_Size(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1820]!, self._r[1820]!, [_0]) + return formatWithArgumentRanges(self._s[1819]!, self._r[1819]!, [_0]) } - public var EditTheme_ErrorInvalidCharacters: String { return self._s[1821]! } - public var Appearance_ThemePreview_ChatList_7_Name: String { return self._s[1822]! } - public var Notifications_GroupNotificationsAlert: String { return self._s[1823]! } - public var SocksProxySetup_ShareQRCode: String { return self._s[1824]! } - public var Compose_NewGroup: String { return self._s[1825]! } + public var EditTheme_ErrorInvalidCharacters: String { return self._s[1820]! } + public var Appearance_ThemePreview_ChatList_7_Name: String { return self._s[1821]! } + public var Notifications_GroupNotificationsAlert: String { return self._s[1822]! } + public var SocksProxySetup_ShareQRCode: String { return self._s[1823]! } + public var Compose_NewGroup: String { return self._s[1824]! } public func Passport_Address_UploadOneOfScan(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1826]!, self._r[1826]!, [_0]) + return formatWithArgumentRanges(self._s[1825]!, self._r[1825]!, [_0]) } - public var Location_LiveLocationRequired_Description: String { return self._s[1828]! } - public var Conversation_ClearGroupHistory: String { return self._s[1829]! } - public var GroupInfo_InviteLink_Help: String { return self._s[1832]! } - public var VoiceOver_BotKeyboard: String { return self._s[1833]! } - public var Channel_BanUser_BlockFor: String { return self._s[1834]! } - public var Bot_Start: String { return self._s[1835]! } - public var Your_card_has_expired: String { return self._s[1836]! } - public var Channel_About_Title: String { return self._s[1837]! } - public var VoiceChat_EditTitleTitle: String { return self._s[1838]! } - public var Passport_Identity_ExpiryDatePlaceholder: String { return self._s[1839]! } - public var SettingsSearch_Synonyms_Notifications_MessageNotificationsExceptions: String { return self._s[1841]! } - public var Conversation_FileDropbox: String { return self._s[1842]! } - public var ChatList_Search_NoResultsFitlerMusic: String { return self._s[1843]! } - public var Month_GenNovember: String { return self._s[1844]! } - public var IntentsSettings_SuggestByShare: String { return self._s[1845]! } + public var Location_LiveLocationRequired_Description: String { return self._s[1827]! } + public var Conversation_ClearGroupHistory: String { return self._s[1828]! } + public var GroupInfo_InviteLink_Help: String { return self._s[1831]! } + public var VoiceOver_BotKeyboard: String { return self._s[1832]! } + public var Channel_BanUser_BlockFor: String { return self._s[1833]! } + public var Bot_Start: String { return self._s[1834]! } + public var Your_card_has_expired: String { return self._s[1835]! } + public var Channel_About_Title: String { return self._s[1836]! } + public var VoiceChat_EditTitleTitle: String { return self._s[1837]! } + public var Passport_Identity_ExpiryDatePlaceholder: String { return self._s[1838]! } + public var SettingsSearch_Synonyms_Notifications_MessageNotificationsExceptions: String { return self._s[1840]! } + public var Conversation_FileDropbox: String { return self._s[1841]! } + public var ChatList_Search_NoResultsFitlerMusic: String { return self._s[1842]! } + public var Month_GenNovember: String { return self._s[1843]! } + public var IntentsSettings_SuggestByShare: String { return self._s[1844]! } public func Call_PrivacyErrorMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1846]!, self._r[1846]!, [_0]) + return formatWithArgumentRanges(self._s[1845]!, self._r[1845]!, [_0]) } - public var StickerPack_Add: String { return self._s[1847]! } - public var Theme_ErrorNotFound: String { return self._s[1848]! } - public var Wallpaper_SearchShort: String { return self._s[1850]! } - public var Channel_BanUser_PermissionsHeader: String { return self._s[1851]! } - public var ConversationProfile_UsersTooMuchError: String { return self._s[1852]! } - public var ChatList_FolderAllChats: String { return self._s[1853]! } - public var VoiceChat_EndConfirmationEnd: String { return self._s[1854]! } - public var Passport_Authorize: String { return self._s[1855]! } + public var StickerPack_Add: String { return self._s[1846]! } + public var Theme_ErrorNotFound: String { return self._s[1847]! } + public var Wallpaper_SearchShort: String { return self._s[1849]! } + public var Channel_BanUser_PermissionsHeader: String { return self._s[1850]! } + public var ConversationProfile_UsersTooMuchError: String { return self._s[1851]! } + public var ChatList_FolderAllChats: String { return self._s[1852]! } + public var VoiceChat_EndConfirmationEnd: String { return self._s[1853]! } + public var Passport_Authorize: String { return self._s[1854]! } public func Channel_AdminLog_MessageChangedLinkedChannel(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1856]!, self._r[1856]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1855]!, self._r[1855]!, [_1, _2]) } - public var GroupInfo_GroupHistoryVisible: String { return self._s[1857]! } + public var GroupInfo_GroupHistoryVisible: String { return self._s[1856]! } public func PUSH_MESSAGE_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1858]!, self._r[1858]!, [_1]) + return formatWithArgumentRanges(self._s[1857]!, self._r[1857]!, [_1]) } - public var LocalGroup_ButtonTitle: String { return self._s[1859]! } - public var VoiceOver_Stickers: String { return self._s[1861]! } - public var UserInfo_GroupsInCommon: String { return self._s[1862]! } - public var LoginPassword_Title: String { return self._s[1864]! } - public var Wallpaper_Set: String { return self._s[1865]! } - public var Stats_InteractionsTitle: String { return self._s[1866]! } + public var LocalGroup_ButtonTitle: String { return self._s[1858]! } + public var VoiceOver_Stickers: String { return self._s[1860]! } + public var UserInfo_GroupsInCommon: String { return self._s[1861]! } + public var LoginPassword_Title: String { return self._s[1863]! } + public var Wallpaper_Set: String { return self._s[1864]! } + public var Stats_InteractionsTitle: String { return self._s[1865]! } public func SecretGIF_NotViewedYet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1868]!, self._r[1868]!, [_0]) + return formatWithArgumentRanges(self._s[1867]!, self._r[1867]!, [_0]) } - public var Conversation_MessageDialogEdit: String { return self._s[1869]! } - public var Paint_Outlined: String { return self._s[1870]! } + public var Conversation_MessageDialogEdit: String { return self._s[1868]! } + public var Paint_Outlined: String { return self._s[1869]! } public func Login_ResetAccountProtected_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1871]!, self._r[1871]!, [_0]) + return formatWithArgumentRanges(self._s[1870]!, self._r[1870]!, [_0]) } public func Conversation_SetReminder_RemindTomorrow(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1872]!, self._r[1872]!, [_0]) + return formatWithArgumentRanges(self._s[1871]!, self._r[1871]!, [_0]) } - public var Invite_LargeRecipientsCountWarning: String { return self._s[1873]! } - public var Passport_Address_Street1Placeholder: String { return self._s[1874]! } - public var Appearance_ColorThemeNight: String { return self._s[1875]! } - public var ChannelInfo_Stats: String { return self._s[1876]! } - public var Widget_ShortcutsGalleryTitle: String { return self._s[1877]! } - public var TwoStepAuth_RecoveryTitle: String { return self._s[1878]! } - public var MediaPicker_TimerTooltip: String { return self._s[1879]! } - public var ChatImportActivity_ErrorNotAdmin: String { return self._s[1880]! } - public var Common_ChoosePhoto: String { return self._s[1881]! } - public var Media_LimitedAccessTitle: String { return self._s[1882]! } - public var ChatSettings_AutoDownloadVideos: String { return self._s[1883]! } - public var PeerInfo_PaneGroups: String { return self._s[1884]! } - public var SocksProxySetup_UsernamePlaceholder: String { return self._s[1886]! } - public var ChangePhoneNumberNumber_Title: String { return self._s[1887]! } - public var ContactInfo_PhoneLabelMobile: String { return self._s[1888]! } - public var OldChannels_ChannelsHeader: String { return self._s[1889]! } - public var MuteFor_Forever: String { return self._s[1890]! } - public var Passport_Address_PostcodePlaceholder: String { return self._s[1891]! } - public var SettingsSearch_Synonyms_Appearance_ChatBackground: String { return self._s[1893]! } - public var MessagePoll_LabelAnonymous: String { return self._s[1894]! } - public var ContactInfo_Job: String { return self._s[1895]! } - public var Passport_Language_mk: String { return self._s[1896]! } - public var EditTheme_ShortLink: String { return self._s[1897]! } - public var AutoDownloadSettings_PhotosTitle: String { return self._s[1900]! } - public var Month_GenApril: String { return self._s[1902]! } - public var Channel_DiscussionGroup_HeaderLabel: String { return self._s[1904]! } - public var NetworkUsageSettings_TotalSection: String { return self._s[1905]! } - public var EditTheme_Create_Preview_OutgoingText: String { return self._s[1906]! } - public var EditTheme_Title: String { return self._s[1907]! } - public var Conversation_LinkDialogCopy: String { return self._s[1908]! } + public var Invite_LargeRecipientsCountWarning: String { return self._s[1872]! } + public var Passport_Address_Street1Placeholder: String { return self._s[1873]! } + public var Appearance_ColorThemeNight: String { return self._s[1874]! } + public var ChannelInfo_Stats: String { return self._s[1875]! } + public var Widget_ShortcutsGalleryTitle: String { return self._s[1876]! } + public var TwoStepAuth_RecoveryTitle: String { return self._s[1877]! } + public var MediaPicker_TimerTooltip: String { return self._s[1878]! } + public var ChatImportActivity_ErrorNotAdmin: String { return self._s[1879]! } + public var Common_ChoosePhoto: String { return self._s[1880]! } + public var Media_LimitedAccessTitle: String { return self._s[1881]! } + public var ChatSettings_AutoDownloadVideos: String { return self._s[1882]! } + public var PeerInfo_PaneGroups: String { return self._s[1883]! } + public var SocksProxySetup_UsernamePlaceholder: String { return self._s[1885]! } + public var ChangePhoneNumberNumber_Title: String { return self._s[1886]! } + public var ContactInfo_PhoneLabelMobile: String { return self._s[1887]! } + public var OldChannels_ChannelsHeader: String { return self._s[1888]! } + public var MuteFor_Forever: String { return self._s[1889]! } + public var Passport_Address_PostcodePlaceholder: String { return self._s[1890]! } + public var SettingsSearch_Synonyms_Appearance_ChatBackground: String { return self._s[1892]! } + public var MessagePoll_LabelAnonymous: String { return self._s[1893]! } + public var ContactInfo_Job: String { return self._s[1894]! } + public var Passport_Language_mk: String { return self._s[1895]! } + public var EditTheme_ShortLink: String { return self._s[1896]! } + public var AutoDownloadSettings_PhotosTitle: String { return self._s[1899]! } + public var Month_GenApril: String { return self._s[1901]! } + public var Channel_DiscussionGroup_HeaderLabel: String { return self._s[1903]! } + public var NetworkUsageSettings_TotalSection: String { return self._s[1904]! } + public var EditTheme_Create_Preview_OutgoingText: String { return self._s[1905]! } + public var EditTheme_Title: String { return self._s[1906]! } + public var Conversation_LinkDialogCopy: String { return self._s[1907]! } public func Channel_AdminLog_MessageInvitedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1909]!, self._r[1909]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1908]!, self._r[1908]!, [_1, _2]) } - public var Passport_ForgottenPassword: String { return self._s[1910]! } - public var WallpaperSearch_Recent: String { return self._s[1911]! } - public var ChatSettings_Title: String { return self._s[1916]! } - public var Appearance_ReduceMotionInfo: String { return self._s[1917]! } + public var Passport_ForgottenPassword: String { return self._s[1909]! } + public var WallpaperSearch_Recent: String { return self._s[1910]! } + public var ChatSettings_Title: String { return self._s[1915]! } + public var Appearance_ReduceMotionInfo: String { return self._s[1916]! } public func StickerPackActionInfo_AddedText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1918]!, self._r[1918]!, [_0]) + return formatWithArgumentRanges(self._s[1917]!, self._r[1917]!, [_0]) } - public var SocksProxySetup_UseForCallsHelp: String { return self._s[1919]! } - public var LastSeen_WithinAMonth: String { return self._s[1920]! } - public var VoiceChat_Live: String { return self._s[1921]! } - public var PeerInfo_ButtonCall: String { return self._s[1922]! } - public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[1923]! } - public var Group_Username_InvalidStartsWithNumber: String { return self._s[1924]! } - public var Call_AudioRouteHide: String { return self._s[1925]! } - public var DialogList_SavedMessages: String { return self._s[1926]! } - public var ChatList_Context_Mute: String { return self._s[1927]! } - public var Conversation_StatusKickedFromChannel: String { return self._s[1928]! } + public var SocksProxySetup_UseForCallsHelp: String { return self._s[1918]! } + public var LastSeen_WithinAMonth: String { return self._s[1919]! } + public var VoiceChat_Live: String { return self._s[1920]! } + public var PeerInfo_ButtonCall: String { return self._s[1921]! } + public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[1922]! } + public var Group_Username_InvalidStartsWithNumber: String { return self._s[1923]! } + public var Call_AudioRouteHide: String { return self._s[1924]! } + public var DialogList_SavedMessages: String { return self._s[1925]! } + public var ChatList_Context_Mute: String { return self._s[1926]! } + public var Conversation_StatusKickedFromChannel: String { return self._s[1927]! } public func Notification_Exceptions_MutedUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1929]!, self._r[1929]!, [_0]) + return formatWithArgumentRanges(self._s[1928]!, self._r[1928]!, [_0]) } - public var VoiceChat_StatusMutedForYou: String { return self._s[1930]! } - public var Passport_Language_et: String { return self._s[1931]! } - public var Conversation_MessageLeaveCommentShort: String { return self._s[1932]! } - public var PhotoEditor_CropReset: String { return self._s[1933]! } - public var Privacy_GroupsAndChannels_AlwaysAllow: String { return self._s[1934]! } - public var SocksProxySetup_HostnamePlaceholder: String { return self._s[1935]! } - public var CreateGroup_ErrorLocatedGroupsTooMuch: String { return self._s[1936]! } - public var WallpaperSearch_ColorWhite: String { return self._s[1939]! } - public var Channel_AdminLog_CanEditMessages: String { return self._s[1941]! } - public var Privacy_PaymentsClearInfoDoneHelp: String { return self._s[1942]! } - public var Channel_Username_InvalidStartsWithNumber: String { return self._s[1944]! } - public var CheckoutInfo_ReceiverInfoName: String { return self._s[1946]! } - public var Map_YouAreHere: String { return self._s[1948]! } - public var Core_ServiceUserStatus: String { return self._s[1949]! } - public var Channel_Setup_TypePrivateHelp: String { return self._s[1952]! } - public var VoiceChat_StartRecording: String { return self._s[1953]! } - public var SettingsSearch_Synonyms_Notifications_BadgeCountUnreadMessages: String { return self._s[1954]! } - public var MediaPicker_Videos: String { return self._s[1956]! } - public var Map_LiveLocationFor15Minutes: String { return self._s[1958]! } - public var Passport_Identity_TranslationsHelp: String { return self._s[1959]! } - public var SharedMedia_CategoryMedia: String { return self._s[1960]! } + public var VoiceChat_StatusMutedForYou: String { return self._s[1929]! } + public var Passport_Language_et: String { return self._s[1930]! } + public var Conversation_MessageLeaveCommentShort: String { return self._s[1931]! } + public var PhotoEditor_CropReset: String { return self._s[1932]! } + public var Privacy_GroupsAndChannels_AlwaysAllow: String { return self._s[1933]! } + public var SocksProxySetup_HostnamePlaceholder: String { return self._s[1934]! } + public var CreateGroup_ErrorLocatedGroupsTooMuch: String { return self._s[1935]! } + public var WallpaperSearch_ColorWhite: String { return self._s[1938]! } + public var Channel_AdminLog_CanEditMessages: String { return self._s[1940]! } + public var Privacy_PaymentsClearInfoDoneHelp: String { return self._s[1941]! } + public var Channel_Username_InvalidStartsWithNumber: String { return self._s[1943]! } + public var CheckoutInfo_ReceiverInfoName: String { return self._s[1945]! } + public var Map_YouAreHere: String { return self._s[1947]! } + public var Core_ServiceUserStatus: String { return self._s[1948]! } + public var Channel_Setup_TypePrivateHelp: String { return self._s[1951]! } + public var VoiceChat_StartRecording: String { return self._s[1952]! } + public var SettingsSearch_Synonyms_Notifications_BadgeCountUnreadMessages: String { return self._s[1953]! } + public var MediaPicker_Videos: String { return self._s[1955]! } + public var Map_LiveLocationFor15Minutes: String { return self._s[1957]! } + public var Passport_Identity_TranslationsHelp: String { return self._s[1958]! } + public var SharedMedia_CategoryMedia: String { return self._s[1959]! } public func MediaPicker_Nof(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1961]!, self._r[1961]!, [_0]) + return formatWithArgumentRanges(self._s[1960]!, self._r[1960]!, [_0]) } - public var ChatSettings_AutoPlayGifs: String { return self._s[1962]! } - public var Passport_Identity_CountryPlaceholder: String { return self._s[1963]! } - public var Bot_GroupStatusDoesNotReadHistory: String { return self._s[1964]! } - public var Conversation_JoinVoiceChatAsListener: String { return self._s[1965]! } - public var Notification_Exceptions_RemoveFromExceptions: String { return self._s[1966]! } + public var ChatSettings_AutoPlayGifs: String { return self._s[1961]! } + public var Passport_Identity_CountryPlaceholder: String { return self._s[1962]! } + public var Bot_GroupStatusDoesNotReadHistory: String { return self._s[1963]! } + public var Conversation_JoinVoiceChatAsListener: String { return self._s[1964]! } + public var Notification_Exceptions_RemoveFromExceptions: String { return self._s[1965]! } public func Chat_SlowmodeTooltip(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1967]!, self._r[1967]!, [_0]) + return formatWithArgumentRanges(self._s[1966]!, self._r[1966]!, [_0]) } - public var Web_Error: String { return self._s[1968]! } - public var PhotoEditor_SkinTool: String { return self._s[1969]! } - public var ApplyLanguage_UnsufficientDataTitle: String { return self._s[1970]! } - public var AutoremoveSetup_TimerInfoChat: String { return self._s[1971]! } - public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[1973]! } - public var PasscodeSettings_Help: String { return self._s[1974]! } - public var Appearance_ColorTheme: String { return self._s[1975]! } + public var Web_Error: String { return self._s[1967]! } + public var PhotoEditor_SkinTool: String { return self._s[1968]! } + public var ApplyLanguage_UnsufficientDataTitle: String { return self._s[1969]! } + public var AutoremoveSetup_TimerInfoChat: String { return self._s[1970]! } + public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[1972]! } + public var PasscodeSettings_Help: String { return self._s[1973]! } + public var Appearance_ColorTheme: String { return self._s[1974]! } public func Channel_AdminLog_MessageRestrictedNewSetting(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1976]!, self._r[1976]!, [_0]) + return formatWithArgumentRanges(self._s[1975]!, self._r[1975]!, [_0]) } - public var InviteLink_DeleteAllRevokedLinks: String { return self._s[1977]! } + public var InviteLink_DeleteAllRevokedLinks: String { return self._s[1976]! } public func PUSH_PINNED_GEO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1978]!, self._r[1978]!, [_1]) + return formatWithArgumentRanges(self._s[1977]!, self._r[1977]!, [_1]) } - public var InviteLink_QRCode_Title: String { return self._s[1979]! } - public var GroupInfo_LeftStatus: String { return self._s[1980]! } - public var EditTheme_Preview: String { return self._s[1981]! } - public var Watch_Suggestion_WhatsUp: String { return self._s[1982]! } + public var InviteLink_QRCode_Title: String { return self._s[1978]! } + public var GroupInfo_LeftStatus: String { return self._s[1979]! } + public var EditTheme_Preview: String { return self._s[1980]! } + public var Watch_Suggestion_WhatsUp: String { return self._s[1981]! } public func AutoDownloadSettings_PreloadVideoInfo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[1983]!, self._r[1983]!, [_0]) + return formatWithArgumentRanges(self._s[1982]!, self._r[1982]!, [_0]) } - public var NotificationsSound_Keys: String { return self._s[1984]! } - public var VoiceChat_StatusWantsToSpeak: String { return self._s[1985]! } - public var PasscodeSettings_UnlockWithTouchId: String { return self._s[1986]! } - public var ChatList_Context_MarkAsUnread: String { return self._s[1987]! } - public var DialogList_AdNoticeAlert: String { return self._s[1988]! } - public var UserInfo_Invite: String { return self._s[1989]! } - public var Checkout_Email: String { return self._s[1990]! } - public var Stats_GroupActionsTitle: String { return self._s[1991]! } - public var Coub_TapForSound: String { return self._s[1992]! } - public var Conversation_AutoremoveTimerRemovedUserYou: String { return self._s[1993]! } - public var Theme_ThemeChangedText: String { return self._s[1994]! } - public var Call_ExternalCallInProgressMessage: String { return self._s[1995]! } - public var AutoremoveSetup_TimerInfoChannel: String { return self._s[1996]! } - public var Settings_ApplyProxyAlertEnable: String { return self._s[1997]! } - public var ScheduledMessages_ScheduledToday: String { return self._s[1998]! } - public var Channel_AdminLog_DefaultRestrictionsUpdated: String { return self._s[1999]! } + public var NotificationsSound_Keys: String { return self._s[1983]! } + public var VoiceChat_StatusWantsToSpeak: String { return self._s[1984]! } + public var PasscodeSettings_UnlockWithTouchId: String { return self._s[1985]! } + public var ChatList_Context_MarkAsUnread: String { return self._s[1986]! } + public var DialogList_AdNoticeAlert: String { return self._s[1987]! } + public var UserInfo_Invite: String { return self._s[1988]! } + public var Checkout_Email: String { return self._s[1989]! } + public var Stats_GroupActionsTitle: String { return self._s[1990]! } + public var Coub_TapForSound: String { return self._s[1991]! } + public var Conversation_AutoremoveTimerRemovedUserYou: String { return self._s[1992]! } + public var Theme_ThemeChangedText: String { return self._s[1993]! } + public var Call_ExternalCallInProgressMessage: String { return self._s[1994]! } + public var AutoremoveSetup_TimerInfoChannel: String { return self._s[1995]! } + public var Settings_ApplyProxyAlertEnable: String { return self._s[1996]! } + public var ScheduledMessages_ScheduledToday: String { return self._s[1997]! } + public var Channel_AdminLog_DefaultRestrictionsUpdated: String { return self._s[1998]! } public func VoiceChat_InviteMemberToChannelFirstText(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2000]!, self._r[2000]!, [_1, _2]) + return formatWithArgumentRanges(self._s[1999]!, self._r[1999]!, [_1, _2]) } - public var Call_ReportIncludeLogDescription: String { return self._s[2001]! } - public var Settings_FrequentlyAskedQuestions: String { return self._s[2003]! } - public var Call_VoiceOver_VoiceCallMissed: String { return self._s[2004]! } - public var Channel_MessagePhotoRemoved: String { return self._s[2005]! } - public var Passport_Email_Delete: String { return self._s[2006]! } + public var Call_ReportIncludeLogDescription: String { return self._s[2000]! } + public var Settings_FrequentlyAskedQuestions: String { return self._s[2002]! } + public var Call_VoiceOver_VoiceCallMissed: String { return self._s[2003]! } + public var Channel_MessagePhotoRemoved: String { return self._s[2004]! } + public var Passport_Email_Delete: String { return self._s[2005]! } public func PUSH_PINNED_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2007]!, self._r[2007]!, [_1]) + return formatWithArgumentRanges(self._s[2006]!, self._r[2006]!, [_1]) } - public var NotificationSettings_ShowNotificationsAllAccountsInfoOn: String { return self._s[2008]! } + public var NotificationSettings_ShowNotificationsAllAccountsInfoOn: String { return self._s[2007]! } public func Conversation_AutoremoveTimerRemovedUser(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2009]!, self._r[2009]!, [_1]) + return formatWithArgumentRanges(self._s[2008]!, self._r[2008]!, [_1]) } - public var Channel_AdminLog_CanAddAdmins: String { return self._s[2010]! } - public var SocksProxySetup_FailedToConnect: String { return self._s[2012]! } - public var SettingsSearch_Synonyms_Data_NetworkUsage: String { return self._s[2013]! } - public var Common_of: String { return self._s[2014]! } - public var VoiceChat_CreateNewVoiceChatText: String { return self._s[2015]! } - public var VoiceChat_StartRecordingStart: String { return self._s[2016]! } - public var PeerInfo_ButtonUnmute: String { return self._s[2019]! } + public var Channel_AdminLog_CanAddAdmins: String { return self._s[2009]! } + public var SocksProxySetup_FailedToConnect: String { return self._s[2011]! } + public var SettingsSearch_Synonyms_Data_NetworkUsage: String { return self._s[2012]! } + public var Common_of: String { return self._s[2013]! } + public var VoiceChat_CreateNewVoiceChatText: String { return self._s[2014]! } + public var VoiceChat_StartRecordingStart: String { return self._s[2015]! } + public var PeerInfo_ButtonUnmute: String { return self._s[2018]! } public func ChatSettings_AutoDownloadSettings_TypeFile(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2020]!, self._r[2020]!, [_0]) + return formatWithArgumentRanges(self._s[2019]!, self._r[2019]!, [_0]) } - public var Privacy_ContactsReset_ContactsDeleted: String { return self._s[2021]! } - public var ChatList_AddChatsToFolder: String { return self._s[2022]! } - public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[2023]! } - public var Settings_Title: String { return self._s[2025]! } - public var AutoDownloadSettings_Contacts: String { return self._s[2027]! } - public var Appearance_BubbleCornersSetting: String { return self._s[2028]! } - public var InviteLink_OtherAdminsLinks: String { return self._s[2029]! } - public var Privacy_Calls_AlwaysAllow: String { return self._s[2030]! } - public var Privacy_Forwards_AlwaysAllow_Title: String { return self._s[2032]! } - public var WallpaperPreview_CropBottomText: String { return self._s[2033]! } - public var SecretTimer_VideoDescription: String { return self._s[2034]! } - public var VoiceOver_Chat_AnimatedSticker: String { return self._s[2035]! } - public var WallpaperPreview_Blurred: String { return self._s[2036]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsExceptions: String { return self._s[2037]! } - public var ChatListFolder_ExcludedSectionHeader: String { return self._s[2039]! } - public var Conversation_CancelForwardSelectChat: String { return self._s[2040]! } - public var DialogList_PasscodeLockHelp: String { return self._s[2041]! } - public var SocksProxySetup_SecretPlaceholder: String { return self._s[2042]! } - public var NetworkUsageSettings_CallDataSection: String { return self._s[2043]! } - public var TwoStepAuth_PasswordRemovePassportConfirmation: String { return self._s[2044]! } - public var Passport_FieldAddressTranslationHelp: String { return self._s[2045]! } - public var SocksProxySetup_Connection: String { return self._s[2046]! } - public var Passport_Address_TypePassportRegistration: String { return self._s[2047]! } - public var Contacts_PermissionsAllowInSettings: String { return self._s[2048]! } - public var Conversation_Unpin: String { return self._s[2049]! } - public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[2050]! } - public var TwoFactorSetup_Hint_Placeholder: String { return self._s[2051]! } - public var Call_ReportSkip: String { return self._s[2052]! } + public var Privacy_ContactsReset_ContactsDeleted: String { return self._s[2020]! } + public var ChatList_AddChatsToFolder: String { return self._s[2021]! } + public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[2022]! } + public var Settings_Title: String { return self._s[2024]! } + public var AutoDownloadSettings_Contacts: String { return self._s[2026]! } + public var Appearance_BubbleCornersSetting: String { return self._s[2027]! } + public var InviteLink_OtherAdminsLinks: String { return self._s[2028]! } + public var Privacy_Calls_AlwaysAllow: String { return self._s[2029]! } + public var Privacy_Forwards_AlwaysAllow_Title: String { return self._s[2031]! } + public var WallpaperPreview_CropBottomText: String { return self._s[2032]! } + public var SecretTimer_VideoDescription: String { return self._s[2033]! } + public var VoiceOver_Chat_AnimatedSticker: String { return self._s[2034]! } + public var WallpaperPreview_Blurred: String { return self._s[2035]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsExceptions: String { return self._s[2036]! } + public var ChatListFolder_ExcludedSectionHeader: String { return self._s[2038]! } + public var Conversation_CancelForwardSelectChat: String { return self._s[2039]! } + public var DialogList_PasscodeLockHelp: String { return self._s[2040]! } + public var SocksProxySetup_SecretPlaceholder: String { return self._s[2041]! } + public var NetworkUsageSettings_CallDataSection: String { return self._s[2042]! } + public var TwoStepAuth_PasswordRemovePassportConfirmation: String { return self._s[2043]! } + public var Passport_FieldAddressTranslationHelp: String { return self._s[2044]! } + public var SocksProxySetup_Connection: String { return self._s[2045]! } + public var Passport_Address_TypePassportRegistration: String { return self._s[2046]! } + public var Contacts_PermissionsAllowInSettings: String { return self._s[2047]! } + public var Conversation_Unpin: String { return self._s[2048]! } + public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[2049]! } + public var TwoFactorSetup_Hint_Placeholder: String { return self._s[2050]! } + public var Call_ReportSkip: String { return self._s[2051]! } public func VoiceOver_Chat_PhotoFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2053]!, self._r[2053]!, [_0]) + return formatWithArgumentRanges(self._s[2052]!, self._r[2052]!, [_0]) } public func VoiceOver_Chat_Caption(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2055]!, self._r[2055]!, [_0]) + return formatWithArgumentRanges(self._s[2054]!, self._r[2054]!, [_0]) } - public var AutoNightTheme_Automatic: String { return self._s[2056]! } - public var Passport_Language_az: String { return self._s[2058]! } + public var AutoNightTheme_Automatic: String { return self._s[2055]! } + public var Passport_Language_az: String { return self._s[2057]! } public func Conversation_AutoremoveChanged(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2059]!, self._r[2059]!, [_0]) + return formatWithArgumentRanges(self._s[2058]!, self._r[2058]!, [_0]) } - public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[2060]! } - public var Watch_UserInfo_Unmute: String { return self._s[2061]! } - public var Channel_Stickers_YourStickers: String { return self._s[2062]! } - public var Channel_DiscussionGroup_UnlinkChannel: String { return self._s[2063]! } - public var PeerInfo_AutoremoveMessagesDisabled: String { return self._s[2064]! } - public var Tour_Text1: String { return self._s[2065]! } - public var Common_Delete: String { return self._s[2066]! } - public var Settings_EditPhoto: String { return self._s[2067]! } - public var Common_Edit: String { return self._s[2068]! } - public var ShareMenu_ShareTo: String { return self._s[2070]! } - public var Passport_Identity_ExpiryDate: String { return self._s[2071]! } + public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[2059]! } + public var Watch_UserInfo_Unmute: String { return self._s[2060]! } + public var Channel_Stickers_YourStickers: String { return self._s[2061]! } + public var Channel_DiscussionGroup_UnlinkChannel: String { return self._s[2062]! } + public var PeerInfo_AutoremoveMessagesDisabled: String { return self._s[2063]! } + public var Tour_Text1: String { return self._s[2064]! } + public var Common_Delete: String { return self._s[2065]! } + public var Settings_EditPhoto: String { return self._s[2066]! } + public var Common_Edit: String { return self._s[2067]! } + public var ShareMenu_ShareTo: String { return self._s[2069]! } + public var Passport_Identity_ExpiryDate: String { return self._s[2070]! } public func Channel_AdminLog_MutedNewMembers(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2072]!, self._r[2072]!, [_1]) + return formatWithArgumentRanges(self._s[2071]!, self._r[2071]!, [_1]) } - public var Preview_DeleteGif: String { return self._s[2073]! } - public var WallpaperPreview_PatternPaternDiscard: String { return self._s[2074]! } - public var ChatSettings_AutoDownloadUsingCellular: String { return self._s[2075]! } - public var Conversation_ViewReply: String { return self._s[2076]! } - public var Stats_LoadingText: String { return self._s[2077]! } - public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[2078]! } - public var CheckoutInfo_ReceiverInfoEmailPlaceholder: String { return self._s[2079]! } - public var Channel_AdminLog_CanChangeInfo: String { return self._s[2080]! } + public var Preview_DeleteGif: String { return self._s[2072]! } + public var WallpaperPreview_PatternPaternDiscard: String { return self._s[2073]! } + public var ChatSettings_AutoDownloadUsingCellular: String { return self._s[2074]! } + public var Conversation_ViewReply: String { return self._s[2075]! } + public var Stats_LoadingText: String { return self._s[2076]! } + public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[2077]! } + public var CheckoutInfo_ReceiverInfoEmailPlaceholder: String { return self._s[2078]! } + public var Channel_AdminLog_CanChangeInfo: String { return self._s[2079]! } public func Passport_Phone_UseTelegramNumber(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2081]!, self._r[2081]!, [_0]) + return formatWithArgumentRanges(self._s[2080]!, self._r[2080]!, [_0]) } public func Time_MonthOfYear_m2(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2082]!, self._r[2082]!, [_0]) + return formatWithArgumentRanges(self._s[2081]!, self._r[2081]!, [_0]) } public func VoiceOver_Chat_VideoMessageFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2084]!, self._r[2084]!, [_0]) + return formatWithArgumentRanges(self._s[2083]!, self._r[2083]!, [_0]) } - public var Passport_Address_OneOfTypeRentalAgreement: String { return self._s[2085]! } - public var InviteLink_Share: String { return self._s[2087]! } + public var Passport_Address_OneOfTypeRentalAgreement: String { return self._s[2084]! } + public var InviteLink_Share: String { return self._s[2086]! } public func Conversation_ImportProgress(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2089]!, self._r[2089]!, [_0]) + return formatWithArgumentRanges(self._s[2088]!, self._r[2088]!, [_0]) } - public var IntentsSettings_MainAccount: String { return self._s[2090]! } - public var Group_MessagePhotoRemoved: String { return self._s[2093]! } - public var Conversation_ContextMenuSelect: String { return self._s[2094]! } - public var GroupInfo_Permissions_Exceptions: String { return self._s[2096]! } - public var GroupRemoved_UsersSectionTitle: String { return self._s[2097]! } - public var Contacts_PermissionsEnable: String { return self._s[2098]! } - public var Channel_EditAdmin_PermissionDeleteMessagesOfOthers: String { return self._s[2099]! } - public var Common_NotNow: String { return self._s[2100]! } - public var Notification_CreatedChannel: String { return self._s[2101]! } - public var Stats_ViewsBySourceTitle: String { return self._s[2103]! } - public var InviteLink_ContextShare: String { return self._s[2104]! } - public var Appearance_AppIconClassic: String { return self._s[2105]! } - public var PhotoEditor_QualityTool: String { return self._s[2106]! } - public var ClearCache_ClearCache: String { return self._s[2107]! } - public var TwoFactorSetup_Password_PlaceholderConfirmPassword: String { return self._s[2108]! } - public var AutoDownloadSettings_Videos: String { return self._s[2109]! } - public var GroupPermission_Duration: String { return self._s[2110]! } - public var ChatList_Read: String { return self._s[2111]! } + public var IntentsSettings_MainAccount: String { return self._s[2089]! } + public var Group_MessagePhotoRemoved: String { return self._s[2092]! } + public var Conversation_ContextMenuSelect: String { return self._s[2093]! } + public var GroupInfo_Permissions_Exceptions: String { return self._s[2095]! } + public var GroupRemoved_UsersSectionTitle: String { return self._s[2096]! } + public var Contacts_PermissionsEnable: String { return self._s[2097]! } + public var Channel_EditAdmin_PermissionDeleteMessagesOfOthers: String { return self._s[2098]! } + public var Common_NotNow: String { return self._s[2099]! } + public var Notification_CreatedChannel: String { return self._s[2100]! } + public var Stats_ViewsBySourceTitle: String { return self._s[2102]! } + public var InviteLink_ContextShare: String { return self._s[2103]! } + public var Appearance_AppIconClassic: String { return self._s[2104]! } + public var PhotoEditor_QualityTool: String { return self._s[2105]! } + public var ClearCache_ClearCache: String { return self._s[2106]! } + public var TwoFactorSetup_Password_PlaceholderConfirmPassword: String { return self._s[2107]! } + public var AutoDownloadSettings_Videos: String { return self._s[2108]! } + public var GroupPermission_Duration: String { return self._s[2109]! } + public var ChatList_Read: String { return self._s[2110]! } public func Group_OwnershipTransfer_DescriptionInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2112]!, self._r[2112]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2111]!, self._r[2111]!, [_1, _2]) } public func ScheduleVoiceChat_ScheduleTomorrow(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2113]!, self._r[2113]!, [_0]) + return formatWithArgumentRanges(self._s[2112]!, self._r[2112]!, [_0]) } - public var CallFeedback_Send: String { return self._s[2114]! } - public var Channel_Stickers_Searching: String { return self._s[2115]! } - public var ScheduledMessages_ReminderNotification: String { return self._s[2116]! } - public var FastTwoStepSetup_HintSection: String { return self._s[2117]! } - public var ChatSettings_AutoDownloadVideoMessages: String { return self._s[2118]! } - public var EditTheme_CreateTitle: String { return self._s[2120]! } - public var Application_Name: String { return self._s[2121]! } - public var Paint_Stickers: String { return self._s[2122]! } - public var Appearance_ThemePreview_Chat_1_Text: String { return self._s[2123]! } - public var Call_StatusFailed: String { return self._s[2124]! } - public var Stickers_FavoriteStickers: String { return self._s[2125]! } - public var ClearCache_Clear: String { return self._s[2126]! } - public var Passport_Language_mn: String { return self._s[2127]! } - public var WallpaperPreview_PreviewTopText: String { return self._s[2128]! } - public var LogoutOptions_ClearCacheTitle: String { return self._s[2129]! } - public var Call_VoiceOver_VideoCallOutgoing: String { return self._s[2131]! } - public var TwoFactorSetup_Hint_Text: String { return self._s[2133]! } - public var WallpaperPreview_PatternIntensity: String { return self._s[2134]! } - public var CheckoutInfo_ErrorShippingNotAvailable: String { return self._s[2135]! } - public var Passport_Address_AddBankStatement: String { return self._s[2136]! } + public var CallFeedback_Send: String { return self._s[2113]! } + public var Channel_Stickers_Searching: String { return self._s[2114]! } + public var ScheduledMessages_ReminderNotification: String { return self._s[2115]! } + public var FastTwoStepSetup_HintSection: String { return self._s[2116]! } + public var ChatSettings_AutoDownloadVideoMessages: String { return self._s[2117]! } + public var EditTheme_CreateTitle: String { return self._s[2119]! } + public var Application_Name: String { return self._s[2120]! } + public var Paint_Stickers: String { return self._s[2121]! } + public var Appearance_ThemePreview_Chat_1_Text: String { return self._s[2122]! } + public var Call_StatusFailed: String { return self._s[2123]! } + public var Stickers_FavoriteStickers: String { return self._s[2124]! } + public var ClearCache_Clear: String { return self._s[2125]! } + public var Passport_Language_mn: String { return self._s[2126]! } + public var WallpaperPreview_PreviewTopText: String { return self._s[2127]! } + public var LogoutOptions_ClearCacheTitle: String { return self._s[2128]! } + public var Call_VoiceOver_VideoCallOutgoing: String { return self._s[2130]! } + public var TwoFactorSetup_Hint_Text: String { return self._s[2132]! } + public var WallpaperPreview_PatternIntensity: String { return self._s[2133]! } + public var CheckoutInfo_ErrorShippingNotAvailable: String { return self._s[2134]! } + public var Passport_Address_AddBankStatement: String { return self._s[2135]! } public func Conversation_TitleRepliesFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2139]!, self._r[2139]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2138]!, self._r[2138]!, [_1, _2]) } - public var ChatListFolderSettings_RecommendedNewFolder: String { return self._s[2140]! } - public var UserInfo_ShareContact: String { return self._s[2141]! } - public var Passport_Identity_NamePlaceholder: String { return self._s[2142]! } - public var Channel_ErrorAdminsTooMuch: String { return self._s[2144]! } - public var Call_RateCall: String { return self._s[2145]! } - public var Contacts_AccessDeniedError: String { return self._s[2146]! } - public var Invite_ChannelsTooMuch: String { return self._s[2147]! } - public var CheckoutInfo_ShippingInfoPostcode: String { return self._s[2148]! } - public var Channel_BanUser_PermissionReadMessages: String { return self._s[2149]! } - public var InviteLink_Create_TimeLimitInfo: String { return self._s[2150]! } - public var Cache_NoLimit: String { return self._s[2153]! } - public var Conversation_EmptyPlaceholder: String { return self._s[2154]! } - public var Privacy_GroupsAndChannels_AlwaysAllow_Placeholder: String { return self._s[2158]! } - public var Notification_Exceptions_MessagePreviewAlwaysOff: String { return self._s[2159]! } - public var GroupRemoved_RemoveInfo: String { return self._s[2160]! } - public var Privacy_PaymentsClear_AllInfoCleared: String { return self._s[2161]! } - public var Privacy_Calls_IntegrationHelp: String { return self._s[2162]! } + public var ChatListFolderSettings_RecommendedNewFolder: String { return self._s[2139]! } + public var UserInfo_ShareContact: String { return self._s[2140]! } + public var Passport_Identity_NamePlaceholder: String { return self._s[2141]! } + public var Channel_ErrorAdminsTooMuch: String { return self._s[2143]! } + public var Call_RateCall: String { return self._s[2144]! } + public var Contacts_AccessDeniedError: String { return self._s[2145]! } + public var Invite_ChannelsTooMuch: String { return self._s[2146]! } + public var CheckoutInfo_ShippingInfoPostcode: String { return self._s[2147]! } + public var Channel_BanUser_PermissionReadMessages: String { return self._s[2148]! } + public var InviteLink_Create_TimeLimitInfo: String { return self._s[2149]! } + public var Cache_NoLimit: String { return self._s[2152]! } + public var Conversation_EmptyPlaceholder: String { return self._s[2153]! } + public var Privacy_GroupsAndChannels_AlwaysAllow_Placeholder: String { return self._s[2157]! } + public var Notification_Exceptions_MessagePreviewAlwaysOff: String { return self._s[2158]! } + public var GroupRemoved_RemoveInfo: String { return self._s[2159]! } + public var Privacy_PaymentsClear_AllInfoCleared: String { return self._s[2160]! } + public var Privacy_Calls_IntegrationHelp: String { return self._s[2161]! } public func PUSH_VIDEO_CALL_MISSED(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2163]!, self._r[2163]!, [_1]) + return formatWithArgumentRanges(self._s[2162]!, self._r[2162]!, [_1]) } - public var VoiceOver_Media_PlaybackRateFast: String { return self._s[2164]! } - public var Theme_ThemeChanged: String { return self._s[2165]! } - public var Privacy_GroupsAndChannels_NeverAllow: String { return self._s[2167]! } - public var AutoDownloadSettings_MediaTypes: String { return self._s[2168]! } + public var VoiceOver_Media_PlaybackRateFast: String { return self._s[2163]! } + public var Theme_ThemeChanged: String { return self._s[2164]! } + public var Privacy_GroupsAndChannels_NeverAllow: String { return self._s[2166]! } + public var AutoDownloadSettings_MediaTypes: String { return self._s[2167]! } public func Notification_PinnedDocumentMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2169]!, self._r[2169]!, [_0]) + return formatWithArgumentRanges(self._s[2168]!, self._r[2168]!, [_0]) } - public var Channel_AdminLog_InfoPanelTitle: String { return self._s[2170]! } - public var Passport_Language_da: String { return self._s[2172]! } - public var Chat_SlowmodeSendError: String { return self._s[2173]! } - public var Application_Update: String { return self._s[2175]! } - public var SocksProxySetup_SaveProxy: String { return self._s[2176]! } + public var Channel_AdminLog_InfoPanelTitle: String { return self._s[2169]! } + public var Passport_Language_da: String { return self._s[2171]! } + public var Chat_SlowmodeSendError: String { return self._s[2172]! } + public var Application_Update: String { return self._s[2174]! } + public var SocksProxySetup_SaveProxy: String { return self._s[2175]! } public func PUSH_AUTH_REGION(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2177]!, self._r[2177]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2176]!, self._r[2176]!, [_1, _2]) } - public var Privacy_AddNewPeer: String { return self._s[2179]! } - public var Channel_DiscussionGroup_MakeHistoryPublicProceed: String { return self._s[2181]! } - public var Channel_Members_Title: String { return self._s[2182]! } - public var StickerPacks_ActionDelete: String { return self._s[2183]! } - public var Conversation_ScheduledVoiceChat: String { return self._s[2184]! } - public var Settings_LogoutConfirmationText: String { return self._s[2186]! } - public var Chat_UnsendMyMessages: String { return self._s[2187]! } - public var PeerInfo_ReportProfilePhoto: String { return self._s[2188]! } - public var Conversation_EditingMessageMediaEditCurrentVideo: String { return self._s[2190]! } - public var ChatListFilter_AddChatsTitle: String { return self._s[2191]! } - public var Passport_FloodError: String { return self._s[2192]! } - public var NotificationSettings_ContactJoinedInfo: String { return self._s[2193]! } - public var SettingsSearch_Synonyms_Privacy_Data_SecretChatLinkPreview: String { return self._s[2194]! } - public var CallSettings_TabIconDescription: String { return self._s[2195]! } - public var Group_Setup_HistoryHeader: String { return self._s[2197]! } + public var Privacy_AddNewPeer: String { return self._s[2178]! } + public var Channel_DiscussionGroup_MakeHistoryPublicProceed: String { return self._s[2180]! } + public var Channel_Members_Title: String { return self._s[2181]! } + public var StickerPacks_ActionDelete: String { return self._s[2182]! } + public var Conversation_ScheduledVoiceChat: String { return self._s[2183]! } + public var Settings_LogoutConfirmationText: String { return self._s[2185]! } + public var Chat_UnsendMyMessages: String { return self._s[2186]! } + public var PeerInfo_ReportProfilePhoto: String { return self._s[2187]! } + public var Conversation_EditingMessageMediaEditCurrentVideo: String { return self._s[2189]! } + public var ChatListFilter_AddChatsTitle: String { return self._s[2190]! } + public var Passport_FloodError: String { return self._s[2191]! } + public var NotificationSettings_ContactJoinedInfo: String { return self._s[2192]! } + public var SettingsSearch_Synonyms_Privacy_Data_SecretChatLinkPreview: String { return self._s[2193]! } + public var CallSettings_TabIconDescription: String { return self._s[2194]! } + public var Group_Setup_HistoryHeader: String { return self._s[2196]! } public func Channel_AdminLog_AllowedNewMembersToSpeak(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2198]!, self._r[2198]!, [_1]) + return formatWithArgumentRanges(self._s[2197]!, self._r[2197]!, [_1]) } - public var TwoStepAuth_EmailTitle: String { return self._s[2199]! } - public var GroupInfo_Permissions_Removed: String { return self._s[2200]! } - public var DialogList_ClearHistoryConfirmation: String { return self._s[2201]! } - public var Contacts_Title: String { return self._s[2203]! } + public var TwoStepAuth_EmailTitle: String { return self._s[2198]! } + public var GroupInfo_Permissions_Removed: String { return self._s[2199]! } + public var DialogList_ClearHistoryConfirmation: String { return self._s[2200]! } + public var Contacts_Title: String { return self._s[2202]! } public func Notification_Invited(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2204]!, self._r[2204]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2203]!, self._r[2203]!, [_0, _1]) } - public var ChatList_PeerTypeBot: String { return self._s[2207]! } + public var ChatList_PeerTypeBot: String { return self._s[2206]! } public func Channel_AdminLog_SetSlowmode(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2208]!, self._r[2208]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2207]!, self._r[2207]!, [_1, _2]) } - public var Appearance_ThemePreview_Chat_6_Text: String { return self._s[2209]! } + public var Appearance_ThemePreview_Chat_6_Text: String { return self._s[2208]! } public func Time_PreciseDate_m1(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2210]!, self._r[2210]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2209]!, self._r[2209]!, [_1, _2, _3]) } - public var Camera_PhotoMode: String { return self._s[2212]! } + public var Camera_PhotoMode: String { return self._s[2211]! } public func PUSH_MESSAGE_GAME_SCORE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2213]!, self._r[2213]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2212]!, self._r[2212]!, [_1, _2, _3]) } - public var ContactInfo_PhoneLabelPager: String { return self._s[2214]! } - public var SettingsSearch_Synonyms_FAQ: String { return self._s[2215]! } - public var Call_CallAgain: String { return self._s[2216]! } - public var TwoStepAuth_PasswordSet: String { return self._s[2217]! } - public var VoiceChat_EditDescriptionPlaceholder: String { return self._s[2218]! } + public var ContactInfo_PhoneLabelPager: String { return self._s[2213]! } + public var SettingsSearch_Synonyms_FAQ: String { return self._s[2214]! } + public var Call_CallAgain: String { return self._s[2215]! } + public var TwoStepAuth_PasswordSet: String { return self._s[2216]! } + public var VoiceChat_EditDescriptionPlaceholder: String { return self._s[2217]! } public func Channel_Management_RestrictedBy(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2219]!, self._r[2219]!, [_0]) + return formatWithArgumentRanges(self._s[2218]!, self._r[2218]!, [_0]) } - public var GroupInfo_InviteLink_RevokeAlert_Success: String { return self._s[2220]! } - public var ClearCache_FreeSpaceDescription: String { return self._s[2221]! } - public var Permissions_ContactsAllowInSettings_v0: String { return self._s[2222]! } - public var Group_LeaveGroup: String { return self._s[2223]! } - public var Channel_Setup_LinkTypePrivate: String { return self._s[2225]! } - public var GroupInfo_LabelAdmin: String { return self._s[2227]! } - public var CheckoutInfo_ErrorStateInvalid: String { return self._s[2229]! } - public var Notification_PassportValuePersonalDetails: String { return self._s[2230]! } + public var GroupInfo_InviteLink_RevokeAlert_Success: String { return self._s[2219]! } + public var ClearCache_FreeSpaceDescription: String { return self._s[2220]! } + public var Permissions_ContactsAllowInSettings_v0: String { return self._s[2221]! } + public var Group_LeaveGroup: String { return self._s[2222]! } + public var Channel_Setup_LinkTypePrivate: String { return self._s[2224]! } + public var GroupInfo_LabelAdmin: String { return self._s[2226]! } + public var CheckoutInfo_ErrorStateInvalid: String { return self._s[2228]! } + public var Notification_PassportValuePersonalDetails: String { return self._s[2229]! } public func WebSearch_SearchNoResultsDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2231]!, self._r[2231]!, [_0]) + return formatWithArgumentRanges(self._s[2230]!, self._r[2230]!, [_0]) } - public var Stats_GroupNewMembersBySourceTitle: String { return self._s[2232]! } - public var Appearance_Preview: String { return self._s[2233]! } - public var VoiceOver_Chat_Contact: String { return self._s[2234]! } - public var Passport_Language_th: String { return self._s[2235]! } - public var PhotoEditor_CropAspectRatioOriginal: String { return self._s[2237]! } - public var LastSeen_Offline: String { return self._s[2240]! } - public var Map_OpenInHereMaps: String { return self._s[2241]! } - public var SettingsSearch_Synonyms_Data_AutoplayVideos: String { return self._s[2242]! } - public var InviteLink_ContextEdit: String { return self._s[2244]! } - public var AutoDownloadSettings_Reset: String { return self._s[2245]! } - public var Conversation_SendMessage_SetReminder: String { return self._s[2246]! } - public var Channel_AdminLog_EmptyMessageText: String { return self._s[2247]! } + public var Stats_GroupNewMembersBySourceTitle: String { return self._s[2231]! } + public var Appearance_Preview: String { return self._s[2232]! } + public var VoiceOver_Chat_Contact: String { return self._s[2233]! } + public var Passport_Language_th: String { return self._s[2234]! } + public var PhotoEditor_CropAspectRatioOriginal: String { return self._s[2236]! } + public var LastSeen_Offline: String { return self._s[2239]! } + public var Map_OpenInHereMaps: String { return self._s[2240]! } + public var SettingsSearch_Synonyms_Data_AutoplayVideos: String { return self._s[2241]! } + public var InviteLink_ContextEdit: String { return self._s[2243]! } + public var AutoDownloadSettings_Reset: String { return self._s[2244]! } + public var Conversation_SendMessage_SetReminder: String { return self._s[2245]! } + public var Channel_AdminLog_EmptyMessageText: String { return self._s[2246]! } public func AddContact_StatusSuccess(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2248]!, self._r[2248]!, [_0]) + return formatWithArgumentRanges(self._s[2247]!, self._r[2247]!, [_0]) } public func AuthCode_Alert(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2249]!, self._r[2249]!, [_0]) + return formatWithArgumentRanges(self._s[2248]!, self._r[2248]!, [_0]) } - public var Passport_Identity_EditDriversLicense: String { return self._s[2250]! } - public var ChatListFolder_NameNonMuted: String { return self._s[2251]! } - public var Username_Placeholder: String { return self._s[2252]! } + public var Passport_Identity_EditDriversLicense: String { return self._s[2249]! } + public var ChatListFolder_NameNonMuted: String { return self._s[2250]! } + public var Username_Placeholder: String { return self._s[2251]! } public func PUSH_ALBUM(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2253]!, self._r[2253]!, [_1]) + return formatWithArgumentRanges(self._s[2252]!, self._r[2252]!, [_1]) } - public var Passport_Language_it: String { return self._s[2254]! } - public var Checkout_NewCard_SaveInfo: String { return self._s[2255]! } + public var Passport_Language_it: String { return self._s[2253]! } + public var Checkout_NewCard_SaveInfo: String { return self._s[2254]! } public func Channel_OwnershipTransfer_DescriptionInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2256]!, self._r[2256]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2255]!, self._r[2255]!, [_1, _2]) } - public var NotificationsSound_Pulse: String { return self._s[2257]! } - public var VoiceOver_DismissContextMenu: String { return self._s[2259]! } - public var MessagePoll_NoVotes: String { return self._s[2262]! } - public var Message_Wallpaper: String { return self._s[2263]! } - public var Conversation_JoinVoiceChat: String { return self._s[2264]! } - public var Appearance_Other: String { return self._s[2265]! } - public var Passport_Identity_NativeNameHelp: String { return self._s[2267]! } - public var Group_PublicLink_Placeholder: String { return self._s[2271]! } - public var Appearance_ThemePreview_ChatList_2_Text: String { return self._s[2272]! } - public var VoiceOver_Recording_StopAndPreview: String { return self._s[2273]! } - public var ChatListFolder_NameBots: String { return self._s[2274]! } - public var Conversation_StopPollConfirmation: String { return self._s[2275]! } - public var UserInfo_DeleteContact: String { return self._s[2276]! } + public var NotificationsSound_Pulse: String { return self._s[2256]! } + public var VoiceOver_DismissContextMenu: String { return self._s[2258]! } + public var MessagePoll_NoVotes: String { return self._s[2261]! } + public var Message_Wallpaper: String { return self._s[2262]! } + public var Conversation_JoinVoiceChat: String { return self._s[2263]! } + public var Appearance_Other: String { return self._s[2264]! } + public var Passport_Identity_NativeNameHelp: String { return self._s[2266]! } + public var Group_PublicLink_Placeholder: String { return self._s[2270]! } + public var Appearance_ThemePreview_ChatList_2_Text: String { return self._s[2271]! } + public var VoiceOver_Recording_StopAndPreview: String { return self._s[2272]! } + public var ChatListFolder_NameBots: String { return self._s[2273]! } + public var Conversation_StopPollConfirmation: String { return self._s[2274]! } + public var UserInfo_DeleteContact: String { return self._s[2275]! } public func Time_MonthOfYear_m11(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2277]!, self._r[2277]!, [_0]) + return formatWithArgumentRanges(self._s[2276]!, self._r[2276]!, [_0]) } - public var Wallpaper_Wallpaper: String { return self._s[2279]! } + public var Wallpaper_Wallpaper: String { return self._s[2278]! } public func PUSH_MESSAGE_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2280]!, self._r[2280]!, [_1]) + return formatWithArgumentRanges(self._s[2279]!, self._r[2279]!, [_1]) } - public var LoginPassword_ForgotPassword: String { return self._s[2281]! } - public var FeaturedStickerPacks_Title: String { return self._s[2282]! } - public var Paint_Pen: String { return self._s[2283]! } - public var Channel_AdminLogFilter_EventsInfo: String { return self._s[2284]! } - public var ChatListFolderSettings_Info: String { return self._s[2285]! } - public var FastTwoStepSetup_HintPlaceholder: String { return self._s[2286]! } - public var PhotoEditor_CurvesAll: String { return self._s[2288]! } + public var LoginPassword_ForgotPassword: String { return self._s[2280]! } + public var FeaturedStickerPacks_Title: String { return self._s[2281]! } + public var Paint_Pen: String { return self._s[2282]! } + public var Channel_AdminLogFilter_EventsInfo: String { return self._s[2283]! } + public var ChatListFolderSettings_Info: String { return self._s[2284]! } + public var FastTwoStepSetup_HintPlaceholder: String { return self._s[2285]! } + public var PhotoEditor_CurvesAll: String { return self._s[2287]! } public func Time_PreciseDate_m12(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2290]!, self._r[2290]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2289]!, self._r[2289]!, [_1, _2, _3]) } - public var Passport_Address_TypeRentalAgreement: String { return self._s[2292]! } - public var Message_ImageExpired: String { return self._s[2293]! } - public var Call_ConnectionErrorMessage: String { return self._s[2294]! } - public var SearchImages_NoImagesFound: String { return self._s[2296]! } - public var PeerInfo_PaneGifs: String { return self._s[2297]! } - public var Passport_DeletePersonalDetailsConfirmation: String { return self._s[2298]! } - public var EnterPasscode_RepeatNewPasscode: String { return self._s[2299]! } - public var PhotoEditor_VignetteTool: String { return self._s[2300]! } - public var Passport_Language_dz: String { return self._s[2301]! } - public var Notifications_ChannelNotificationsHelp: String { return self._s[2302]! } - public var Conversation_BlockUser: String { return self._s[2303]! } - public var GroupPermission_PermissionDisabledByDefault: String { return self._s[2306]! } - public var Group_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[2308]! } + public var Passport_Address_TypeRentalAgreement: String { return self._s[2291]! } + public var Message_ImageExpired: String { return self._s[2292]! } + public var Call_ConnectionErrorMessage: String { return self._s[2293]! } + public var SearchImages_NoImagesFound: String { return self._s[2295]! } + public var PeerInfo_PaneGifs: String { return self._s[2296]! } + public var Passport_DeletePersonalDetailsConfirmation: String { return self._s[2297]! } + public var EnterPasscode_RepeatNewPasscode: String { return self._s[2298]! } + public var PhotoEditor_VignetteTool: String { return self._s[2299]! } + public var Passport_Language_dz: String { return self._s[2300]! } + public var Notifications_ChannelNotificationsHelp: String { return self._s[2301]! } + public var Conversation_BlockUser: String { return self._s[2302]! } + public var GroupPermission_PermissionDisabledByDefault: String { return self._s[2305]! } + public var Group_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[2307]! } public func Time_MonthOfYear_m8(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2309]!, self._r[2309]!, [_0]) + return formatWithArgumentRanges(self._s[2308]!, self._r[2308]!, [_0]) } - public var KeyCommand_NewMessage: String { return self._s[2310]! } - public var EditTheme_Edit_Preview_IncomingReplyText: String { return self._s[2313]! } + public var KeyCommand_NewMessage: String { return self._s[2309]! } + public var EditTheme_Edit_Preview_IncomingReplyText: String { return self._s[2312]! } public func PUSH_CHAT_MESSAGE_GEO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2315]!, self._r[2315]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2314]!, self._r[2314]!, [_1, _2]) } - public var ContactList_Context_StartSecretChat: String { return self._s[2316]! } - public var VoiceOver_Chat_File: String { return self._s[2317]! } - public var ChatList_EditFolder: String { return self._s[2319]! } - public var Appearance_BubbleCorners_Title: String { return self._s[2320]! } - public var PeerInfo_PaneAudio: String { return self._s[2321]! } - public var ChatListFolder_CategoryContacts: String { return self._s[2323]! } - public var VoiceOver_ScheduledMessages: String { return self._s[2324]! } + public var ContactList_Context_StartSecretChat: String { return self._s[2315]! } + public var VoiceOver_Chat_File: String { return self._s[2316]! } + public var ChatList_EditFolder: String { return self._s[2318]! } + public var Appearance_BubbleCorners_Title: String { return self._s[2319]! } + public var PeerInfo_PaneAudio: String { return self._s[2320]! } + public var ChatListFolder_CategoryContacts: String { return self._s[2322]! } + public var VoiceOver_ScheduledMessages: String { return self._s[2323]! } public func Login_InvalidPhoneEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2325]!, self._r[2325]!, [_1, _2, _3, _4, _5]) + return formatWithArgumentRanges(self._s[2324]!, self._r[2324]!, [_1, _2, _3, _4, _5]) } - public var ChatList_PeerTypeChannel: String { return self._s[2326]! } - public var VoiceOver_Navigation_Search: String { return self._s[2327]! } - public var Settings_Search: String { return self._s[2328]! } - public var WallpaperSearch_ColorYellow: String { return self._s[2329]! } - public var Login_PhoneBannedError: String { return self._s[2330]! } - public var KeyCommand_JumpToNextChat: String { return self._s[2331]! } - public var Passport_Language_fa: String { return self._s[2332]! } - public var Settings_About: String { return self._s[2333]! } - public var AutoDownloadSettings_MaxFileSize: String { return self._s[2334]! } - public var Channel_AdminLog_InfoPanelChannelAlertText: String { return self._s[2335]! } - public var AutoDownloadSettings_DataUsageHigh: String { return self._s[2336]! } + public var ChatList_PeerTypeChannel: String { return self._s[2325]! } + public var VoiceOver_Navigation_Search: String { return self._s[2326]! } + public var Settings_Search: String { return self._s[2327]! } + public var WallpaperSearch_ColorYellow: String { return self._s[2328]! } + public var Login_PhoneBannedError: String { return self._s[2329]! } + public var KeyCommand_JumpToNextChat: String { return self._s[2330]! } + public var Passport_Language_fa: String { return self._s[2331]! } + public var Settings_About: String { return self._s[2332]! } + public var AutoDownloadSettings_MaxFileSize: String { return self._s[2333]! } + public var Channel_AdminLog_InfoPanelChannelAlertText: String { return self._s[2334]! } + public var AutoDownloadSettings_DataUsageHigh: String { return self._s[2335]! } public func PUSH_CHAT_MESSAGE_TEXT(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2337]!, self._r[2337]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2336]!, self._r[2336]!, [_1, _2, _3]) } - public var Common_OK: String { return self._s[2338]! } - public var Contacts_SortBy: String { return self._s[2339]! } - public var AutoNightTheme_PreferredTheme: String { return self._s[2340]! } + public var Common_OK: String { return self._s[2337]! } + public var Contacts_SortBy: String { return self._s[2338]! } + public var AutoNightTheme_PreferredTheme: String { return self._s[2339]! } public func AutoDownloadSettings_OnFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2342]!, self._r[2342]!, [_0]) + return formatWithArgumentRanges(self._s[2341]!, self._r[2341]!, [_0]) } - public var CallFeedback_IncludeLogs: String { return self._s[2345]! } + public var CallFeedback_IncludeLogs: String { return self._s[2344]! } public func External_OpenIn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2346]!, self._r[2346]!, [_0]) + return formatWithArgumentRanges(self._s[2345]!, self._r[2345]!, [_0]) } - public var Passcode_AppLockedAlert: String { return self._s[2348]! } - public var TwoStepAuth_SetupPasswordTitle: String { return self._s[2349]! } - public var Channel_NotificationLoading: String { return self._s[2351]! } - public var Passport_Identity_DocumentNumber: String { return self._s[2352]! } - public var VoiceOver_Chat_PagePreview: String { return self._s[2353]! } - public var VoiceOver_Chat_OpenHint: String { return self._s[2354]! } - public var Weekday_ShortFriday: String { return self._s[2355]! } - public var Conversation_TitleMute: String { return self._s[2356]! } - public var SettingsSearch_Synonyms_Notifications_GroupNotificationsSound: String { return self._s[2357]! } - public var ScheduledMessages_PollUnavailable: String { return self._s[2358]! } - public var DialogList_LanguageTooltip: String { return self._s[2360]! } - public var BroadcastGroups_IntroTitle: String { return self._s[2361]! } - public var Channel_AdminLogFilter_EventsPinned: String { return self._s[2362]! } + public var Passcode_AppLockedAlert: String { return self._s[2347]! } + public var TwoStepAuth_SetupPasswordTitle: String { return self._s[2348]! } + public var Channel_NotificationLoading: String { return self._s[2350]! } + public var Passport_Identity_DocumentNumber: String { return self._s[2351]! } + public var VoiceOver_Chat_PagePreview: String { return self._s[2352]! } + public var VoiceOver_Chat_OpenHint: String { return self._s[2353]! } + public var Weekday_ShortFriday: String { return self._s[2354]! } + public var Conversation_TitleMute: String { return self._s[2355]! } + public var SettingsSearch_Synonyms_Notifications_GroupNotificationsSound: String { return self._s[2356]! } + public var ScheduledMessages_PollUnavailable: String { return self._s[2357]! } + public var DialogList_LanguageTooltip: String { return self._s[2359]! } + public var BroadcastGroups_IntroTitle: String { return self._s[2360]! } + public var Channel_AdminLogFilter_EventsPinned: String { return self._s[2361]! } public func DialogList_SingleUploadingVideoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2363]!, self._r[2363]!, [_0]) + return formatWithArgumentRanges(self._s[2362]!, self._r[2362]!, [_0]) } - public var TwoStepAuth_SetupResendEmailCodeAlert: String { return self._s[2365]! } - public var Privacy_Calls_AlwaysAllow_Title: String { return self._s[2366]! } - public var Settings_EditVideo: String { return self._s[2367]! } - public var VoiceOver_Common_Off: String { return self._s[2368]! } - public var Stickers_FrequentlyUsed: String { return self._s[2369]! } - public var GroupPermission_Title: String { return self._s[2370]! } - public var AccessDenied_VideoMessageCamera: String { return self._s[2371]! } - public var Appearance_ThemeCarouselDay: String { return self._s[2372]! } + public var TwoStepAuth_SetupResendEmailCodeAlert: String { return self._s[2364]! } + public var Privacy_Calls_AlwaysAllow_Title: String { return self._s[2365]! } + public var Settings_EditVideo: String { return self._s[2366]! } + public var VoiceOver_Common_Off: String { return self._s[2367]! } + public var Stickers_FrequentlyUsed: String { return self._s[2368]! } + public var GroupPermission_Title: String { return self._s[2369]! } + public var AccessDenied_VideoMessageCamera: String { return self._s[2370]! } + public var Appearance_ThemeCarouselDay: String { return self._s[2371]! } public func PUSH_CHAT_MESSAGE_AUDIO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2373]!, self._r[2373]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2372]!, self._r[2372]!, [_1, _2]) } - public var Passport_Identity_DocumentNumberPlaceholder: String { return self._s[2374]! } - public var Tour_Title6: String { return self._s[2375]! } - public var EmptyGroupInfo_Title: String { return self._s[2376]! } + public var Passport_Identity_DocumentNumberPlaceholder: String { return self._s[2373]! } + public var Tour_Title6: String { return self._s[2374]! } + public var EmptyGroupInfo_Title: String { return self._s[2375]! } public func Channel_AdminLog_MessageToggleSignaturesOn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2377]!, self._r[2377]!, [_0]) + return formatWithArgumentRanges(self._s[2376]!, self._r[2376]!, [_0]) } - public var Passport_Language_sk: String { return self._s[2378]! } - public var VoiceOver_Chat_YourAnonymousPoll: String { return self._s[2379]! } - public var Preview_SaveToCameraRoll: String { return self._s[2380]! } + public var Passport_Language_sk: String { return self._s[2377]! } + public var VoiceOver_Chat_YourAnonymousPoll: String { return self._s[2378]! } + public var Preview_SaveToCameraRoll: String { return self._s[2379]! } public func VoiceChat_YouCanNowSpeakIn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2381]!, self._r[2381]!, [_0]) + return formatWithArgumentRanges(self._s[2380]!, self._r[2380]!, [_0]) } - public var LogoutOptions_SetPasscodeTitle: String { return self._s[2382]! } - public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[2383]! } - public var Conversation_ContextMenuMore: String { return self._s[2384]! } - public var Conversation_ForwardAuthorHiddenTooltip: String { return self._s[2385]! } - public var Channel_AdminLog_CanBeAnonymous: String { return self._s[2386]! } - public var CallFeedback_ReasonSilentLocal: String { return self._s[2388]! } + public var LogoutOptions_SetPasscodeTitle: String { return self._s[2381]! } + public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[2382]! } + public var Conversation_ContextMenuMore: String { return self._s[2383]! } + public var Conversation_ForwardAuthorHiddenTooltip: String { return self._s[2384]! } + public var Channel_AdminLog_CanBeAnonymous: String { return self._s[2385]! } + public var CallFeedback_ReasonSilentLocal: String { return self._s[2387]! } public func Channel_AdminLog_UnmutedMutedParticipant(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2389]!, self._r[2389]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2388]!, self._r[2388]!, [_1, _2]) } - public var UserInfo_NotificationsDisable: String { return self._s[2390]! } + public var UserInfo_NotificationsDisable: String { return self._s[2389]! } public func Channel_AdminLog_EmptyFilterQueryText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2392]!, self._r[2392]!, [_0]) + return formatWithArgumentRanges(self._s[2391]!, self._r[2391]!, [_0]) } - public var SettingsSearch_Synonyms_EditProfile_Bio: String { return self._s[2393]! } + public var SettingsSearch_Synonyms_EditProfile_Bio: String { return self._s[2392]! } public func Date_ChatDateHeader(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2395]!, self._r[2395]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2394]!, self._r[2394]!, [_1, _2]) } - public var WallpaperSearch_ColorPrefix: String { return self._s[2396]! } + public var WallpaperSearch_ColorPrefix: String { return self._s[2395]! } public func Message_ForwardedPsa_covid(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2397]!, self._r[2397]!, [_0]) + return formatWithArgumentRanges(self._s[2396]!, self._r[2396]!, [_0]) } - public var Conversation_RestrictedMedia: String { return self._s[2399]! } - public var Group_MessageVideoUpdated: String { return self._s[2400]! } - public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[2401]! } - public var GroupInfo_DeleteAndExit: String { return self._s[2402]! } - public var TwoFactorSetup_Email_Action: String { return self._s[2403]! } - public var Media_ShareThisVideo: String { return self._s[2405]! } - public var DialogList_Replies: String { return self._s[2407]! } + public var Conversation_RestrictedMedia: String { return self._s[2398]! } + public var Group_MessageVideoUpdated: String { return self._s[2399]! } + public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[2400]! } + public var GroupInfo_DeleteAndExit: String { return self._s[2401]! } + public var TwoFactorSetup_Email_Action: String { return self._s[2402]! } + public var Media_ShareThisVideo: String { return self._s[2404]! } + public var DialogList_Replies: String { return self._s[2406]! } public func Conversation_Moderate_DeleteAllMessages(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2408]!, self._r[2408]!, [_0]) + return formatWithArgumentRanges(self._s[2407]!, self._r[2407]!, [_0]) } - public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[2409]! } - public var Watch_Suggestion_OnMyWay: String { return self._s[2410]! } - public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[2411]! } + public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[2408]! } + public var Watch_Suggestion_OnMyWay: String { return self._s[2409]! } + public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[2410]! } public func PUSH_PINNED_POLL(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2412]!, self._r[2412]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2411]!, self._r[2411]!, [_1, _2]) } public func GroupInfo_InvitationLinkAcceptChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2413]!, self._r[2413]!, [_0]) + return formatWithArgumentRanges(self._s[2412]!, self._r[2412]!, [_0]) } - public var Channel_EditAdmin_PermissinAddAdminOff: String { return self._s[2414]! } - public var ChatAdmins_AllMembersAreAdminsOnHelp: String { return self._s[2415]! } - public var ChatList_Search_NoResultsFitlerMedia: String { return self._s[2416]! } - public var Channel_Members_InviteLink: String { return self._s[2417]! } - public var Conversation_TapAndHoldToRecord: String { return self._s[2418]! } - public var WatchRemote_AlertText: String { return self._s[2419]! } + public var Channel_EditAdmin_PermissinAddAdminOff: String { return self._s[2413]! } + public var ChatAdmins_AllMembersAreAdminsOnHelp: String { return self._s[2414]! } + public var ChatList_Search_NoResultsFitlerMedia: String { return self._s[2415]! } + public var Channel_Members_InviteLink: String { return self._s[2416]! } + public var Conversation_TapAndHoldToRecord: String { return self._s[2417]! } + public var WatchRemote_AlertText: String { return self._s[2418]! } public func Channel_DiscussionGroup_PrivateChannelLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2420]!, self._r[2420]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2419]!, self._r[2419]!, [_1, _2]) } - public var Conversation_Pin: String { return self._s[2421]! } - public var InfoPlist_NSMicrophoneUsageDescription: String { return self._s[2422]! } - public var Stickers_RemoveFromFavorites: String { return self._s[2423]! } - public var Conversation_CancelForwardTitle: String { return self._s[2424]! } + public var Conversation_Pin: String { return self._s[2420]! } + public var InfoPlist_NSMicrophoneUsageDescription: String { return self._s[2421]! } + public var Stickers_RemoveFromFavorites: String { return self._s[2422]! } + public var Conversation_CancelForwardTitle: String { return self._s[2423]! } public func Notification_PinnedPollMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2425]!, self._r[2425]!, [_0]) + return formatWithArgumentRanges(self._s[2424]!, self._r[2424]!, [_0]) } - public var Appearance_AppIconFilled: String { return self._s[2426]! } - public var StickerPack_ErrorNotFound: String { return self._s[2427]! } + public var Appearance_AppIconFilled: String { return self._s[2425]! } + public var StickerPack_ErrorNotFound: String { return self._s[2426]! } public func Channel_AdminLog_MessageRestrictedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2428]!, self._r[2428]!, [_1]) + return formatWithArgumentRanges(self._s[2427]!, self._r[2427]!, [_1]) } - public var Passport_Identity_AddIdentityCard: String { return self._s[2429]! } + public var Passport_Identity_AddIdentityCard: String { return self._s[2428]! } public func PUSH_CHANNEL_MESSAGE_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2431]!, self._r[2431]!, [_1]) + return formatWithArgumentRanges(self._s[2430]!, self._r[2430]!, [_1]) } - public var Call_Camera: String { return self._s[2432]! } - public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[2433]! } - public var Group_Location_Info: String { return self._s[2434]! } - public var Watch_LastSeen_WithinAMonth: String { return self._s[2435]! } - public var UserInfo_NotificationsDefaultEnabled: String { return self._s[2436]! } + public var Call_Camera: String { return self._s[2431]! } + public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[2432]! } + public var Group_Location_Info: String { return self._s[2433]! } + public var Watch_LastSeen_WithinAMonth: String { return self._s[2434]! } + public var UserInfo_NotificationsDefaultEnabled: String { return self._s[2435]! } public func DialogList_PinLimitError(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2437]!, self._r[2437]!, [_0]) + return formatWithArgumentRanges(self._s[2436]!, self._r[2436]!, [_0]) } - public var Weekday_Yesterday: String { return self._s[2438]! } - public var TwoStepAuth_SetupPasswordEnterPasswordNew: String { return self._s[2439]! } - public var InviteLink_Create_UsersLimit: String { return self._s[2440]! } + public var Weekday_Yesterday: String { return self._s[2437]! } + public var TwoStepAuth_SetupPasswordEnterPasswordNew: String { return self._s[2438]! } + public var InviteLink_Create_UsersLimit: String { return self._s[2439]! } public func Notification_VoiceChatScheduledTodayChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2441]!, self._r[2441]!, [_0]) + return formatWithArgumentRanges(self._s[2440]!, self._r[2440]!, [_0]) } - public var ArchivedPacksAlert_Title: String { return self._s[2442]! } - public var PeerInfo_PaneMembers: String { return self._s[2443]! } - public var PhotoEditor_SelectCoverFrame: String { return self._s[2444]! } + public var ArchivedPacksAlert_Title: String { return self._s[2441]! } + public var PeerInfo_PaneMembers: String { return self._s[2442]! } + public var PhotoEditor_SelectCoverFrame: String { return self._s[2443]! } public func Location_ProximityAlertSetTextGroup(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2445]!, self._r[2445]!, [_0]) + return formatWithArgumentRanges(self._s[2444]!, self._r[2444]!, [_0]) } - public var ContactInfo_PhoneLabelMain: String { return self._s[2446]! } + public var ContactInfo_PhoneLabelMain: String { return self._s[2445]! } public func Time_PreciseDate_m7(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2447]!, self._r[2447]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[2446]!, self._r[2446]!, [_1, _2, _3]) } - public var TwoFactorSetup_EmailVerification_ChangeAction: String { return self._s[2448]! } - public var Channel_DiscussionGroup: String { return self._s[2449]! } - public var EditTheme_Edit_Preview_IncomingReplyName: String { return self._s[2450]! } - public var InviteLink_Create_TimeLimit: String { return self._s[2452]! } - public var Channel_EditAdmin_PermissionsHeader: String { return self._s[2453]! } - public var VoiceOver_MessageContextForward: String { return self._s[2454]! } - public var SocksProxySetup_TypeNone: String { return self._s[2455]! } - public var CreatePoll_MultipleChoiceQuizAlert: String { return self._s[2457]! } - public var ProfilePhoto_OpenInEditor: String { return self._s[2459]! } - public var WallpaperSearch_ColorPurple: String { return self._s[2460]! } - public var ChatListFolder_IncludeChatsTitle: String { return self._s[2461]! } - public var Group_Username_InvalidTooShort: String { return self._s[2462]! } - public var Location_ProximityNotification_DistanceM: String { return self._s[2463]! } - public var VoiceChat_EditTitleText: String { return self._s[2464]! } + public var TwoFactorSetup_EmailVerification_ChangeAction: String { return self._s[2447]! } + public var Channel_DiscussionGroup: String { return self._s[2448]! } + public var EditTheme_Edit_Preview_IncomingReplyName: String { return self._s[2449]! } + public var InviteLink_Create_TimeLimit: String { return self._s[2451]! } + public var Channel_EditAdmin_PermissionsHeader: String { return self._s[2452]! } + public var VoiceOver_MessageContextForward: String { return self._s[2453]! } + public var SocksProxySetup_TypeNone: String { return self._s[2454]! } + public var CreatePoll_MultipleChoiceQuizAlert: String { return self._s[2456]! } + public var ProfilePhoto_OpenInEditor: String { return self._s[2458]! } + public var WallpaperSearch_ColorPurple: String { return self._s[2459]! } + public var ChatListFolder_IncludeChatsTitle: String { return self._s[2460]! } + public var Group_Username_InvalidTooShort: String { return self._s[2461]! } + public var Location_ProximityNotification_DistanceM: String { return self._s[2462]! } + public var VoiceChat_EditTitleText: String { return self._s[2463]! } public func Login_EmailPhoneBody(_ _0: String, _ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2465]!, self._r[2465]!, [_0, _1, _2]) + return formatWithArgumentRanges(self._s[2464]!, self._r[2464]!, [_0, _1, _2]) } - public var Passport_Language_tk: String { return self._s[2466]! } - public var ConvertToSupergroup_Title: String { return self._s[2467]! } - public var Channel_BanUser_PermissionEmbedLinks: String { return self._s[2468]! } - public var Cache_KeepMediaHelp: String { return self._s[2469]! } - public var Channel_Management_Title: String { return self._s[2470]! } + public var Passport_Language_tk: String { return self._s[2465]! } + public var ConvertToSupergroup_Title: String { return self._s[2466]! } + public var Channel_BanUser_PermissionEmbedLinks: String { return self._s[2467]! } + public var Cache_KeepMediaHelp: String { return self._s[2468]! } + public var Channel_Management_Title: String { return self._s[2469]! } public func PUSH_MESSAGE_PHOTO_SECRET(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2471]!, self._r[2471]!, [_1]) + return formatWithArgumentRanges(self._s[2470]!, self._r[2470]!, [_1]) } - public var Conversation_ForwardChats: String { return self._s[2472]! } - public var Passport_Language_bg: String { return self._s[2473]! } - public var SocksProxySetup_TypeSocks: String { return self._s[2474]! } - public var Permissions_PrivacyPolicy: String { return self._s[2475]! } - public var VoiceOver_Chat_YourMusic: String { return self._s[2476]! } - public var SettingsSearch_Synonyms_Notifications_ResetAllNotifications: String { return self._s[2477]! } - public var Conversation_EmptyGifPanelPlaceholder: String { return self._s[2478]! } - public var Conversation_ContextMenuOpenChannel: String { return self._s[2479]! } - public var Report_AdditionalDetailsPlaceholder: String { return self._s[2480]! } - public var Activity_UploadingVideo: String { return self._s[2481]! } - public var PrivacyPolicy_AgeVerificationAgree: String { return self._s[2483]! } - public var Widget_LongTapToEdit: String { return self._s[2484]! } - public var VoiceChat_InviteLink_Listener: String { return self._s[2486]! } - public var SocksProxySetup_Credentials: String { return self._s[2487]! } - public var Preview_SaveGif: String { return self._s[2488]! } - public var Cache_Photos: String { return self._s[2489]! } - public var Channel_AdminLogFilter_EventsCalls: String { return self._s[2490]! } - public var Conversation_ContextMenuCancelEditing: String { return self._s[2491]! } - public var Contacts_FailedToSendInvitesMessage: String { return self._s[2492]! } + public var Conversation_ForwardChats: String { return self._s[2471]! } + public var Passport_Language_bg: String { return self._s[2472]! } + public var SocksProxySetup_TypeSocks: String { return self._s[2473]! } + public var Permissions_PrivacyPolicy: String { return self._s[2474]! } + public var VoiceOver_Chat_YourMusic: String { return self._s[2475]! } + public var SettingsSearch_Synonyms_Notifications_ResetAllNotifications: String { return self._s[2476]! } + public var Conversation_EmptyGifPanelPlaceholder: String { return self._s[2477]! } + public var Conversation_ContextMenuOpenChannel: String { return self._s[2478]! } + public var Report_AdditionalDetailsPlaceholder: String { return self._s[2479]! } + public var Activity_UploadingVideo: String { return self._s[2480]! } + public var PrivacyPolicy_AgeVerificationAgree: String { return self._s[2482]! } + public var Widget_LongTapToEdit: String { return self._s[2483]! } + public var VoiceChat_InviteLink_Listener: String { return self._s[2485]! } + public var SocksProxySetup_Credentials: String { return self._s[2486]! } + public var Preview_SaveGif: String { return self._s[2487]! } + public var Cache_Photos: String { return self._s[2488]! } + public var Channel_AdminLogFilter_EventsCalls: String { return self._s[2489]! } + public var Conversation_ContextMenuCancelEditing: String { return self._s[2490]! } + public var Contacts_FailedToSendInvitesMessage: String { return self._s[2491]! } public func VoiceChat_RemoveAndBanPeerConfirmation(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2493]!, self._r[2493]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2492]!, self._r[2492]!, [_1, _2]) } - public var Passport_Language_lt: String { return self._s[2494]! } - public var Passport_DeleteDocument: String { return self._s[2496]! } - public var GroupInfo_SetGroupPhotoStop: String { return self._s[2497]! } + public var Passport_Language_lt: String { return self._s[2493]! } + public var Passport_DeleteDocument: String { return self._s[2495]! } + public var GroupInfo_SetGroupPhotoStop: String { return self._s[2496]! } public func Location_ProximityNotification_NotifyLong(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2498]!, self._r[2498]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2497]!, self._r[2497]!, [_1, _2]) } - public var AccessDenied_VideoMessageMicrophone: String { return self._s[2499]! } + public var AccessDenied_VideoMessageMicrophone: String { return self._s[2498]! } public func PeopleNearby_VisibleUntil(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2500]!, self._r[2500]!, [_0]) + return formatWithArgumentRanges(self._s[2499]!, self._r[2499]!, [_0]) } - public var AccessDenied_VideoCallCamera: String { return self._s[2501]! } + public var AccessDenied_VideoCallCamera: String { return self._s[2500]! } public func Channel_AdminLog_MessageDeleted(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2502]!, self._r[2502]!, [_0]) + return formatWithArgumentRanges(self._s[2501]!, self._r[2501]!, [_0]) } - public var PhotoEditor_SharpenTool: String { return self._s[2503]! } + public var PhotoEditor_SharpenTool: String { return self._s[2502]! } public func PUSH_CHANNEL_MESSAGE_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2504]!, self._r[2504]!, [_1]) + return formatWithArgumentRanges(self._s[2503]!, self._r[2503]!, [_1]) } - public var DialogList_Unpin: String { return self._s[2505]! } - public var Stickers_NoStickersFound: String { return self._s[2506]! } - public var UserInfo_AddContact: String { return self._s[2508]! } + public var DialogList_Unpin: String { return self._s[2504]! } + public var Stickers_NoStickersFound: String { return self._s[2505]! } + public var UserInfo_AddContact: String { return self._s[2507]! } public func AddContact_SharedContactExceptionInfo(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2510]!, self._r[2510]!, [_0]) + return formatWithArgumentRanges(self._s[2509]!, self._r[2509]!, [_0]) } public func Notification_PinnedLocationMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2511]!, self._r[2511]!, [_0]) + return formatWithArgumentRanges(self._s[2510]!, self._r[2510]!, [_0]) } - public var CallFeedback_VideoReasonDistorted: String { return self._s[2512]! } - public var Tour_Text2: String { return self._s[2513]! } + public var CallFeedback_VideoReasonDistorted: String { return self._s[2511]! } + public var Tour_Text2: String { return self._s[2512]! } public func Conversation_TitleCommentsFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2515]!, self._r[2515]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2514]!, self._r[2514]!, [_1, _2]) } - public var InviteLink_DeleteAllRevokedLinksAlert_Text: String { return self._s[2517]! } - public var Paint_Delete: String { return self._s[2518]! } + public var InviteLink_DeleteAllRevokedLinksAlert_Text: String { return self._s[2516]! } + public var Paint_Delete: String { return self._s[2517]! } public func Call_VoiceChatInProgressMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2519]!, self._r[2519]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2518]!, self._r[2518]!, [_1, _2]) } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsVibrate: String { return self._s[2520]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsVibrate: String { return self._s[2519]! } public func PrivacySettings_LastSeenEverybodyMinus(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2522]!, self._r[2522]!, [_0]) + return formatWithArgumentRanges(self._s[2521]!, self._r[2521]!, [_0]) } - public var Privacy_Calls_NeverAllow_Title: String { return self._s[2523]! } - public var Notification_CallOutgoingShort: String { return self._s[2524]! } - public var Checkout_PasswordEntry_Title: String { return self._s[2525]! } - public var Channel_AdminLogFilter_AdminsAll: String { return self._s[2526]! } - public var Notification_MessageLifetime1m: String { return self._s[2527]! } - public var BlockedUsers_AddNew: String { return self._s[2529]! } - public var FastTwoStepSetup_EmailSection: String { return self._s[2530]! } - public var Settings_SaveEditedPhotos: String { return self._s[2531]! } - public var GroupInfo_GroupNamePlaceholder: String { return self._s[2532]! } - public var Channel_AboutItem: String { return self._s[2533]! } - public var GroupInfo_InviteLink_RevokeLink: String { return self._s[2534]! } - public var Privacy_Calls_P2PNever: String { return self._s[2536]! } - public var Passport_Language_uk: String { return self._s[2537]! } - public var NetworkUsageSettings_Wifi: String { return self._s[2538]! } - public var Conversation_Moderate_Report: String { return self._s[2539]! } - public var Wallpaper_ResetWallpapersConfirmation: String { return self._s[2540]! } - public var VoiceOver_Chat_SeenByRecipients: String { return self._s[2541]! } - public var Permissions_SiriText_v0: String { return self._s[2542]! } - public var Theme_Colors_Background: String { return self._s[2543]! } - public var Notification_CallMissed: String { return self._s[2544]! } - public var Stats_ZoomOut: String { return self._s[2545]! } - public var Profile_AddToExisting: String { return self._s[2546]! } - public var Passport_FieldAddressUploadHelp: String { return self._s[2549]! } - public var VoiceChat_RemovePeerRemove: String { return self._s[2550]! } - public var Undo_DeletedChannel: String { return self._s[2551]! } + public var Privacy_Calls_NeverAllow_Title: String { return self._s[2522]! } + public var Notification_CallOutgoingShort: String { return self._s[2523]! } + public var Checkout_PasswordEntry_Title: String { return self._s[2524]! } + public var Channel_AdminLogFilter_AdminsAll: String { return self._s[2525]! } + public var Notification_MessageLifetime1m: String { return self._s[2526]! } + public var BlockedUsers_AddNew: String { return self._s[2528]! } + public var FastTwoStepSetup_EmailSection: String { return self._s[2529]! } + public var Settings_SaveEditedPhotos: String { return self._s[2530]! } + public var GroupInfo_GroupNamePlaceholder: String { return self._s[2531]! } + public var Channel_AboutItem: String { return self._s[2532]! } + public var GroupInfo_InviteLink_RevokeLink: String { return self._s[2533]! } + public var Privacy_Calls_P2PNever: String { return self._s[2535]! } + public var Passport_Language_uk: String { return self._s[2536]! } + public var NetworkUsageSettings_Wifi: String { return self._s[2537]! } + public var Conversation_Moderate_Report: String { return self._s[2538]! } + public var Wallpaper_ResetWallpapersConfirmation: String { return self._s[2539]! } + public var VoiceOver_Chat_SeenByRecipients: String { return self._s[2540]! } + public var Permissions_SiriText_v0: String { return self._s[2541]! } + public var Theme_Colors_Background: String { return self._s[2542]! } + public var Notification_CallMissed: String { return self._s[2543]! } + public var Stats_ZoomOut: String { return self._s[2544]! } + public var Profile_AddToExisting: String { return self._s[2545]! } + public var Passport_FieldAddressUploadHelp: String { return self._s[2548]! } + public var VoiceChat_RemovePeerRemove: String { return self._s[2549]! } + public var Undo_DeletedChannel: String { return self._s[2550]! } public func Channel_AdminLog_MessagePinned(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2552]!, self._r[2552]!, [_0]) + return formatWithArgumentRanges(self._s[2551]!, self._r[2551]!, [_0]) } - public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2553]! } - public var Map_LiveLocationGroupDescription: String { return self._s[2554]! } - public var Passport_InfoFAQ_URL: String { return self._s[2555]! } - public var IntentsSettings_SuggestedChats: String { return self._s[2558]! } + public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2552]! } + public var Map_LiveLocationGroupDescription: String { return self._s[2553]! } + public var Passport_InfoFAQ_URL: String { return self._s[2554]! } + public var IntentsSettings_SuggestedChats: String { return self._s[2557]! } public func PUSH_MESSAGE_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2559]!, self._r[2559]!, [_1]) + return formatWithArgumentRanges(self._s[2558]!, self._r[2558]!, [_1]) } - public var State_connecting: String { return self._s[2560]! } - public var Passport_Identity_Country: String { return self._s[2561]! } - public var Passport_PasswordDescription: String { return self._s[2562]! } - public var ChatList_PsaLabel_covid: String { return self._s[2563]! } + public var State_connecting: String { return self._s[2559]! } + public var Passport_Identity_Country: String { return self._s[2560]! } + public var Passport_PasswordDescription: String { return self._s[2561]! } + public var ChatList_PsaLabel_covid: String { return self._s[2562]! } public func PUSH_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2564]!, self._r[2564]!, [_1]) + return formatWithArgumentRanges(self._s[2563]!, self._r[2563]!, [_1]) } - public var Contacts_AddPeopleNearby: String { return self._s[2565]! } - public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[2566]! } - public var ClearCache_Description: String { return self._s[2567]! } - public var Localization_LanguageName: String { return self._s[2568]! } + public var Contacts_AddPeopleNearby: String { return self._s[2564]! } + public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[2565]! } + public var ClearCache_Description: String { return self._s[2566]! } + public var Localization_LanguageName: String { return self._s[2567]! } public func UserInfo_UnblockConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2569]!, self._r[2569]!, [_0]) + return formatWithArgumentRanges(self._s[2568]!, self._r[2568]!, [_0]) } - public var Conversation_AddMembers: String { return self._s[2570]! } - public var ChatList_TabIconFoldersTooltipEmptyFolders: String { return self._s[2571]! } - public var UserInfo_CreateNewContact: String { return self._s[2572]! } - public var Channel_Stickers_NotFound: String { return self._s[2574]! } - public var Message_FakeAccount: String { return self._s[2575]! } - public var Watch_Message_Poll: String { return self._s[2576]! } - public var Group_Members_Title: String { return self._s[2577]! } - public var Privacy_Forwards_WhoCanForward: String { return self._s[2578]! } + public var Conversation_AddMembers: String { return self._s[2569]! } + public var ChatList_TabIconFoldersTooltipEmptyFolders: String { return self._s[2570]! } + public var UserInfo_CreateNewContact: String { return self._s[2571]! } + public var Channel_Stickers_NotFound: String { return self._s[2573]! } + public var Message_FakeAccount: String { return self._s[2574]! } + public var Watch_Message_Poll: String { return self._s[2575]! } + public var Group_Members_Title: String { return self._s[2576]! } + public var Privacy_Forwards_WhoCanForward: String { return self._s[2577]! } public func Notification_Kicked(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2579]!, self._r[2579]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2578]!, self._r[2578]!, [_0, _1]) } - public var VoiceChat_CancelConfirmationText: String { return self._s[2580]! } - public var BroadcastGroups_Convert: String { return self._s[2581]! } - public var Login_InfoDeletePhoto: String { return self._s[2582]! } - public var Appearance_ThemePreview_ChatList_6_Name: String { return self._s[2583]! } - public var InstantPage_FeedbackButton: String { return self._s[2584]! } - public var Appearance_PreviewReplyText: String { return self._s[2585]! } - public var Passport_FieldPhoneHelp: String { return self._s[2586]! } - public var Group_ErrorAddTooMuchBots: String { return self._s[2587]! } - public var Media_SendingOptionsTooltip: String { return self._s[2588]! } - public var ScheduledMessages_ScheduledOnline: String { return self._s[2589]! } - public var Notifications_Badge: String { return self._s[2590]! } - public var VoiceOver_Chat_VideoMessage: String { return self._s[2591]! } - public var TwoStepAuth_RecoveryCodeExpired: String { return self._s[2592]! } + public var VoiceChat_CancelConfirmationText: String { return self._s[2579]! } + public var BroadcastGroups_Convert: String { return self._s[2580]! } + public var Login_InfoDeletePhoto: String { return self._s[2581]! } + public var Appearance_ThemePreview_ChatList_6_Name: String { return self._s[2582]! } + public var InstantPage_FeedbackButton: String { return self._s[2583]! } + public var Appearance_PreviewReplyText: String { return self._s[2584]! } + public var Passport_FieldPhoneHelp: String { return self._s[2585]! } + public var Group_ErrorAddTooMuchBots: String { return self._s[2586]! } + public var Media_SendingOptionsTooltip: String { return self._s[2587]! } + public var ScheduledMessages_ScheduledOnline: String { return self._s[2588]! } + public var Notifications_Badge: String { return self._s[2589]! } + public var VoiceOver_Chat_VideoMessage: String { return self._s[2590]! } + public var TwoStepAuth_RecoveryCodeExpired: String { return self._s[2591]! } public func Notification_PinnedPhotoMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2594]!, self._r[2594]!, [_0]) + return formatWithArgumentRanges(self._s[2593]!, self._r[2593]!, [_0]) } - public var Passport_InfoLearnMore: String { return self._s[2595]! } - public var EnterPasscode_EnterTitle: String { return self._s[2596]! } - public var Appearance_EditTheme: String { return self._s[2597]! } - public var EditTheme_Expand_BottomInfo: String { return self._s[2598]! } - public var Stats_FollowersTitle: String { return self._s[2599]! } - public var Passport_Identity_SurnamePlaceholder: String { return self._s[2600]! } - public var Channel_Subscribers_Title: String { return self._s[2601]! } - public var Group_ErrorSupergroupConversionNotPossible: String { return self._s[2602]! } - public var ChatImportActivity_ErrorGeneric: String { return self._s[2603]! } - public var EditTheme_ThemeTemplateAlertTitle: String { return self._s[2604]! } - public var EditTheme_Create_Preview_IncomingText: String { return self._s[2605]! } - public var Conversation_AddToReadingList: String { return self._s[2606]! } - public var VoiceChat_EditBioPlaceholder: String { return self._s[2607]! } + public var Passport_InfoLearnMore: String { return self._s[2594]! } + public var EnterPasscode_EnterTitle: String { return self._s[2595]! } + public var Appearance_EditTheme: String { return self._s[2596]! } + public var EditTheme_Expand_BottomInfo: String { return self._s[2597]! } + public var Stats_FollowersTitle: String { return self._s[2598]! } + public var Passport_Identity_SurnamePlaceholder: String { return self._s[2599]! } + public var Channel_Subscribers_Title: String { return self._s[2600]! } + public var Group_ErrorSupergroupConversionNotPossible: String { return self._s[2601]! } + public var ChatImportActivity_ErrorGeneric: String { return self._s[2602]! } + public var EditTheme_ThemeTemplateAlertTitle: String { return self._s[2603]! } + public var EditTheme_Create_Preview_IncomingText: String { return self._s[2604]! } + public var Conversation_AddToReadingList: String { return self._s[2605]! } + public var VoiceChat_EditBioPlaceholder: String { return self._s[2606]! } public func Notifications_ExceptionsChangeSound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2608]!, self._r[2608]!, [_0]) + return formatWithArgumentRanges(self._s[2607]!, self._r[2607]!, [_0]) } - public var Group_AdminLog_EmptyText: String { return self._s[2609]! } - public var Passport_Identity_EditInternalPassport: String { return self._s[2610]! } - public var Watch_Location_Current: String { return self._s[2611]! } - public var PrivacyPolicy_Title: String { return self._s[2612]! } - public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[2619]! } - public var Channel_TypeSetup_Title: String { return self._s[2623]! } - public var Appearance_PreviewReplyAuthor: String { return self._s[2624]! } - public var Passport_Language_ja: String { return self._s[2625]! } - public var ReportPeer_ReasonSpam: String { return self._s[2626]! } - public var Widget_GalleryDescription: String { return self._s[2627]! } - public var Privacy_PaymentsClearInfoHelp: String { return self._s[2628]! } - public var VoiceChat_ChangePhoto: String { return self._s[2630]! } - public var Conversation_EditingMessageMediaEditCurrentPhoto: String { return self._s[2631]! } - public var Channel_AdminLog_ChangeInfo: String { return self._s[2632]! } - public var ChatListFolder_NameNonContacts: String { return self._s[2633]! } + public var Group_AdminLog_EmptyText: String { return self._s[2608]! } + public var Passport_Identity_EditInternalPassport: String { return self._s[2609]! } + public var Watch_Location_Current: String { return self._s[2610]! } + public var PrivacyPolicy_Title: String { return self._s[2611]! } + public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[2618]! } + public var Channel_TypeSetup_Title: String { return self._s[2622]! } + public var Appearance_PreviewReplyAuthor: String { return self._s[2623]! } + public var Passport_Language_ja: String { return self._s[2624]! } + public var ReportPeer_ReasonSpam: String { return self._s[2625]! } + public var Widget_GalleryDescription: String { return self._s[2626]! } + public var Privacy_PaymentsClearInfoHelp: String { return self._s[2627]! } + public var VoiceChat_ChangePhoto: String { return self._s[2629]! } + public var Conversation_EditingMessageMediaEditCurrentPhoto: String { return self._s[2630]! } + public var Channel_AdminLog_ChangeInfo: String { return self._s[2631]! } + public var ChatListFolder_NameNonContacts: String { return self._s[2632]! } public func InviteLink_ExpiresIn(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2634]!, self._r[2634]!, [_0]) + return formatWithArgumentRanges(self._s[2633]!, self._r[2633]!, [_0]) } - public var Call_Audio: String { return self._s[2635]! } - public var PhotoEditor_CurvesGreen: String { return self._s[2636]! } - public var ChatList_Search_NoResultsFitlerFiles: String { return self._s[2637]! } - public var Settings_PrivacySettings: String { return self._s[2638]! } - public var InviteLink_UsageLimitReached: String { return self._s[2639]! } - public var Stats_Followers: String { return self._s[2640]! } - public var Notifications_AddExceptionTitle: String { return self._s[2641]! } - public var TwoFactorSetup_Password_Title: String { return self._s[2642]! } - public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[2643]! } - public var OldChannels_NoticeText: String { return self._s[2644]! } - public var Conversation_SavedMessages: String { return self._s[2645]! } - public var Intents_ErrorLockedText: String { return self._s[2646]! } + public var Call_Audio: String { return self._s[2634]! } + public var PhotoEditor_CurvesGreen: String { return self._s[2635]! } + public var ChatList_Search_NoResultsFitlerFiles: String { return self._s[2636]! } + public var Settings_PrivacySettings: String { return self._s[2637]! } + public var InviteLink_UsageLimitReached: String { return self._s[2638]! } + public var Stats_Followers: String { return self._s[2639]! } + public var Notifications_AddExceptionTitle: String { return self._s[2640]! } + public var TwoFactorSetup_Password_Title: String { return self._s[2641]! } + public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[2642]! } + public var OldChannels_NoticeText: String { return self._s[2643]! } + public var Conversation_SavedMessages: String { return self._s[2644]! } + public var Intents_ErrorLockedText: String { return self._s[2645]! } public func Conversation_PeerNearbyTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2648]!, self._r[2648]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2647]!, self._r[2647]!, [_1, _2]) } - public var Passport_Address_TypeResidentialAddress: String { return self._s[2649]! } - public var Appearance_ThemeNightBlue: String { return self._s[2650]! } - public var Notification_ChannelInviterSelf: String { return self._s[2651]! } - public var Conversation_ForwardTooltip_SavedMessages_Many: String { return self._s[2652]! } - public var InviteLink_Create_TimeLimitExpiryDateNever: String { return self._s[2654]! } - public var Watch_UserInfo_Service: String { return self._s[2655]! } - public var ChatList_Context_Back: String { return self._s[2656]! } - public var Passport_Email_Title: String { return self._s[2657]! } - public var Stats_GroupTopAdmin_Promote: String { return self._s[2658]! } + public var Passport_Address_TypeResidentialAddress: String { return self._s[2648]! } + public var Appearance_ThemeNightBlue: String { return self._s[2649]! } + public var Notification_ChannelInviterSelf: String { return self._s[2650]! } + public var Conversation_ForwardTooltip_SavedMessages_Many: String { return self._s[2651]! } + public var InviteLink_Create_TimeLimitExpiryDateNever: String { return self._s[2653]! } + public var Watch_UserInfo_Service: String { return self._s[2654]! } + public var ChatList_Context_Back: String { return self._s[2655]! } + public var Passport_Email_Title: String { return self._s[2656]! } + public var Stats_GroupTopAdmin_Promote: String { return self._s[2657]! } public func PUSH_PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2659]!, self._r[2659]!, [_1]) + return formatWithArgumentRanges(self._s[2658]!, self._r[2658]!, [_1]) } - public var Conversation_UnsupportedMedia: String { return self._s[2660]! } - public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[2661]! } - public var Privacy_TopPeersHelp: String { return self._s[2663]! } - public var Privacy_Forwards_AlwaysLink: String { return self._s[2664]! } - public var Notifications_Badge_CountUnreadMessages_InfoOn: String { return self._s[2665]! } - public var Permissions_NotificationsTitle_v0: String { return self._s[2666]! } + public var Conversation_UnsupportedMedia: String { return self._s[2659]! } + public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[2660]! } + public var Privacy_TopPeersHelp: String { return self._s[2662]! } + public var Privacy_Forwards_AlwaysLink: String { return self._s[2663]! } + public var Notifications_Badge_CountUnreadMessages_InfoOn: String { return self._s[2664]! } + public var Permissions_NotificationsTitle_v0: String { return self._s[2665]! } public func Location_ProximityNotification_AlreadyClose(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2667]!, self._r[2667]!, [_0]) + return formatWithArgumentRanges(self._s[2666]!, self._r[2666]!, [_0]) } - public var Notification_PassportValueProofOfAddress: String { return self._s[2668]! } - public var Map_Map: String { return self._s[2669]! } - public var WallpaperSearch_ColorBlue: String { return self._s[2670]! } - public var Privacy_Calls_CustomShareHelp: String { return self._s[2671]! } - public var PhotoEditor_BlurToolRadial: String { return self._s[2672]! } - public var ChatList_Search_FilterMusic: String { return self._s[2673]! } - public var SettingsSearch_Synonyms_Data_AutoplayGifs: String { return self._s[2674]! } - public var Privacy_PaymentsClear_ShippingInfo: String { return self._s[2675]! } - public var Settings_LogoutConfirmationTitle: String { return self._s[2677]! } + public var Notification_PassportValueProofOfAddress: String { return self._s[2667]! } + public var Map_Map: String { return self._s[2668]! } + public var WallpaperSearch_ColorBlue: String { return self._s[2669]! } + public var Privacy_Calls_CustomShareHelp: String { return self._s[2670]! } + public var PhotoEditor_BlurToolRadial: String { return self._s[2671]! } + public var ChatList_Search_FilterMusic: String { return self._s[2672]! } + public var SettingsSearch_Synonyms_Data_AutoplayGifs: String { return self._s[2673]! } + public var Privacy_PaymentsClear_ShippingInfo: String { return self._s[2674]! } + public var Settings_LogoutConfirmationTitle: String { return self._s[2676]! } public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2678]!, self._r[2678]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2677]!, self._r[2677]!, [_1, _2]) } public func Notification_ChangedGroupPhoto(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2679]!, self._r[2679]!, [_0]) + return formatWithArgumentRanges(self._s[2678]!, self._r[2678]!, [_0]) } - public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[2680]! } - public var Group_Username_CreatePublicLinkHelp: String { return self._s[2681]! } - public var VoiceOver_ChatList_MessageEmpty: String { return self._s[2683]! } - public var GroupInfo_Location: String { return self._s[2684]! } - public var Passport_Language_ka: String { return self._s[2685]! } + public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[2679]! } + public var Group_Username_CreatePublicLinkHelp: String { return self._s[2680]! } + public var VoiceOver_ChatList_MessageEmpty: String { return self._s[2682]! } + public var GroupInfo_Location: String { return self._s[2683]! } + public var Passport_Language_ka: String { return self._s[2684]! } public func TwoStepAuth_SetupPendingEmail(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2686]!, self._r[2686]!, [_0]) + return formatWithArgumentRanges(self._s[2685]!, self._r[2685]!, [_0]) } - public var Conversation_ContextMenuOpenChannelProfile: String { return self._s[2687]! } - public var ChatImport_SelectionConfirmationAlertTitle: String { return self._s[2689]! } - public var ScheduledMessages_ClearAllConfirmation: String { return self._s[2691]! } - public var DialogList_SearchSectionRecent: String { return self._s[2692]! } - public var Passport_Address_OneOfTypeTemporaryRegistration: String { return self._s[2693]! } - public var Conversation_Timer_Send: String { return self._s[2694]! } + public var Conversation_ContextMenuOpenChannelProfile: String { return self._s[2686]! } + public var ChatImport_SelectionConfirmationAlertTitle: String { return self._s[2688]! } + public var ScheduledMessages_ClearAllConfirmation: String { return self._s[2690]! } + public var DialogList_SearchSectionRecent: String { return self._s[2691]! } + public var Passport_Address_OneOfTypeTemporaryRegistration: String { return self._s[2692]! } + public var Conversation_Timer_Send: String { return self._s[2693]! } public func VoiceOver_ScrollStatus(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2696]!, self._r[2696]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2695]!, self._r[2695]!, [_1, _2]) } - public var ChatState_Updating: String { return self._s[2697]! } - public var ChannelMembers_WhoCanAddMembers: String { return self._s[2698]! } - public var ChannelInfo_DeleteGroup: String { return self._s[2699]! } - public var TwoStepAuth_RecoveryFailed: String { return self._s[2700]! } - public var Channel_OwnershipTransfer_EnterPassword: String { return self._s[2701]! } - public var InviteLink_Create_TimeLimitExpiryTime: String { return self._s[2702]! } - public var ChannelInfo_InviteLink_RevokeAlert_Text: String { return self._s[2703]! } - public var ChatList_Search_NoResults: String { return self._s[2704]! } - public var ChatListFolderSettings_AddRecommended: String { return self._s[2706]! } - public var ChangePhoneNumberCode_Called: String { return self._s[2707]! } - public var PeerInfo_GroupAboutItem: String { return self._s[2708]! } - public var VoiceOver_SelfDestructTimerOff: String { return self._s[2710]! } + public var ChatState_Updating: String { return self._s[2696]! } + public var ChannelMembers_WhoCanAddMembers: String { return self._s[2697]! } + public var ChannelInfo_DeleteGroup: String { return self._s[2698]! } + public var TwoStepAuth_RecoveryFailed: String { return self._s[2699]! } + public var Channel_OwnershipTransfer_EnterPassword: String { return self._s[2700]! } + public var InviteLink_Create_TimeLimitExpiryTime: String { return self._s[2701]! } + public var ChannelInfo_InviteLink_RevokeAlert_Text: String { return self._s[2702]! } + public var ChatList_Search_NoResults: String { return self._s[2703]! } + public var ChatListFolderSettings_AddRecommended: String { return self._s[2705]! } + public var ChangePhoneNumberCode_Called: String { return self._s[2706]! } + public var PeerInfo_GroupAboutItem: String { return self._s[2707]! } + public var VoiceOver_SelfDestructTimerOff: String { return self._s[2709]! } public func Channel_AdminLog_DeletedInviteLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2711]!, self._r[2711]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2710]!, self._r[2710]!, [_1, _2]) } public func LiveLocationUpdated_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2712]!, self._r[2712]!, [_0]) + return formatWithArgumentRanges(self._s[2711]!, self._r[2711]!, [_0]) } - public var PrivacySettings_AuthSessions: String { return self._s[2713]! } - public var Passport_Address_Postcode: String { return self._s[2714]! } - public var VoiceOver_Chat_YourVideoMessage: String { return self._s[2715]! } + public var PrivacySettings_AuthSessions: String { return self._s[2712]! } + public var Passport_Address_Postcode: String { return self._s[2713]! } + public var VoiceOver_Chat_YourVideoMessage: String { return self._s[2714]! } public func VoiceChat_ForwardTooltip_ManyChats(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2716]!, self._r[2716]!, [_0, _1]) + return formatWithArgumentRanges(self._s[2715]!, self._r[2715]!, [_0, _1]) } - public var Passport_Address_Street2Placeholder: String { return self._s[2717]! } - public var Group_Location_Title: String { return self._s[2718]! } - public var SettingsSearch_Synonyms_Data_AutoDownloadReset: String { return self._s[2719]! } - public var PeopleNearby_UsersEmpty: String { return self._s[2720]! } - public var Conversation_ContextMenuSpeak: String { return self._s[2722]! } - public var SettingsSearch_Synonyms_Data_Title: String { return self._s[2723]! } + public var Passport_Address_Street2Placeholder: String { return self._s[2716]! } + public var Group_Location_Title: String { return self._s[2717]! } + public var SettingsSearch_Synonyms_Data_AutoDownloadReset: String { return self._s[2718]! } + public var PeopleNearby_UsersEmpty: String { return self._s[2719]! } + public var Conversation_ContextMenuSpeak: String { return self._s[2721]! } + public var SettingsSearch_Synonyms_Data_Title: String { return self._s[2722]! } public func Checkout_PasswordEntry_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2725]!, self._r[2725]!, [_0]) + return formatWithArgumentRanges(self._s[2724]!, self._r[2724]!, [_0]) } - public var Proxy_TooltipUnavailable: String { return self._s[2726]! } - public var Map_Search: String { return self._s[2727]! } - public var VoiceChat_CancelConfirmationTitle: String { return self._s[2728]! } - public var AutoDownloadSettings_TypeContacts: String { return self._s[2729]! } - public var Conversation_SearchByName_Prefix: String { return self._s[2730]! } + public var Proxy_TooltipUnavailable: String { return self._s[2725]! } + public var Map_Search: String { return self._s[2726]! } + public var VoiceChat_CancelConfirmationTitle: String { return self._s[2727]! } + public var AutoDownloadSettings_TypeContacts: String { return self._s[2728]! } + public var Conversation_SearchByName_Prefix: String { return self._s[2729]! } public func Channel_AdminLog_MessageToggleSignaturesOff(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2731]!, self._r[2731]!, [_0]) + return formatWithArgumentRanges(self._s[2730]!, self._r[2730]!, [_0]) } - public var TwoStepAuth_EmailAddSuccess: String { return self._s[2732]! } - public var ProfilePhoto_MainPhoto: String { return self._s[2733]! } - public var SettingsSearch_Synonyms_Notifications_InAppNotificationsSound: String { return self._s[2734]! } - public var SharedMedia_EmptyMusicText: String { return self._s[2735]! } - public var ChatSettings_AutoDownloadPhotos: String { return self._s[2736]! } - public var NetworkUsageSettings_BytesReceived: String { return self._s[2737]! } - public var Channel_AdminLog_EmptyText: String { return self._s[2738]! } - public var Channel_BanUser_PermissionSendMessages: String { return self._s[2739]! } - public var Undo_ChatDeletedForBothSides: String { return self._s[2740]! } - public var Notifications_GroupNotifications: String { return self._s[2741]! } - public var AccessDenied_SaveMedia: String { return self._s[2742]! } - public var InviteLink_Create_Revoke: String { return self._s[2743]! } - public var GroupInfo_LabelOwner: String { return self._s[2744]! } - public var Passport_Language_id: String { return self._s[2746]! } - public var ChatSettings_AutoDownloadTitle: String { return self._s[2747]! } - public var Conversation_UnpinMessageAlert: String { return self._s[2748]! } + public var TwoStepAuth_EmailAddSuccess: String { return self._s[2731]! } + public var ProfilePhoto_MainPhoto: String { return self._s[2732]! } + public var SettingsSearch_Synonyms_Notifications_InAppNotificationsSound: String { return self._s[2733]! } + public var SharedMedia_EmptyMusicText: String { return self._s[2734]! } + public var ChatSettings_AutoDownloadPhotos: String { return self._s[2735]! } + public var NetworkUsageSettings_BytesReceived: String { return self._s[2736]! } + public var Channel_AdminLog_EmptyText: String { return self._s[2737]! } + public var Channel_BanUser_PermissionSendMessages: String { return self._s[2738]! } + public var Undo_ChatDeletedForBothSides: String { return self._s[2739]! } + public var Notifications_GroupNotifications: String { return self._s[2740]! } + public var AccessDenied_SaveMedia: String { return self._s[2741]! } + public var InviteLink_Create_Revoke: String { return self._s[2742]! } + public var GroupInfo_LabelOwner: String { return self._s[2743]! } + public var Passport_Language_id: String { return self._s[2745]! } + public var ChatSettings_AutoDownloadTitle: String { return self._s[2746]! } + public var Conversation_UnpinMessageAlert: String { return self._s[2747]! } public func LiveLocationUpdated_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2749]!, self._r[2749]!, [_0]) + return formatWithArgumentRanges(self._s[2748]!, self._r[2748]!, [_0]) } public func Call_RemoteVideoPaused(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2750]!, self._r[2750]!, [_0]) + return formatWithArgumentRanges(self._s[2749]!, self._r[2749]!, [_0]) } - public var TwoFactorSetup_Done_Text: String { return self._s[2751]! } + public var TwoFactorSetup_Done_Text: String { return self._s[2750]! } public func LastSeen_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2752]!, self._r[2752]!, [_0]) + return formatWithArgumentRanges(self._s[2751]!, self._r[2751]!, [_0]) } - public var NetworkUsageSettings_BytesSent: String { return self._s[2753]! } - public var Conversation_AudioRateTooltipNormal: String { return self._s[2754]! } - public var VoiceChat_EditDescriptionSuccess: String { return self._s[2755]! } - public var OwnershipTransfer_Transfer: String { return self._s[2756]! } + public var NetworkUsageSettings_BytesSent: String { return self._s[2752]! } + public var Conversation_AudioRateTooltipNormal: String { return self._s[2753]! } + public var VoiceChat_EditDescriptionSuccess: String { return self._s[2754]! } + public var OwnershipTransfer_Transfer: String { return self._s[2755]! } public func Notification_Exceptions_Sound(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2757]!, self._r[2757]!, [_0]) + return formatWithArgumentRanges(self._s[2756]!, self._r[2756]!, [_0]) } - public var Passport_Language_pt: String { return self._s[2758]! } - public var PrivacySettings_WebSessions: String { return self._s[2759]! } - public var PrivacyPolicy_DeclineDeleteNow: String { return self._s[2761]! } - public var TwoFactorSetup_Hint_Title: String { return self._s[2762]! } + public var Passport_Language_pt: String { return self._s[2757]! } + public var PrivacySettings_WebSessions: String { return self._s[2758]! } + public var PrivacyPolicy_DeclineDeleteNow: String { return self._s[2760]! } + public var TwoFactorSetup_Hint_Title: String { return self._s[2761]! } public func Notification_Joined(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2763]!, self._r[2763]!, [_0]) + return formatWithArgumentRanges(self._s[2762]!, self._r[2762]!, [_0]) } - public var Group_Username_RemoveExistingUsernamesInfo: String { return self._s[2764]! } - public var PrivacyLastSeenSettings_CustomShareSettings_Delete: String { return self._s[2765]! } - public var AutoNightTheme_Scheduled: String { return self._s[2766]! } - public var CreatePoll_ExplanationHeader: String { return self._s[2767]! } - public var Calls_TabTitle: String { return self._s[2768]! } - public var VoiceChat_RecordingInProgress: String { return self._s[2769]! } - public var ChatList_UndoArchiveHiddenText: String { return self._s[2770]! } - public var Notification_VideoCallCanceled: String { return self._s[2771]! } - public var Login_CodeSentInternal: String { return self._s[2772]! } - public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[2773]! } - public var Call_RecordingDisabledMessage: String { return self._s[2775]! } + public var Group_Username_RemoveExistingUsernamesInfo: String { return self._s[2763]! } + public var PrivacyLastSeenSettings_CustomShareSettings_Delete: String { return self._s[2764]! } + public var AutoNightTheme_Scheduled: String { return self._s[2765]! } + public var CreatePoll_ExplanationHeader: String { return self._s[2766]! } + public var Calls_TabTitle: String { return self._s[2767]! } + public var VoiceChat_RecordingInProgress: String { return self._s[2768]! } + public var ChatList_UndoArchiveHiddenText: String { return self._s[2769]! } + public var Notification_VideoCallCanceled: String { return self._s[2770]! } + public var Login_CodeSentInternal: String { return self._s[2771]! } + public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[2772]! } + public var Call_RecordingDisabledMessage: String { return self._s[2774]! } public func VoiceChat_RemovedPeerText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2776]!, self._r[2776]!, [_0]) + return formatWithArgumentRanges(self._s[2775]!, self._r[2775]!, [_0]) } - public var Conversation_UsersTooMuchError: String { return self._s[2778]! } - public var AutoDownloadSettings_TypeChannels: String { return self._s[2779]! } - public var Channel_Info_Stickers: String { return self._s[2780]! } - public var Passport_DeleteAddressConfirmation: String { return self._s[2781]! } + public var Conversation_UsersTooMuchError: String { return self._s[2777]! } + public var AutoDownloadSettings_TypeChannels: String { return self._s[2778]! } + public var Channel_Info_Stickers: String { return self._s[2779]! } + public var Passport_DeleteAddressConfirmation: String { return self._s[2780]! } public func Conversation_PeerNearbyDistance(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2782]!, self._r[2782]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2781]!, self._r[2781]!, [_1, _2]) } - public var ChannelMembers_WhoCanAddMembers_Admins: String { return self._s[2783]! } + public var ChannelMembers_WhoCanAddMembers_Admins: String { return self._s[2782]! } public func Call_StatusOngoing(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2784]!, self._r[2784]!, [_0]) + return formatWithArgumentRanges(self._s[2783]!, self._r[2783]!, [_0]) } - public var Passport_DiscardMessageTitle: String { return self._s[2785]! } - public var Call_VoiceOver_VideoCallIncoming: String { return self._s[2786]! } - public var Localization_LanguageOther: String { return self._s[2787]! } - public var Conversation_EncryptionCanceled: String { return self._s[2788]! } - public var ChatSettings_AutomaticPhotoDownload: String { return self._s[2789]! } - public var ReportPeer_ReasonFake: String { return self._s[2791]! } + public var Passport_DiscardMessageTitle: String { return self._s[2784]! } + public var Call_VoiceOver_VideoCallIncoming: String { return self._s[2785]! } + public var Localization_LanguageOther: String { return self._s[2786]! } + public var Conversation_EncryptionCanceled: String { return self._s[2787]! } + public var ChatSettings_AutomaticPhotoDownload: String { return self._s[2788]! } + public var ReportPeer_ReasonFake: String { return self._s[2790]! } public func Notification_SecretChatMessageScreenshot(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2792]!, self._r[2792]!, [_0]) + return formatWithArgumentRanges(self._s[2791]!, self._r[2791]!, [_0]) } - public var Target_InviteToGroupErrorAlreadyInvited: String { return self._s[2794]! } - public var SocksProxySetup_SavedProxies: String { return self._s[2795]! } - public var InviteLink_Create_UsersLimitNumberOfUsers: String { return self._s[2796]! } + public var Target_InviteToGroupErrorAlreadyInvited: String { return self._s[2793]! } + public var SocksProxySetup_SavedProxies: String { return self._s[2794]! } + public var InviteLink_Create_UsersLimitNumberOfUsers: String { return self._s[2795]! } public func ApplyLanguage_ChangeLanguageAlreadyActive(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2797]!, self._r[2797]!, [_1]) + return formatWithArgumentRanges(self._s[2796]!, self._r[2796]!, [_1]) } - public var Conversation_ScamWarning: String { return self._s[2799]! } - public var Channel_AdminLog_InfoPanelAlertTitle: String { return self._s[2800]! } - public var LocalGroup_Title: String { return self._s[2801]! } - public var SettingsSearch_Synonyms_Notifications_MessageNotificationsAlert: String { return self._s[2803]! } - public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[2804]! } - public var VoiceChat_SelectAccount: String { return self._s[2805]! } - public var Login_PhoneFloodError: String { return self._s[2806]! } - public var Conversation_PinMessageAlert_PinAndNotifyMembers: String { return self._s[2807]! } - public var Username_InvalidTaken: String { return self._s[2809]! } - public var SocksProxySetup_AddProxy: String { return self._s[2811]! } - public var PrivacyLastSeenSettings_WhoCanSeeMyTimestamp: String { return self._s[2812]! } - public var MediaPicker_UngroupDescription: String { return self._s[2813]! } - public var Login_CodeExpired: String { return self._s[2814]! } - public var Localization_ChooseLanguage: String { return self._s[2815]! } - public var Checkout_NewCard_PostcodePlaceholder: String { return self._s[2816]! } + public var Conversation_ScamWarning: String { return self._s[2798]! } + public var Channel_AdminLog_InfoPanelAlertTitle: String { return self._s[2799]! } + public var LocalGroup_Title: String { return self._s[2800]! } + public var SettingsSearch_Synonyms_Notifications_MessageNotificationsAlert: String { return self._s[2802]! } + public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[2803]! } + public var VoiceChat_SelectAccount: String { return self._s[2804]! } + public var Login_PhoneFloodError: String { return self._s[2805]! } + public var Conversation_PinMessageAlert_PinAndNotifyMembers: String { return self._s[2806]! } + public var Username_InvalidTaken: String { return self._s[2808]! } + public var SocksProxySetup_AddProxy: String { return self._s[2810]! } + public var PrivacyLastSeenSettings_WhoCanSeeMyTimestamp: String { return self._s[2811]! } + public var MediaPicker_UngroupDescription: String { return self._s[2812]! } + public var Login_CodeExpired: String { return self._s[2813]! } + public var Localization_ChooseLanguage: String { return self._s[2814]! } + public var Checkout_NewCard_PostcodePlaceholder: String { return self._s[2815]! } public func ChangePhone_ErrorOccupied(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2817]!, self._r[2817]!, [_0]) + return formatWithArgumentRanges(self._s[2816]!, self._r[2816]!, [_0]) } public func Channel_DiscussionGroup_HeaderSet(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2818]!, self._r[2818]!, [_0]) + return formatWithArgumentRanges(self._s[2817]!, self._r[2817]!, [_0]) } - public var ReportPeer_ReasonOther_Title: String { return self._s[2820]! } - public var Conversation_ScheduleMessage_Title: String { return self._s[2821]! } + public var ReportPeer_ReasonOther_Title: String { return self._s[2819]! } + public var Conversation_ScheduleMessage_Title: String { return self._s[2820]! } public func VoiceChat_UserInvited(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2822]!, self._r[2822]!, [_0]) + return formatWithArgumentRanges(self._s[2821]!, self._r[2821]!, [_0]) } - public var PeerInfo_ButtonDiscuss: String { return self._s[2823]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedPublicGroups: String { return self._s[2824]! } - public var Call_StatusNoAnswer: String { return self._s[2825]! } - public var ScheduledMessages_DeleteMany: String { return self._s[2827]! } - public var Channel_DiscussionGroupInfo: String { return self._s[2828]! } - public var Conversation_UnarchiveDone: String { return self._s[2829]! } - public var LogoutOptions_AddAccountText: String { return self._s[2830]! } - public var Message_PinnedContactMessage: String { return self._s[2831]! } + public var PeerInfo_ButtonDiscuss: String { return self._s[2822]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedPublicGroups: String { return self._s[2823]! } + public var Call_StatusNoAnswer: String { return self._s[2824]! } + public var ScheduledMessages_DeleteMany: String { return self._s[2826]! } + public var Channel_DiscussionGroupInfo: String { return self._s[2827]! } + public var Conversation_UnarchiveDone: String { return self._s[2828]! } + public var LogoutOptions_AddAccountText: String { return self._s[2829]! } + public var Message_PinnedContactMessage: String { return self._s[2830]! } public func ChatList_DeleteAndLeaveGroupConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2832]!, self._r[2832]!, [_0]) + return formatWithArgumentRanges(self._s[2831]!, self._r[2831]!, [_0]) } - public var VoiceChat_EditBioTitle: String { return self._s[2834]! } + public var VoiceChat_EditBioTitle: String { return self._s[2833]! } public func FileSize_GB(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2835]!, self._r[2835]!, [_0]) + return formatWithArgumentRanges(self._s[2834]!, self._r[2834]!, [_0]) } - public var Stats_GroupLanguagesTitle: String { return self._s[2836]! } - public var Passport_FieldAddressHelp: String { return self._s[2837]! } + public var Stats_GroupLanguagesTitle: String { return self._s[2835]! } + public var Passport_FieldAddressHelp: String { return self._s[2836]! } public func Passport_FieldOneOf_Or(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2838]!, self._r[2838]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2837]!, self._r[2837]!, [_1, _2]) } - public var ChatSettings_OpenLinksIn: String { return self._s[2840]! } - public var TwoFactorSetup_Hint_SkipAction: String { return self._s[2841]! } - public var Message_Photo: String { return self._s[2842]! } - public var Media_LimitedAccessManage: String { return self._s[2844]! } - public var MediaPicker_AddCaption: String { return self._s[2845]! } - public var LogoutOptions_Title: String { return self._s[2846]! } + public var ChatSettings_OpenLinksIn: String { return self._s[2839]! } + public var TwoFactorSetup_Hint_SkipAction: String { return self._s[2840]! } + public var Message_Photo: String { return self._s[2841]! } + public var Media_LimitedAccessManage: String { return self._s[2843]! } + public var MediaPicker_AddCaption: String { return self._s[2844]! } + public var LogoutOptions_Title: String { return self._s[2845]! } public func PUSH_PINNED_GIF(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2847]!, self._r[2847]!, [_1]) + return formatWithArgumentRanges(self._s[2846]!, self._r[2846]!, [_1]) } - public var Conversation_StatusKickedFromGroup: String { return self._s[2848]! } - public var Channel_AdminLogFilter_AdminsTitle: String { return self._s[2849]! } - public var ChatList_DeleteSavedMessagesConfirmationTitle: String { return self._s[2850]! } - public var Channel_AdminLogFilter_Title: String { return self._s[2851]! } - public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[2852]! } - public var Compose_GroupTokenListPlaceholder: String { return self._s[2853]! } - public var Notifications_MessageNotificationsExceptions: String { return self._s[2854]! } - public var ChannelIntro_Title: String { return self._s[2855]! } - public var Stats_Message_Views: String { return self._s[2856]! } - public var Stickers_Install: String { return self._s[2857]! } + public var Conversation_StatusKickedFromGroup: String { return self._s[2847]! } + public var Channel_AdminLogFilter_AdminsTitle: String { return self._s[2848]! } + public var ChatList_DeleteSavedMessagesConfirmationTitle: String { return self._s[2849]! } + public var Channel_AdminLogFilter_Title: String { return self._s[2850]! } + public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[2851]! } + public var Compose_GroupTokenListPlaceholder: String { return self._s[2852]! } + public var Notifications_MessageNotificationsExceptions: String { return self._s[2853]! } + public var ChannelIntro_Title: String { return self._s[2854]! } + public var Stats_Message_Views: String { return self._s[2855]! } + public var Stickers_Install: String { return self._s[2856]! } public func VoiceOver_Chat_FileFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2858]!, self._r[2858]!, [_0]) + return formatWithArgumentRanges(self._s[2857]!, self._r[2857]!, [_0]) } - public var EditTheme_Create_Preview_IncomingReplyText: String { return self._s[2859]! } - public var Conversation_SwipeToReplyHintTitle: String { return self._s[2861]! } - public var Settings_Username: String { return self._s[2864]! } - public var FastTwoStepSetup_Title: String { return self._s[2865]! } - public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[2866]! } - public var SettingsSearch_Synonyms_Privacy_Title: String { return self._s[2867]! } - public var Passport_Identity_IssueDatePlaceholder: String { return self._s[2869]! } - public var CallFeedback_ReasonEcho: String { return self._s[2870]! } + public var EditTheme_Create_Preview_IncomingReplyText: String { return self._s[2858]! } + public var Conversation_SwipeToReplyHintTitle: String { return self._s[2860]! } + public var Settings_Username: String { return self._s[2863]! } + public var FastTwoStepSetup_Title: String { return self._s[2864]! } + public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[2865]! } + public var SettingsSearch_Synonyms_Privacy_Title: String { return self._s[2866]! } + public var Passport_Identity_IssueDatePlaceholder: String { return self._s[2868]! } + public var CallFeedback_ReasonEcho: String { return self._s[2869]! } public func Time_MonthOfYear_m1(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2871]!, self._r[2871]!, [_0]) + return formatWithArgumentRanges(self._s[2870]!, self._r[2870]!, [_0]) } - public var Conversation_OpenBotLinkTitle: String { return self._s[2872]! } - public var SocksProxySetup_Title: String { return self._s[2873]! } - public var CallFeedback_Success: String { return self._s[2874]! } - public var WallpaperPreview_SwipeTopText: String { return self._s[2876]! } - public var InstantPage_AutoNightTheme: String { return self._s[2878]! } - public var Watch_Conversation_Reply: String { return self._s[2879]! } - public var VoiceChat_Share: String { return self._s[2881]! } - public var VoiceChat_AddPhoto: String { return self._s[2882]! } - public var Chat_PanelUnpinAllMessages: String { return self._s[2883]! } - public var WallpaperPreview_Pattern: String { return self._s[2884]! } - public var CheckoutInfo_ReceiverInfoEmail: String { return self._s[2885]! } + public var Conversation_OpenBotLinkTitle: String { return self._s[2871]! } + public var SocksProxySetup_Title: String { return self._s[2872]! } + public var CallFeedback_Success: String { return self._s[2873]! } + public var WallpaperPreview_SwipeTopText: String { return self._s[2875]! } + public var InstantPage_AutoNightTheme: String { return self._s[2877]! } + public var Watch_Conversation_Reply: String { return self._s[2878]! } + public var VoiceChat_Share: String { return self._s[2880]! } + public var VoiceChat_AddPhoto: String { return self._s[2881]! } + public var Chat_PanelUnpinAllMessages: String { return self._s[2882]! } + public var WallpaperPreview_Pattern: String { return self._s[2883]! } + public var CheckoutInfo_ReceiverInfoEmail: String { return self._s[2884]! } public func Conversation_DeleteMessagesFor(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2886]!, self._r[2886]!, [_0]) + return formatWithArgumentRanges(self._s[2885]!, self._r[2885]!, [_0]) } - public var AutoDownloadSettings_TypeGroupChats: String { return self._s[2887]! } - public var VoiceOver_Chat_GroupInfo: String { return self._s[2888]! } - public var DialogList_SavedMessagesTooltip: String { return self._s[2890]! } - public var Update_Title: String { return self._s[2891]! } - public var Conversation_ShareMyPhoneNumber: String { return self._s[2892]! } - public var WallpaperPreview_CropTopText: String { return self._s[2895]! } - public var Channel_EditMessageErrorGeneric: String { return self._s[2896]! } - public var AccessDenied_LocationAlwaysDenied: String { return self._s[2897]! } - public var ChatListFolder_DiscardCancel: String { return self._s[2898]! } - public var Message_PinnedPhotoMessage: String { return self._s[2899]! } - public var Appearance_ThemeDayClassic: String { return self._s[2900]! } - public var VoiceChat_ChangeName: String { return self._s[2901]! } - public var SocksProxySetup_ProxySocks5: String { return self._s[2903]! } - public var VoiceChat_DisplayAsInfo: String { return self._s[2905]! } - public var AccessDenied_Wallpapers: String { return self._s[2910]! } + public var AutoDownloadSettings_TypeGroupChats: String { return self._s[2886]! } + public var VoiceOver_Chat_GroupInfo: String { return self._s[2887]! } + public var DialogList_SavedMessagesTooltip: String { return self._s[2889]! } + public var Update_Title: String { return self._s[2890]! } + public var Conversation_ShareMyPhoneNumber: String { return self._s[2891]! } + public var WallpaperPreview_CropTopText: String { return self._s[2894]! } + public var Channel_EditMessageErrorGeneric: String { return self._s[2895]! } + public var AccessDenied_LocationAlwaysDenied: String { return self._s[2896]! } + public var ChatListFolder_DiscardCancel: String { return self._s[2897]! } + public var Message_PinnedPhotoMessage: String { return self._s[2898]! } + public var Appearance_ThemeDayClassic: String { return self._s[2899]! } + public var VoiceChat_ChangeName: String { return self._s[2900]! } + public var SocksProxySetup_ProxySocks5: String { return self._s[2902]! } + public var VoiceChat_DisplayAsInfo: String { return self._s[2904]! } + public var AccessDenied_Wallpapers: String { return self._s[2909]! } public func Channel_AdminLog_MessageChangedGroupAbout(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2911]!, self._r[2911]!, [_0]) + return formatWithArgumentRanges(self._s[2910]!, self._r[2910]!, [_0]) } - public var Weekday_Sunday: String { return self._s[2912]! } - public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[2914]! } - public var PeopleNearby_MakeVisibleDescription: String { return self._s[2915]! } - public var AccessDenied_LocationDisabled: String { return self._s[2916]! } - public var Tour_Text3: String { return self._s[2917]! } - public var AuthSessions_AddDevice_ScanTitle: String { return self._s[2918]! } + public var Weekday_Sunday: String { return self._s[2911]! } + public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[2913]! } + public var PeopleNearby_MakeVisibleDescription: String { return self._s[2914]! } + public var AccessDenied_LocationDisabled: String { return self._s[2915]! } + public var Tour_Text3: String { return self._s[2916]! } + public var AuthSessions_AddDevice_ScanTitle: String { return self._s[2917]! } public func Time_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2919]!, self._r[2919]!, [_0]) + return formatWithArgumentRanges(self._s[2918]!, self._r[2918]!, [_0]) } - public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[2920]! } - public var Conversation_ClearCache: String { return self._s[2921]! } - public var StickerPacksSettings_ArchivedMasks_Info: String { return self._s[2922]! } - public var ChatList_Tabs_AllChats: String { return self._s[2923]! } - public var DialogList_RecentTitlePeople: String { return self._s[2924]! } - public var Stickers_AddToFavorites: String { return self._s[2925]! } - public var ChatList_Context_RemoveFromFolder: String { return self._s[2926]! } - public var VoiceChat_CancelSpeakRequest: String { return self._s[2927]! } - public var Settings_RemoveVideo: String { return self._s[2928]! } - public var PhotoEditor_CropAspectRatioSquare: String { return self._s[2929]! } - public var ConversationProfile_LeaveDeleteAndExit: String { return self._s[2930]! } - public var VoiceOver_Chat_YourFile: String { return self._s[2931]! } - public var SettingsSearch_Synonyms_Privacy_Forwards: String { return self._s[2933]! } - public var Group_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[2934]! } - public var VoiceChat_TapToAddBio: String { return self._s[2935]! } - public var Channel_AdminLog_AddMembers: String { return self._s[2936]! } - public var Map_SendThisLocation: String { return self._s[2938]! } - public var TwoStepAuth_EmailSkipAlert: String { return self._s[2940]! } - public var IntentsSettings_SuggestedChatsPrivateChats: String { return self._s[2941]! } - public var CloudStorage_Title: String { return self._s[2942]! } - public var TwoFactorSetup_Password_Action: String { return self._s[2943]! } - public var TwoStepAuth_ConfirmationText: String { return self._s[2944]! } - public var Passport_Address_EditTemporaryRegistration: String { return self._s[2946]! } - public var Undo_LeftGroup: String { return self._s[2947]! } - public var Conversation_StopLiveLocation: String { return self._s[2948]! } - public var NotificationSettings_ShowNotificationsFromAccountsSection: String { return self._s[2949]! } - public var Message_PinnedInvoice: String { return self._s[2950]! } - public var ApplyLanguage_LanguageNotSupportedError: String { return self._s[2951]! } + public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[2919]! } + public var Conversation_ClearCache: String { return self._s[2920]! } + public var StickerPacksSettings_ArchivedMasks_Info: String { return self._s[2921]! } + public var ChatList_Tabs_AllChats: String { return self._s[2922]! } + public var DialogList_RecentTitlePeople: String { return self._s[2923]! } + public var Stickers_AddToFavorites: String { return self._s[2924]! } + public var ChatList_Context_RemoveFromFolder: String { return self._s[2925]! } + public var VoiceChat_CancelSpeakRequest: String { return self._s[2926]! } + public var Settings_RemoveVideo: String { return self._s[2927]! } + public var PhotoEditor_CropAspectRatioSquare: String { return self._s[2928]! } + public var ConversationProfile_LeaveDeleteAndExit: String { return self._s[2929]! } + public var VoiceOver_Chat_YourFile: String { return self._s[2930]! } + public var SettingsSearch_Synonyms_Privacy_Forwards: String { return self._s[2932]! } + public var Group_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[2933]! } + public var VoiceChat_TapToAddBio: String { return self._s[2934]! } + public var Channel_AdminLog_AddMembers: String { return self._s[2935]! } + public var Map_SendThisLocation: String { return self._s[2937]! } + public var TwoStepAuth_EmailSkipAlert: String { return self._s[2939]! } + public var IntentsSettings_SuggestedChatsPrivateChats: String { return self._s[2940]! } + public var CloudStorage_Title: String { return self._s[2941]! } + public var TwoFactorSetup_Password_Action: String { return self._s[2942]! } + public var TwoStepAuth_ConfirmationText: String { return self._s[2943]! } + public var Passport_Address_EditTemporaryRegistration: String { return self._s[2945]! } + public var Undo_LeftGroup: String { return self._s[2946]! } + public var Conversation_StopLiveLocation: String { return self._s[2947]! } + public var NotificationSettings_ShowNotificationsFromAccountsSection: String { return self._s[2948]! } + public var Message_PinnedInvoice: String { return self._s[2949]! } + public var ApplyLanguage_LanguageNotSupportedError: String { return self._s[2950]! } public func PUSH_CHAT_MESSAGE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2953]!, self._r[2953]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2952]!, self._r[2952]!, [_1, _2]) } public func Notification_PinnedAudioMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2954]!, self._r[2954]!, [_0]) + return formatWithArgumentRanges(self._s[2953]!, self._r[2953]!, [_0]) } - public var Weekday_Tuesday: String { return self._s[2955]! } - public var ChangePhoneNumberCode_Code: String { return self._s[2956]! } - public var VoiceOver_Chat_YourMessage: String { return self._s[2957]! } - public var Calls_CallTabDescription: String { return self._s[2958]! } - public var ChatImport_SelectionErrorNotAdmin: String { return self._s[2959]! } - public var SocksProxySetup_UseProxy: String { return self._s[2961]! } - public var SettingsSearch_Synonyms_Stickers_Title: String { return self._s[2962]! } - public var PasscodeSettings_AlphanumericCode: String { return self._s[2963]! } - public var VoiceOver_Chat_YourVideo: String { return self._s[2964]! } - public var ChannelMembers_WhoCanAddMembersAdminsHelp: String { return self._s[2966]! } - public var SettingsSearch_Synonyms_Privacy_DeleteAccountIfAwayFor: String { return self._s[2967]! } - public var Exceptions_AddToExceptions: String { return self._s[2968]! } - public var UserInfo_Title: String { return self._s[2969]! } - public var Passport_DeleteDocumentConfirmation: String { return self._s[2971]! } - public var VoiceChat_EditDescription: String { return self._s[2973]! } - public var ChatList_Unmute: String { return self._s[2974]! } - public var SettingsSearch_Synonyms_Privacy_Data_ContactsSync: String { return self._s[2975]! } + public var Weekday_Tuesday: String { return self._s[2954]! } + public var ChangePhoneNumberCode_Code: String { return self._s[2955]! } + public var VoiceOver_Chat_YourMessage: String { return self._s[2956]! } + public var Calls_CallTabDescription: String { return self._s[2957]! } + public var ChatImport_SelectionErrorNotAdmin: String { return self._s[2958]! } + public var SocksProxySetup_UseProxy: String { return self._s[2960]! } + public var SettingsSearch_Synonyms_Stickers_Title: String { return self._s[2961]! } + public var PasscodeSettings_AlphanumericCode: String { return self._s[2962]! } + public var VoiceOver_Chat_YourVideo: String { return self._s[2963]! } + public var ChannelMembers_WhoCanAddMembersAdminsHelp: String { return self._s[2965]! } + public var SettingsSearch_Synonyms_Privacy_DeleteAccountIfAwayFor: String { return self._s[2966]! } + public var Exceptions_AddToExceptions: String { return self._s[2967]! } + public var UserInfo_Title: String { return self._s[2968]! } + public var Passport_DeleteDocumentConfirmation: String { return self._s[2970]! } + public var VoiceChat_EditDescription: String { return self._s[2972]! } + public var ChatList_Unmute: String { return self._s[2973]! } + public var SettingsSearch_Synonyms_Privacy_Data_ContactsSync: String { return self._s[2974]! } public func Channel_AdminLog_MessageChangedAutoremoveTimeoutSet(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2976]!, self._r[2976]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2975]!, self._r[2975]!, [_1, _2]) } - public var Stats_GroupTopPostersTitle: String { return self._s[2977]! } - public var Username_CheckingUsername: String { return self._s[2979]! } - public var WallpaperColors_SetCustomColor: String { return self._s[2980]! } - public var PeerSelection_ImportIntoNewGroup: String { return self._s[2984]! } - public var Location_ProximityAlertSetTitle: String { return self._s[2985]! } - public var AuthSessions_AddedDeviceTerminate: String { return self._s[2986]! } - public var Conversation_JoinVoiceChatAsSpeaker: String { return self._s[2987]! } - public var Privacy_ProfilePhoto_CustomHelp: String { return self._s[2988]! } - public var Settings_ChangePhoneNumber: String { return self._s[2989]! } - public var PeerInfo_PaneLinks: String { return self._s[2990]! } - public var Appearance_ThemePreview_ChatList_1_Text: String { return self._s[2993]! } - public var Channel_EditAdmin_PermissionInviteSubscribers: String { return self._s[2995]! } + public var Stats_GroupTopPostersTitle: String { return self._s[2976]! } + public var Username_CheckingUsername: String { return self._s[2978]! } + public var WallpaperColors_SetCustomColor: String { return self._s[2979]! } + public var PeerSelection_ImportIntoNewGroup: String { return self._s[2983]! } + public var Location_ProximityAlertSetTitle: String { return self._s[2984]! } + public var AuthSessions_AddedDeviceTerminate: String { return self._s[2985]! } + public var Conversation_JoinVoiceChatAsSpeaker: String { return self._s[2986]! } + public var Privacy_ProfilePhoto_CustomHelp: String { return self._s[2987]! } + public var Settings_ChangePhoneNumber: String { return self._s[2988]! } + public var PeerInfo_PaneLinks: String { return self._s[2989]! } + public var Appearance_ThemePreview_ChatList_1_Text: String { return self._s[2992]! } + public var Channel_EditAdmin_PermissionInviteSubscribers: String { return self._s[2994]! } public func PUSH_CHAT_VOICECHAT_INVITE_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[2996]!, self._r[2996]!, [_1, _2]) + return formatWithArgumentRanges(self._s[2995]!, self._r[2995]!, [_1, _2]) } - public var LogoutOptions_ChangePhoneNumberText: String { return self._s[2997]! } - public var VoiceOver_Media_PlaybackPause: String { return self._s[2998]! } - public var VoiceChat_CancelConfirmationEnd: String { return self._s[2999]! } - public var BroadcastGroups_ConfirmationAlert_Title: String { return self._s[3000]! } - public var Stats_FollowersBySourceTitle: String { return self._s[3002]! } + public var LogoutOptions_ChangePhoneNumberText: String { return self._s[2996]! } + public var VoiceOver_Media_PlaybackPause: String { return self._s[2997]! } + public var VoiceChat_CancelConfirmationEnd: String { return self._s[2998]! } + public var BroadcastGroups_ConfirmationAlert_Title: String { return self._s[2999]! } + public var Stats_FollowersBySourceTitle: String { return self._s[3001]! } public func Conversation_ScheduleMessage_SendOn(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3003]!, self._r[3003]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3002]!, self._r[3002]!, [_0, _1]) } - public var Compose_NewEncryptedChatTitle: String { return self._s[3004]! } - public var Channel_CommentsGroup_Header: String { return self._s[3006]! } + public var Compose_NewEncryptedChatTitle: String { return self._s[3003]! } + public var Channel_CommentsGroup_Header: String { return self._s[3005]! } public func ShareFileTip_Text(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3010]!, self._r[3010]!, [_0]) + return formatWithArgumentRanges(self._s[3009]!, self._r[3009]!, [_0]) } public func PUSH_MESSAGE_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3011]!, self._r[3011]!, [_1]) + return formatWithArgumentRanges(self._s[3010]!, self._r[3010]!, [_1]) } - public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[3013]! } + public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[3012]! } public func TwoStepAuth_RecoveryEmailUnavailable(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3014]!, self._r[3014]!, [_0]) + return formatWithArgumentRanges(self._s[3013]!, self._r[3013]!, [_0]) } - public var Conversation_ReportMessages: String { return self._s[3015]! } - public var Conversation_OpenBotLinkOpen: String { return self._s[3016]! } - public var VoiceOver_Chat_RecordModeVoiceMessage: String { return self._s[3017]! } - public var PrivacySettings_LastSeen: String { return self._s[3019]! } - public var SettingsSearch_Synonyms_Privacy_Passcode: String { return self._s[3020]! } - public var Theme_Colors_Proceed: String { return self._s[3021]! } - public var UserInfo_ScamBotWarning: String { return self._s[3022]! } - public var LogoutOptions_LogOut: String { return self._s[3024]! } - public var Conversation_SendMessage: String { return self._s[3025]! } - public var Conversation_CancelForwardCancelForward: String { return self._s[3026]! } - public var VoiceChat_Scheduled: String { return self._s[3028]! } - public var Passport_Address_Region: String { return self._s[3029]! } - public var MediaPicker_CameraRoll: String { return self._s[3031]! } + public var Conversation_ReportMessages: String { return self._s[3014]! } + public var Conversation_OpenBotLinkOpen: String { return self._s[3015]! } + public var VoiceOver_Chat_RecordModeVoiceMessage: String { return self._s[3016]! } + public var PrivacySettings_LastSeen: String { return self._s[3018]! } + public var SettingsSearch_Synonyms_Privacy_Passcode: String { return self._s[3019]! } + public var Theme_Colors_Proceed: String { return self._s[3020]! } + public var UserInfo_ScamBotWarning: String { return self._s[3021]! } + public var LogoutOptions_LogOut: String { return self._s[3023]! } + public var Conversation_SendMessage: String { return self._s[3024]! } + public var Conversation_CancelForwardCancelForward: String { return self._s[3025]! } + public var VoiceChat_Scheduled: String { return self._s[3027]! } + public var Passport_Address_Region: String { return self._s[3028]! } + public var MediaPicker_CameraRoll: String { return self._s[3030]! } public func VoiceOver_Chat_ForwardedFrom(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3033]!, self._r[3033]!, [_0]) + return formatWithArgumentRanges(self._s[3032]!, self._r[3032]!, [_0]) } - public var Call_ReportSend: String { return self._s[3035]! } - public var VoiceOver_ChatList_Message: String { return self._s[3036]! } - public var Month_ShortJune: String { return self._s[3037]! } - public var AutoDownloadSettings_GroupChats: String { return self._s[3038]! } + public var Call_ReportSend: String { return self._s[3034]! } + public var VoiceOver_ChatList_Message: String { return self._s[3035]! } + public var Month_ShortJune: String { return self._s[3036]! } + public var AutoDownloadSettings_GroupChats: String { return self._s[3037]! } public func Channel_AdminLog_CaptionEdited(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3041]!, self._r[3041]!, [_0]) + return formatWithArgumentRanges(self._s[3040]!, self._r[3040]!, [_0]) } - public var TwoStepAuth_DisableSuccess: String { return self._s[3042]! } - public var Cache_KeepMedia: String { return self._s[3043]! } + public var TwoStepAuth_DisableSuccess: String { return self._s[3041]! } + public var Cache_KeepMedia: String { return self._s[3042]! } public func Date_ChatDateHeaderYear(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3044]!, self._r[3044]!, [_1, _2, _3]) + return formatWithArgumentRanges(self._s[3043]!, self._r[3043]!, [_1, _2, _3]) } - public var Appearance_LargeEmoji: String { return self._s[3045]! } + public var Appearance_LargeEmoji: String { return self._s[3044]! } public func Notification_NewAuthDetected(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String, _ _6: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3046]!, self._r[3046]!, [_1, _2, _3, _4, _5, _6]) + return formatWithArgumentRanges(self._s[3045]!, self._r[3045]!, [_1, _2, _3, _4, _5, _6]) } - public var Chat_AttachmentMultipleForwardDisabled: String { return self._s[3047]! } - public var Privacy_PaymentsClear_PaymentInfoCleared: String { return self._s[3048]! } - public var Call_CameraConfirmationText: String { return self._s[3049]! } + public var Chat_AttachmentMultipleForwardDisabled: String { return self._s[3046]! } + public var Privacy_PaymentsClear_PaymentInfoCleared: String { return self._s[3047]! } + public var Call_CameraConfirmationText: String { return self._s[3048]! } public func AuthSessions_AppUnofficial(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3051]!, self._r[3051]!, [_0]) + return formatWithArgumentRanges(self._s[3050]!, self._r[3050]!, [_0]) } - public var DialogList_SearchSectionChats: String { return self._s[3052]! } - public var VoiceOver_MessageContextReport: String { return self._s[3054]! } - public var VoiceChat_RemovePeer: String { return self._s[3055]! } - public var ChatListFolder_ExcludeChatsTitle: String { return self._s[3056]! } - public var InviteLink_ContextCopy: String { return self._s[3057]! } - public var NotificationsSound_Tritone: String { return self._s[3059]! } - public var Notifications_InAppNotificationsPreview: String { return self._s[3062]! } - public var Stats_GroupTopAdmin_Actions: String { return self._s[3063]! } - public var PeerInfo_AddToContacts: String { return self._s[3064]! } - public var VoiceChat_OpenChat: String { return self._s[3065]! } - public var AccessDenied_Title: String { return self._s[3066]! } - public var InviteLink_QRCode_InfoChannel: String { return self._s[3067]! } - public var Tour_Title1: String { return self._s[3068]! } - public var VoiceOver_AttachMedia: String { return self._s[3069]! } + public var DialogList_SearchSectionChats: String { return self._s[3051]! } + public var VoiceOver_MessageContextReport: String { return self._s[3053]! } + public var VoiceChat_RemovePeer: String { return self._s[3054]! } + public var ChatListFolder_ExcludeChatsTitle: String { return self._s[3055]! } + public var InviteLink_ContextCopy: String { return self._s[3056]! } + public var NotificationsSound_Tritone: String { return self._s[3058]! } + public var Notifications_InAppNotificationsPreview: String { return self._s[3061]! } + public var Stats_GroupTopAdmin_Actions: String { return self._s[3062]! } + public var PeerInfo_AddToContacts: String { return self._s[3063]! } + public var VoiceChat_OpenChat: String { return self._s[3064]! } + public var AccessDenied_Title: String { return self._s[3065]! } + public var InviteLink_QRCode_InfoChannel: String { return self._s[3066]! } + public var Tour_Title1: String { return self._s[3067]! } + public var VoiceOver_AttachMedia: String { return self._s[3068]! } public func SharedMedia_SearchNoResultsDescription(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3071]!, self._r[3071]!, [_0]) + return formatWithArgumentRanges(self._s[3070]!, self._r[3070]!, [_0]) } - public var Chat_Gifs_SavedSectionHeader: String { return self._s[3072]! } - public var Privacy_DeleteDrafts_DraftsDeleted: String { return self._s[3073]! } - public var LogoutOptions_ChangePhoneNumberTitle: String { return self._s[3074]! } + public var Chat_Gifs_SavedSectionHeader: String { return self._s[3071]! } + public var Privacy_DeleteDrafts_DraftsDeleted: String { return self._s[3072]! } + public var LogoutOptions_ChangePhoneNumberTitle: String { return self._s[3073]! } public func Passport_Scans_ScanIndex(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3075]!, self._r[3075]!, [_0]) + return formatWithArgumentRanges(self._s[3074]!, self._r[3074]!, [_0]) } - public var Channel_AdminLog_MessagePreviousLink: String { return self._s[3076]! } - public var OldChannels_Title: String { return self._s[3077]! } - public var LoginPassword_FloodError: String { return self._s[3078]! } - public var ChatImportActivity_InProgress: String { return self._s[3080]! } - public var Checkout_ErrorPaymentFailed: String { return self._s[3081]! } + public var Channel_AdminLog_MessagePreviousLink: String { return self._s[3075]! } + public var OldChannels_Title: String { return self._s[3076]! } + public var LoginPassword_FloodError: String { return self._s[3077]! } + public var ChatImportActivity_InProgress: String { return self._s[3079]! } + public var Checkout_ErrorPaymentFailed: String { return self._s[3080]! } public func Time_MonthOfYear_m7(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3082]!, self._r[3082]!, [_0]) + return formatWithArgumentRanges(self._s[3081]!, self._r[3081]!, [_0]) } - public var VoiceOver_Media_PlaybackPlay: String { return self._s[3085]! } - public var Passport_CorrectErrors: String { return self._s[3087]! } + public var VoiceOver_Media_PlaybackPlay: String { return self._s[3084]! } + public var Passport_CorrectErrors: String { return self._s[3086]! } public func PUSH_CHAT_PHOTO_EDITED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3088]!, self._r[3088]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3087]!, self._r[3087]!, [_1, _2]) } - public var ChatListFolderSettings_Title: String { return self._s[3089]! } + public var ChatListFolderSettings_Title: String { return self._s[3088]! } public func AutoDownloadSettings_UpToFor(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3090]!, self._r[3090]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3089]!, self._r[3089]!, [_1, _2]) } - public var PhotoEditor_HighlightsTool: String { return self._s[3091]! } - public var Contacts_NotRegisteredSection: String { return self._s[3094]! } + public var PhotoEditor_HighlightsTool: String { return self._s[3090]! } + public var Contacts_NotRegisteredSection: String { return self._s[3093]! } public func Call_VoiceChatInProgressCallMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3095]!, self._r[3095]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3094]!, self._r[3094]!, [_1, _2]) } public func PUSH_PINNED_DOC(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3096]!, self._r[3096]!, [_1]) + return formatWithArgumentRanges(self._s[3095]!, self._r[3095]!, [_1]) } - public var InviteLink_Create_UsersLimitInfo: String { return self._s[3097]! } - public var User_DeletedAccount: String { return self._s[3098]! } - public var Conversation_ViewContactDetails: String { return self._s[3099]! } - public var Conversation_Dice_u1F3B3: String { return self._s[3100]! } - public var WebSearch_GIFs: String { return self._s[3101]! } - public var ChatList_DeleteSavedMessagesConfirmationAction: String { return self._s[3102]! } - public var Appearance_PreviewOutgoingText: String { return self._s[3103]! } - public var Calls_CallTabTitle: String { return self._s[3104]! } - public var Call_VoiceChatInProgressTitle: String { return self._s[3105]! } - public var Checkout_OptionalTipItem: String { return self._s[3106]! } + public var InviteLink_Create_UsersLimitInfo: String { return self._s[3096]! } + public var User_DeletedAccount: String { return self._s[3097]! } + public var Conversation_ViewContactDetails: String { return self._s[3098]! } + public var Conversation_Dice_u1F3B3: String { return self._s[3099]! } + public var WebSearch_GIFs: String { return self._s[3100]! } + public var ChatList_DeleteSavedMessagesConfirmationAction: String { return self._s[3101]! } + public var Appearance_PreviewOutgoingText: String { return self._s[3102]! } + public var Calls_CallTabTitle: String { return self._s[3103]! } + public var Call_VoiceChatInProgressTitle: String { return self._s[3104]! } + public var Checkout_OptionalTipItem: String { return self._s[3105]! } public func LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3107]!, self._r[3107]!, [_0]) + return formatWithArgumentRanges(self._s[3106]!, self._r[3106]!, [_0]) } - public var Channel_Status: String { return self._s[3108]! } - public var Conversation_SendMessageErrorGroupRestricted: String { return self._s[3110]! } - public var VoiceOver_Chat_OptionSelected: String { return self._s[3111]! } - public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsAlert: String { return self._s[3112]! } + public var Channel_Status: String { return self._s[3107]! } + public var Conversation_SendMessageErrorGroupRestricted: String { return self._s[3109]! } + public var VoiceOver_Chat_OptionSelected: String { return self._s[3110]! } + public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsAlert: String { return self._s[3111]! } public func ClearCache_Success(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3113]!, self._r[3113]!, [_0, _1]) + return formatWithArgumentRanges(self._s[3112]!, self._r[3112]!, [_0, _1]) } - public var Passport_Identity_ExpiryDateNone: String { return self._s[3115]! } - public var Your_cards_expiration_month_is_invalid: String { return self._s[3117]! } - public var Month_ShortDecember: String { return self._s[3118]! } - public var Username_Help: String { return self._s[3119]! } - public var Login_InfoAvatarAdd: String { return self._s[3120]! } - public var Month_ShortMay: String { return self._s[3121]! } - public var DialogList_UnknownPinLimitError: String { return self._s[3122]! } - public var PasscodeSettings_AutoLock_IfAwayFor_5hours: String { return self._s[3123]! } - public var TwoStepAuth_EnabledSuccess: String { return self._s[3124]! } - public var VoiceChat_AskedToSpeak: String { return self._s[3125]! } - public var Weekday_ShortSunday: String { return self._s[3126]! } - public var Channel_Username_InvalidTooShort: String { return self._s[3127]! } - public var AuthSessions_TerminateSession: String { return self._s[3128]! } - public var Passport_Identity_FilesTitle: String { return self._s[3129]! } + public var Passport_Identity_ExpiryDateNone: String { return self._s[3114]! } + public var Your_cards_expiration_month_is_invalid: String { return self._s[3116]! } + public var Month_ShortDecember: String { return self._s[3117]! } + public var Username_Help: String { return self._s[3118]! } + public var Login_InfoAvatarAdd: String { return self._s[3119]! } + public var Month_ShortMay: String { return self._s[3120]! } + public var DialogList_UnknownPinLimitError: String { return self._s[3121]! } + public var PasscodeSettings_AutoLock_IfAwayFor_5hours: String { return self._s[3122]! } + public var TwoStepAuth_EnabledSuccess: String { return self._s[3123]! } + public var VoiceChat_AskedToSpeak: String { return self._s[3124]! } + public var Weekday_ShortSunday: String { return self._s[3125]! } + public var Channel_Username_InvalidTooShort: String { return self._s[3126]! } + public var AuthSessions_TerminateSession: String { return self._s[3127]! } + public var Passport_Identity_FilesTitle: String { return self._s[3128]! } public func Notification_PinnedRoundMessage(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3130]!, self._r[3130]!, [_0]) + return formatWithArgumentRanges(self._s[3129]!, self._r[3129]!, [_0]) } - public var PeopleNearby_MakeVisible: String { return self._s[3132]! } + public var PeopleNearby_MakeVisible: String { return self._s[3131]! } public func Conversation_RestrictedMediaTimed(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3133]!, self._r[3133]!, [_0]) + return formatWithArgumentRanges(self._s[3132]!, self._r[3132]!, [_0]) } - public var Widget_UpdatedAt: String { return self._s[3134]! } + public var Widget_UpdatedAt: String { return self._s[3133]! } public func Notification_MessageLifetimeChanged(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3135]!, self._r[3135]!, [_1, _2]) + return formatWithArgumentRanges(self._s[3134]!, self._r[3134]!, [_1, _2]) } public func GroupInfo_AddParticipantConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[3136]!, self._r[3136]!, [_0]) + return formatWithArgumentRanges(self._s[3135]!, self._r[3135]!, [_0]) } - public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[3137]! } + public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[3136]! } + public var VoiceChat_VideoPreviewShareScreen: String { return self._s[3137]! } public var Conversation_ContextMenuForward: String { return self._s[3139]! } public var Channel_AdminLog_CanManageCalls: String { return self._s[3140]! } public func PUSH_CHAT_MESSAGE_QUIZ(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) { @@ -5492,747 +5492,747 @@ public final class PresentationStrings: Equatable { public func LOCAL_CHAT_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) { return formatWithArgumentRanges(self._s[4940]!, self._r[4940]!, [_1, "\(_2)"]) } + public var VoiceChat_VideoPreviewShareCamera: String { return self._s[4941]! } public func Compatibility_SecretMediaVersionTooLow(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4941]!, self._r[4941]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4942]!, self._r[4942]!, [_0, _1]) } - public var Passport_Identity_TypePassport: String { return self._s[4942]! } - public var CreatePoll_QuizOptionsHeader: String { return self._s[4944]! } - public var Common_No: String { return self._s[4945]! } - public var Conversation_SendMessage_ScheduleMessage: String { return self._s[4946]! } - public var SettingsSearch_Synonyms_Privacy_LastSeen: String { return self._s[4947]! } - public var Settings_AboutEmpty: String { return self._s[4948]! } - public var TwoStepAuth_FloodError: String { return self._s[4950]! } - public var SettingsSearch_Synonyms_Appearance_TextSize: String { return self._s[4951]! } + public var Passport_Identity_TypePassport: String { return self._s[4943]! } + public var CreatePoll_QuizOptionsHeader: String { return self._s[4945]! } + public var Common_No: String { return self._s[4946]! } + public var Conversation_SendMessage_ScheduleMessage: String { return self._s[4947]! } + public var SettingsSearch_Synonyms_Privacy_LastSeen: String { return self._s[4948]! } + public var Settings_AboutEmpty: String { return self._s[4949]! } + public var TwoStepAuth_FloodError: String { return self._s[4951]! } + public var SettingsSearch_Synonyms_Appearance_TextSize: String { return self._s[4952]! } public func Notification_VoiceChatScheduledChannel(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4952]!, self._r[4952]!, [_0]) + return formatWithArgumentRanges(self._s[4953]!, self._r[4953]!, [_0]) } public func Channel_AdminLog_MessageUnkickedName(_ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4954]!, self._r[4954]!, [_1]) + return formatWithArgumentRanges(self._s[4955]!, self._r[4955]!, [_1]) } - public var Notification_Exceptions_MessagePreviewAlwaysOn: String { return self._s[4957]! } - public var Conversation_Edit: String { return self._s[4958]! } - public var CheckoutInfo_SaveInfo: String { return self._s[4960]! } - public var VoiceOver_Chat_AnonymousPoll: String { return self._s[4961]! } - public var Call_CameraTooltip: String { return self._s[4963]! } - public var InstantPage_FeedbackButtonShort: String { return self._s[4964]! } - public var Contacts_InviteToTelegram: String { return self._s[4965]! } - public var Notifications_ResetAllNotifications: String { return self._s[4966]! } - public var Calls_NewCall: String { return self._s[4967]! } - public var VoiceOver_Chat_Music: String { return self._s[4970]! } - public var Channel_AdminLogFilter_EventsInviteLinks: String { return self._s[4971]! } - public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[4972]! } - public var Channel_Edit_AboutItem: String { return self._s[4973]! } - public var Message_VideoExpired: String { return self._s[4974]! } - public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[4975]! } + public var Notification_Exceptions_MessagePreviewAlwaysOn: String { return self._s[4958]! } + public var Conversation_Edit: String { return self._s[4959]! } + public var CheckoutInfo_SaveInfo: String { return self._s[4961]! } + public var VoiceOver_Chat_AnonymousPoll: String { return self._s[4962]! } + public var Call_CameraTooltip: String { return self._s[4964]! } + public var InstantPage_FeedbackButtonShort: String { return self._s[4965]! } + public var Contacts_InviteToTelegram: String { return self._s[4966]! } + public var Notifications_ResetAllNotifications: String { return self._s[4967]! } + public var Calls_NewCall: String { return self._s[4968]! } + public var VoiceOver_Chat_Music: String { return self._s[4971]! } + public var Channel_AdminLogFilter_EventsInviteLinks: String { return self._s[4972]! } + public var Channel_Members_AddAdminErrorNotAMember: String { return self._s[4973]! } + public var Channel_Edit_AboutItem: String { return self._s[4974]! } + public var Message_VideoExpired: String { return self._s[4975]! } + public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[4976]! } public func PUSH_CHAT_RETURNED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4976]!, self._r[4976]!, [_1, _2]) + return formatWithArgumentRanges(self._s[4977]!, self._r[4977]!, [_1, _2]) } - public var NotificationsSound_Input: String { return self._s[4978]! } - public var Notifications_ClassicTones: String { return self._s[4979]! } - public var Conversation_StatusTyping: String { return self._s[4980]! } - public var Checkout_ErrorProviderAccountInvalid: String { return self._s[4981]! } - public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[4982]! } - public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[4983]! } - public var Conversation_MessageLeaveComment: String { return self._s[4984]! } - public var UserInfo_TapToCall: String { return self._s[4985]! } - public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[4986]! } + public var NotificationsSound_Input: String { return self._s[4979]! } + public var Notifications_ClassicTones: String { return self._s[4980]! } + public var Conversation_StatusTyping: String { return self._s[4981]! } + public var Checkout_ErrorProviderAccountInvalid: String { return self._s[4982]! } + public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[4983]! } + public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[4984]! } + public var Conversation_MessageLeaveComment: String { return self._s[4985]! } + public var UserInfo_TapToCall: String { return self._s[4986]! } + public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[4987]! } public func ScheduleVoiceChat_ScheduleOn(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4987]!, self._r[4987]!, [_0, _1]) + return formatWithArgumentRanges(self._s[4988]!, self._r[4988]!, [_0, _1]) } - public var Conversation_ClearAll: String { return self._s[4989]! } - public var UserInfo_NotificationsDefault: String { return self._s[4990]! } - public var Location_ProximityGroupTip: String { return self._s[4991]! } - public var Map_ChooseAPlace: String { return self._s[4992]! } - public var GroupInfo_AddParticipantTitle: String { return self._s[4994]! } - public var ChatList_PeerTypeNonContact: String { return self._s[4995]! } - public var Conversation_SlideToCancel: String { return self._s[4996]! } - public var Month_ShortJuly: String { return self._s[4997]! } - public var SocksProxySetup_ProxyType: String { return self._s[4998]! } + public var Conversation_ClearAll: String { return self._s[4990]! } + public var UserInfo_NotificationsDefault: String { return self._s[4991]! } + public var Location_ProximityGroupTip: String { return self._s[4992]! } + public var Map_ChooseAPlace: String { return self._s[4993]! } + public var GroupInfo_AddParticipantTitle: String { return self._s[4995]! } + public var ChatList_PeerTypeNonContact: String { return self._s[4996]! } + public var Conversation_SlideToCancel: String { return self._s[4997]! } + public var Month_ShortJuly: String { return self._s[4998]! } + public var SocksProxySetup_ProxyType: String { return self._s[4999]! } public func ChatList_DeleteChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[4999]!, self._r[4999]!, [_0]) + return formatWithArgumentRanges(self._s[5000]!, self._r[5000]!, [_0]) } - public var StickerPacks_ActionArchive: String { return self._s[5000]! } - public var ChatList_EditFolders: String { return self._s[5001]! } - public var TwoStepAuth_SetPasswordHelp: String { return self._s[5002]! } - public var ScheduledMessages_RemindersTitle: String { return self._s[5004]! } + public var StickerPacks_ActionArchive: String { return self._s[5001]! } + public var ChatList_EditFolders: String { return self._s[5002]! } + public var TwoStepAuth_SetPasswordHelp: String { return self._s[5003]! } + public var ScheduledMessages_RemindersTitle: String { return self._s[5005]! } public func GroupPermission_ApplyAlertText(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[5005]!, self._r[5005]!, [_0]) + return formatWithArgumentRanges(self._s[5006]!, self._r[5006]!, [_0]) } - public var Permissions_PeopleNearbyTitle_v0: String { return self._s[5006]! } - public var Your_cards_expiration_year_is_invalid: String { return self._s[5007]! } - public var UserInfo_ShareMyContactInfo: String { return self._s[5009]! } + public var Permissions_PeopleNearbyTitle_v0: String { return self._s[5007]! } + public var Your_cards_expiration_year_is_invalid: String { return self._s[5008]! } + public var UserInfo_ShareMyContactInfo: String { return self._s[5010]! } public func Conversation_ScheduledVoiceChatStartsOnShort(_ _0: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[5011]!, self._r[5011]!, [_0]) + return formatWithArgumentRanges(self._s[5012]!, self._r[5012]!, [_0]) } - public var Passport_DeleteAddress: String { return self._s[5012]! } - public var Passport_DeletePassportConfirmation: String { return self._s[5013]! } - public var Passport_Identity_ReverseSide: String { return self._s[5014]! } - public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[5016]! } - public var Login_InfoLastNamePlaceholder: String { return self._s[5017]! } - public var InviteLink_CreatedBy: String { return self._s[5018]! } - public var Passport_FieldAddress: String { return self._s[5019]! } - public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[5020]! } - public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[5023]! } - public var VoiceChat_Panel_TapToJoin: String { return self._s[5024]! } - public var Map_Home: String { return self._s[5025]! } - public var PollResults_Title: String { return self._s[5028]! } + public var Passport_DeleteAddress: String { return self._s[5013]! } + public var Passport_DeletePassportConfirmation: String { return self._s[5014]! } + public var Passport_Identity_ReverseSide: String { return self._s[5015]! } + public var CheckoutInfo_ErrorEmailInvalid: String { return self._s[5017]! } + public var Login_InfoLastNamePlaceholder: String { return self._s[5018]! } + public var InviteLink_CreatedBy: String { return self._s[5019]! } + public var Passport_FieldAddress: String { return self._s[5020]! } + public var SettingsSearch_Synonyms_Calls_Title: String { return self._s[5021]! } + public var Passport_Identity_ResidenceCountryPlaceholder: String { return self._s[5024]! } + public var VoiceChat_Panel_TapToJoin: String { return self._s[5025]! } + public var Map_Home: String { return self._s[5026]! } + public var PollResults_Title: String { return self._s[5029]! } public func InviteLink_OtherPermanentLinkInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) { - return formatWithArgumentRanges(self._s[5029]!, self._r[5029]!, [_1, _2]) + return formatWithArgumentRanges(self._s[5030]!, self._r[5030]!, [_1, _2]) } - public var ArchivedChats_IntroText2: String { return self._s[5031]! } - public var VoiceChat_VideoPreviewTitle: String { return self._s[5032]! } - public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[5033]! } - public var VoiceOver_Chat_ContactPhoneNumber: String { return self._s[5034]! } - public var VoiceChat_Muted: String { return self._s[5036]! } - public var CallFeedback_ReasonSilentRemote: String { return self._s[5037]! } - public var Passport_Identity_AddPersonalDetails: String { return self._s[5038]! } - public var Conversation_AutoremoveActionEnable: String { return self._s[5040]! } - public var Group_Info_AdminLog: String { return self._s[5041]! } - public var ChatSettings_AutoPlayTitle: String { return self._s[5042]! } - public var Appearance_Animations: String { return self._s[5043]! } - public var Appearance_TextSizeSetting: String { return self._s[5044]! } - public func OldChannels_GroupFormat(_ value: Int32) -> String { + public var ArchivedChats_IntroText2: String { return self._s[5032]! } + public var VoiceChat_VideoPreviewTitle: String { return self._s[5033]! } + public var PasscodeSettings_SimplePasscodeHelp: String { return self._s[5034]! } + public var VoiceOver_Chat_ContactPhoneNumber: String { return self._s[5035]! } + public var VoiceChat_Muted: String { return self._s[5037]! } + public var CallFeedback_ReasonSilentRemote: String { return self._s[5038]! } + public var Passport_Identity_AddPersonalDetails: String { return self._s[5039]! } + public var Conversation_AutoremoveActionEnable: String { return self._s[5041]! } + public var Group_Info_AdminLog: String { return self._s[5042]! } + public var ChatSettings_AutoPlayTitle: String { return self._s[5043]! } + public var Appearance_Animations: String { return self._s[5044]! } + public var Appearance_TextSizeSetting: String { return self._s[5045]! } + public func ScheduledIn_Months(_ 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 Notification_GameScoreExtended(_ 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 MessageTimer_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceOver_Chat_ContactPhoneNumberCount(_ 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 Call_Seconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ScheduledIn_Days(_ 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 ForwardedAudios(_ 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 StickerPack_StickerCount(_ 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 PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + 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[8 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func Contacts_InviteContacts(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSelfExtended(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) - } - public func OldChannels_InactiveMonth(_ 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 AttachmentMenu_SendVideo(_ 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 SharedMedia_DeleteItemsConfirmation(_ 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 ChatList_DeleteConfirmation(_ 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 ChatList_MessageMusic(_ 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 ForwardedPhotos(_ 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 VoiceOver_Chat_ContactEmailCount(_ 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 ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, _0, _1) - } - public func ScheduledIn_Weeks(_ 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 Conversation_TitleComments(_ 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 PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func ChatList_MessageFiles(_ 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 Notifications_ExceptionMuteExpires_Minutes(_ 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 PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func Stats_MessageForwards(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[27 * 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[28 * 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[29 * 6 + Int(form.rawValue)]!, stringValue) - } - public func VoiceChat_Status_Members(_ 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) + return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, _2, _1, _3) } public func StickerPack_AddMaskCount(_ 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) + return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, stringValue) } - public func VoiceOver_Chat_UnreadMessages(_ value: Int32) -> String { + public func Conversation_SelectedMessages(_ 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) + return String(format: self._ps[3 * 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[33 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupShowMoreTopAdmins(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Media_ShareItem(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_LiveLocationMembersCount(_ 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 Chat_MessagesUnpinned(_ 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 Conversation_AutoremoveRemainingDays(_ 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_AddStickerCount(_ 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 Watch_LastSeen_MinutesAgo(_ 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 AttachmentMenu_SendPhoto(_ 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 GroupInfo_ParticipantCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessageTimer_ShortMinutes(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupTopAdminKicks(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ChatList_Search_Messages(_ 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 Stats_GroupTopPosterMessages(_ 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 UserCount(_ 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 Conversation_StatusOnline(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Notification_GameScoreSelfSimple(_ 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 OldChannels_InactiveWeek(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_DOCS_FIX1(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func PUSH_CHANNEL_MESSAGE_DOCS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func OldChannels_InactiveYear(_ 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 ScheduledIn_Minutes(_ 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 Theme_UsersCount(_ 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 InviteLink_InviteLinks(_ 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 CreatePoll_AddMoreOptions(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Stats_GroupShowMoreTopPosters(_ 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 VoiceOver_Chat_PollVotes(_ 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 PollResults_ShowMore(_ 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 ForwardedGifs(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreExtended(_ 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 StickerPacks_DeleteStickerPacksConfirmation(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func Call_ShortSeconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) - } - public func InviteLink_PeopleJoinedShort(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ForwardedPolls(_ 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 Media_SharePhoto(_ 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 Call_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 Media_ShareVideo(_ 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 Forward_ConfirmMultipleFiles(_ 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 Invitation_Members(_ 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 PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ScheduledIn_Years(_ 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 Conversation_StatusSubscribers(_ 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 PeopleNearby_ShowMorePeople(_ 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 Passport_Scans(_ 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 ScheduledIn_Seconds(_ 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 PasscodeSettings_FailedAttempts(_ 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 Notification_GameScoreSimple(_ 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 PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func MessageTimer_Months(_ 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 ScheduledIn_Months(_ 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 LastSeen_MinutesAgo(_ 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 PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func GroupInfo_ShowMoreMembers(_ 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 ForwardedMessages(_ 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 LiveLocation_MenuChatsCount(_ 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 InviteLink_PeopleRemaining(_ 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 MuteExpires_Hours(_ 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 DialogList_LiveLocationChatsCount(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_Photo(_ 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 ChatList_MessageVideos(_ 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 VoiceChat_InviteLink_InviteListeners(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func InviteLink_PeopleJoined(_ 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 MessagePoll_VotedCount(_ 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 MessageTimer_ShortSeconds(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue) - } - public func SharedMedia_File(_ 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 Chat_TitlePinnedMessages(_ 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 ChatList_DeletedChats(_ 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 ForwardedFiles(_ 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 MuteExpires_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue) - } - public func AttachmentMenu_SendItem(_ 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 Stats_GroupTopInviterInvites(_ 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 ScheduledIn_Hours(_ 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 AttachmentMenu_SendGif(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[108 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[109 * 6 + Int(form.rawValue)]!, _2, _1, _3) - } - public func InviteLink_PeopleCanJoin(_ 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 Stats_GroupTopAdminBans(_ 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 MuteFor_Hours(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[112 * 6 + Int(form.rawValue)]!, stringValue) - } - public func Conversation_TitleReplies(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[113 * 6 + Int(form.rawValue)]!, stringValue) - } - public func MessagePoll_QuizCount(_ 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 InviteText_ContactsCountText(_ 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) + return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, stringValue) } public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[116 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, stringValue) } - public func SharedMedia_Link(_ value: Int32) -> String { + public func Call_ShortMinutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[117 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, stringValue) } - public func Map_ETAMinutes(_ value: Int32) -> String { + public func ChatList_DeleteConfirmation(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[118 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, stringValue) } - public func QuickSend_Photos(_ 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[119 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notifications_Exceptions(_ value: Int32) -> String { + public func Stats_GroupTopPosterChars(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[120 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue) } - public func SharedMedia_Generic(_ value: Int32) -> String { + public func Stats_GroupTopAdminKicks(_ 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) + return String(format: self._ps[10 * 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[122 * 6 + Int(form.rawValue)]!, stringValue) - } - public func StickerPacks_ArchiveStickerPacksConfirmation(_ 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 ForwardedVideoMessages(_ 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 MuteFor_Days(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[125 * 6 + Int(form.rawValue)]!, stringValue) - } - public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[126 * 6 + Int(form.rawValue)]!, stringValue) - } - public func PUSH_MESSAGE_FILES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[127 * 6 + Int(form.rawValue)]!, _1, _2) - } - public func MessageTimer_Weeks(_ 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[11 * 6 + Int(form.rawValue)]!, _1, _2) } public func ChatListFilter_ShowMoreChats(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[129 * 6 + Int(form.rawValue)]!, stringValue) + return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue) + } + public func InviteLink_PeopleRemaining(_ 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 LastSeen_MinutesAgo(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupTopAdminBans(_ 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 MessageTimer_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 Call_Seconds(_ 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 MuteExpires_Days(_ 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 ChatList_MessagePhotos(_ 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 Conversation_StatusSubscribers(_ 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 ScheduledIn_Seconds(_ 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 Theme_UsersCount(_ 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 Notification_GameScoreSelfExtended(_ 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 MessageTimer_Years(_ 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 Stats_MessageViews(_ 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 GroupInfo_ShowMoreMembers(_ 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 StickerPack_RemoveStickerCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue) + } + public func VoiceOver_Chat_PollVotes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue) } public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[130 * 6 + Int(form.rawValue)]!, _1, _2) + return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, _1, _2) } - public func Stats_GroupTopAdminDeletions(_ value: Int32) -> String { + public func Stats_GroupTopInviterInvites(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_StickerCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[31 * 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[32 * 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[33 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Chat_MessagesUnpinned(_ 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 PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, _1, _2) + } + 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[36 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func OldChannels_Leave(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue) + } + public func LiveLocation_MenuChatsCount(_ 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_ShortWeeks(_ 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 PUSH_CHANNEL_MESSAGE_DOCS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Passport_Scans(_ 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 Conversation_ContextMenuSelectAll(_ 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 Watch_LastSeen_HoursAgo(_ 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 PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, _1, _2) + } + 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 OldChannels_GroupFormat(_ 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 MessagePoll_QuizCount(_ 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 Map_ETAMinutes(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func Call_Days(_ 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 Invitation_Members(_ 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 ForwardedContacts(_ 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 InviteLink_PeopleJoinedShort(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPack_AddStickerCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue) + } + public func GroupInfo_ParticipantCount(_ 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 PollResults_ShowMore(_ 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_ShortDays(_ 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 OldChannels_InactiveMonth(_ 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 ChatList_MessageVideos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_InactiveWeek(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_MessageMusic(_ 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 VoiceChat_Panel_Members(_ 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 Call_Hours(_ 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 SharedMedia_File(_ 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 MuteFor_Days(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_CHAT_MESSAGE_DOCS_FIX1(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func SharedMedia_Video(_ 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 Contacts_ImportersCount(_ 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 Notification_GameScoreSelfSimple(_ 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 Chat_DeleteMessagesConfirmation(_ 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 Conversation_MessageViewComments(_ 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 MessageTimer_ShortHours(_ 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 Notification_GameScoreExtended(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupShowMoreTopInviters(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue) + } + public func PUSH_MESSAGE_FILES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func VoiceOver_Chat_ContactEmailCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_Search_Messages(_ 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 PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, _1, _2) + } + public func SharedMedia_Link(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ServiceMessage_GameScoreSelfSimple(_ 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 Call_ShortSeconds(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue) + } + public func SharedMedia_Photo(_ 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 ServiceMessage_GameScoreSimple(_ 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 ScheduledIn_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_AutoremoveRemainingDays(_ 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 VoiceOver_Chat_PollOptionCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_StatusOnline(_ 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 AttachmentMenu_SendGif(_ 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 ForwardedVideos(_ 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 PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupTopPosterMessages(_ 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 ServiceMessage_GameScoreExtended(_ 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 VoiceOver_Chat_ContactPhoneNumberCount(_ 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 VoiceOver_Chat_MessagesSelected(_ 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 PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Conversation_ContextViewReplies(_ 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 ChatList_SelectedChats(_ 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 ForwardedVideoMessages(_ 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 QuickSend_Photos(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue) + } + public func Stats_GroupShowMoreTopPosters(_ 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 ScheduledIn_Weeks(_ 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 PasscodeSettings_FailedAttempts(_ 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 StickerPacks_DeleteStickerPacksConfirmation(_ 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 Stats_MessageForwards(_ 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 InviteLink_PeopleCanJoin(_ 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 MessagePoll_VotedCount(_ 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 AttachmentMenu_SendPhoto(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[108 * 6 + Int(form.rawValue)]!, stringValue) + } + public func OldChannels_InactiveYear(_ 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 Notifications_Exceptions(_ 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 Media_ShareVideo(_ 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 MessageTimer_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[112 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ScheduledIn_Years(_ 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 ForwardedPhotos(_ 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 Media_SharePhoto(_ 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 VoiceOver_Chat_UnreadMessages(_ 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 Conversation_TitleComments(_ 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 LastSeen_HoursAgo(_ 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 VoiceChat_Status_Members(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[119 * 6 + Int(form.rawValue)]!, stringValue) + } + public func ChatList_MessageFiles(_ 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 ChatList_DeletedChats(_ 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 InviteLink_PeopleJoined(_ 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 AttachmentMenu_SendItem(_ 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 Conversation_TitleReplies(_ 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_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[125 * 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[126 * 6 + Int(form.rawValue)]!, _2, _1, _3) + } + public func SharedMedia_DeleteItemsConfirmation(_ 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 Stats_GroupShowMoreTopAdmins(_ 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 MuteExpires_Hours(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[129 * 6 + Int(form.rawValue)]!, stringValue) + } + public func StickerPacks_ArchiveStickerPacksConfirmation(_ 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 Map_ETAHours(_ 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) @@ -6242,212 +6242,213 @@ public final class PresentationStrings: Equatable { let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[132 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_ShortDays(_ value: Int32) -> String { + public func ScheduledIn_Days(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[133 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_StatusMembers(_ value: Int32) -> String { + public func Contacts_InviteContacts(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[134 * 6 + Int(form.rawValue)]!, stringValue) } - public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String { + public func Conversation_StatusMembers(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[135 * 6 + Int(form.rawValue)]!, stringValue) } - public func VoiceChat_InviteLink_InviteSpeakers(_ 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[136 * 6 + Int(form.rawValue)]!, stringValue) } - public func Notifications_ExceptionMuteExpires_Hours(_ 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[137 * 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[138 * 6 + Int(form.rawValue)]!, _1, _2) + public func MessageTimer_ShortSeconds(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[138 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_ContextMenuSelectAll(_ 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[139 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ 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[140 * 6 + Int(form.rawValue)]!, _1, _2) } - public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String { - let form = getPluralizationForm(self.lc, value) - let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) - return String(format: self._ps[141 * 6 + Int(form.rawValue)]!, stringValue) + public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String { + let form = getPluralizationForm(self.lc, selector) + return String(format: self._ps[141 * 6 + Int(form.rawValue)]!, _2, _1, _3) } - public func SharedMedia_Video(_ value: Int32) -> String { + public func ForwardedFiles(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[142 * 6 + Int(form.rawValue)]!, stringValue) } - public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { + public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[143 * 6 + Int(form.rawValue)]!, stringValue) } - public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String { - let form = getPluralizationForm(self.lc, selector) - return String(format: self._ps[144 * 6 + Int(form.rawValue)]!, _1, _2) + public func ForwardedPolls(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[144 * 6 + Int(form.rawValue)]!, stringValue) } - public func VoiceChat_Panel_Members(_ 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[145 * 6 + Int(form.rawValue)]!, stringValue) } - public func Stats_GroupShowMoreTopInviters(_ value: Int32) -> String { + public func AttachmentMenu_SendVideo(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[146 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedVideos(_ 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[147 * 6 + Int(form.rawValue)]!, stringValue) } - public func ForwardedContacts(_ value: Int32) -> String { + public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[148 * 6 + Int(form.rawValue)]!, stringValue) } - public func Map_ETAHours(_ 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[149 * 6 + Int(form.rawValue)]!, stringValue) } - public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { + public func InviteText_ContactsCountText(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[150 * 6 + Int(form.rawValue)]!, stringValue) } - public func ChatList_SelectedChats(_ value: Int32) -> String { + public func ForwardedStickers(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[151 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_MessageViewComments(_ value: Int32) -> String { + public func Call_Minutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[152 * 6 + Int(form.rawValue)]!, stringValue) } - public func ChatList_MessagePhotos(_ 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[153 * 6 + Int(form.rawValue)]!, stringValue) } - public func Call_Hours(_ value: Int32) -> String { + public func ForwardedGifs(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[154 * 6 + Int(form.rawValue)]!, stringValue) } - public func Conversation_ContextViewReplies(_ value: Int32) -> String { + public func Chat_TitlePinnedMessages(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[155 * 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[156 * 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[156 * 6 + Int(form.rawValue)]!, _1, _2) } - public func VoiceOver_Chat_MessagesSelected(_ value: Int32) -> String { + public func MessageTimer_Weeks(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[157 * 6 + Int(form.rawValue)]!, stringValue) } - public func MuteExpires_Minutes(_ 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[158 * 6 + Int(form.rawValue)]!, stringValue) } - public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String { + public func Stats_GroupTopAdminDeletions(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[159 * 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[160 * 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[160 * 6 + Int(form.rawValue)]!, _0, _1) } - public func Stats_MessageViews(_ value: Int32) -> String { + public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[161 * 6 + Int(form.rawValue)]!, stringValue) } - public func Call_ShortMinutes(_ value: Int32) -> String { + public func VoiceChat_InviteLink_InviteSpeakers(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[162 * 6 + Int(form.rawValue)]!, stringValue) } - public func VoiceOver_Chat_PollOptionCount(_ value: Int32) -> String { + public func MessageTimer_Months(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[163 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_Seconds(_ value: Int32) -> String { + 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[164 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_ShortHours(_ value: Int32) -> String { + public func InviteLink_InviteLinks(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[165 * 6 + Int(form.rawValue)]!, stringValue) } - public func Watch_UserInfo_Mute(_ value: Int32) -> String { + public func UserCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[166 * 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[167 * 6 + Int(form.rawValue)]!, _2, _1, _3) + public func VoiceChat_InviteLink_InviteListeners(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[167 * 6 + Int(form.rawValue)]!, stringValue) } - public func Stats_GroupTopPosterChars(_ value: Int32) -> String { + public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[168 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_Minutes(_ value: Int32) -> String { + public func ScheduledIn_Minutes(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[169 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_ShortWeeks(_ value: Int32) -> String { + public func ForwardedAudios(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[170 * 6 + Int(form.rawValue)]!, stringValue) } - public func StickerPack_RemoveMaskCount(_ value: Int32) -> String { + public func MessageTimer_Days(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[171 * 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[172 * 6 + Int(form.rawValue)]!, _1, _2) + public func PeopleNearby_ShowMorePeople(_ value: Int32) -> String { + let form = getPluralizationForm(self.lc, value) + let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) + return String(format: self._ps[172 * 6 + Int(form.rawValue)]!, stringValue) } - public func MessageTimer_Hours(_ value: Int32) -> String { + public func Watch_UserInfo_Mute(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[173 * 6 + Int(form.rawValue)]!, stringValue) } - public func Call_Minutes(_ value: Int32) -> String { + public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String { let form = getPluralizationForm(self.lc, value) let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator) return String(format: self._ps[174 * 6 + Int(form.rawValue)]!, stringValue) } - public func StickerPack_RemoveStickerCount(_ 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[175 * 6 + Int(form.rawValue)]!, stringValue) diff --git a/submodules/TelegramUI/Images.xcassets/Call/CallSwitchCameraButton.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Call/CallSwitchCameraButton.imageset/Contents.json index 958ae1e032..e6f1b93d3e 100644 --- a/submodules/TelegramUI/Images.xcassets/Call/CallSwitchCameraButton.imageset/Contents.json +++ b/submodules/TelegramUI/Images.xcassets/Call/CallSwitchCameraButton.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "ic_call_flip.pdf", + "filename" : "ic_cam_flip.pdf", "idiom" : "universal" } ], diff --git a/submodules/TelegramUI/Images.xcassets/Call/Volume.imageset/volsmall.pdf b/submodules/TelegramUI/Images.xcassets/Call/CallSwitchCameraButton.imageset/ic_cam_flip.pdf similarity index 69% rename from submodules/TelegramUI/Images.xcassets/Call/Volume.imageset/volsmall.pdf rename to submodules/TelegramUI/Images.xcassets/Call/CallSwitchCameraButton.imageset/ic_cam_flip.pdf index 49993ba2bff2f0d355f8384776943b189fe9a839..5084218a29d6c8d90eb3ae95130f63e3a9729eae 100644 GIT binary patch delta 1083 zcmeyRyhdq)UA?)5fr6bKS8+*EYGN)|1*7j2?>-fC9+&TxT(Jo$AC&`RezR=;#K>iE ztl{>71@HNP1kU{XGA<<4V~NB;h5GID-6~6;ooyynsv^4Zfxzb6)U{>{A9K0vD2H^-`G^~{Be2I zlQ`YqJzFo&>alZqcpx;x%W$p!dNq~eopLr8Gk#~SUjMe^O303MmUr*Gj~h812x@0; z-4(DV%iR5TbHIr`4%al+a(35Gd?mVUg7t*1iT~Ixu-i@C^&lc~k&0GZv)`8MOPN_U z=5;-nFngi-s$c8e?wg9m^_2(1l~>)8F6iP|{Os=b)$h1(OkaK{iSN7?chcc6ViJZA zjg%XE|H`aB+x5}GL&HU~U_)o{rpH{y${%Ypl>fhG_ zj6wq6IQ}q@nt3%~X7u~!PM1*SB>#i|e(iXhu#{i!>9>cDM;^a8tR*J-Y2&1W$S8cE5OeeAf=QH;yyJLjHLi zl%29@?UP+c7ilJVTJtw8NKx9|I@ibj+xqVv)we!}ikotncpZNAx^maDgNNU3T>t6R zpNJC&5sj;me<(Nq?xs(xV@@nk`V+fprOPzK441Tv-|YluymBw!T6!() z-3*N%mYnC!>vcSjS#KV#k>2SHh;<4 z#4Pb!Z`Vfuc?&if@^$iMo2-aF7_X}vIJe5I`H9`k8y3#*;Vk@6k52G_W)^FgA@cFi-~~ zO$B}5{1lhOl2io^7b_zJBLhPtn3Bme1S|p`dBqkdg8 z_^dd2=JDBId+*L{G%0*P^YuCT`gp4|6Kq3kUO(Boe%rN%3qGn+QB|fBH;SEDbVkqr zqcQD6&4_wm6#cPLqfb$1i=s$g?YDG`DY-v(bz1@~@9^ zw7>6~a@%BAUdm+8#eqgO0TrHIEYZ()-+P!edr{W&Js~V6R=F3pa^C5b6>mA^`|{>x z-rio0mlf(|#~u~jZ&e60;;IsFRX=04_3X?x*^9Ry*Lz3jaC>apGjU6m2OI*<3P-PhcyeD_=Fye+pv z#9T5B)8?oBY~kVmxU+WeT8-&9m%P1nz4@!9i`@GNS81P@XCFG1b>*)U-&S0cUXomX zt#ihszmwSN6E^9whHr1Wa;Nlcu}bpUJDv`EvyW%oTF@swGxy1{YH^)hp_}Wb<@xIK ztUg+CWFEWwR*~gUE=u^*{2`Q^yiwDFn^4>WAoxm@$K^S zA1~i>xgoc{q;--H^Aao10-f1YOy|s2aEqS(toM%h`%OuEzo{L(=eaL7SR;OlXylf% zb;}#)WJ}r>ZhCVp^@!`Dp87L>51+{T{4|Q1oou~3=HH#!8vD+lHE^@edc5lN?a!Aq zwSKQJ+Id$YGsa(XViU|X^|N`;bIJYZ?wa57F&kDt;Y!U*f#!7}D?e#-26F{Bi;;nX z(c~w5d$f%#4UG)U3@oDz4Ag;0Q$gQ1KgA`nBvnDf#mdOQ$iUDDreyMIelrO}0}BHM z0}xQiQ{VzK42&(!O(#nVsDv0AnqiSN!4LzQX@PEtiGisZhM1v&>Eww5Ht~jOiI(O` zmWinb21$k{#%30##%X4T$)+Y|#+JtBCWdxgHUyO@#6pU_#G;alqSQ1l6C*PVE>%@m He>W}wTg6NC diff --git a/submodules/TelegramUI/Images.xcassets/Call/Volume.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Call/StatusScreen.imageset/Contents.json similarity index 74% rename from submodules/TelegramUI/Images.xcassets/Call/Volume.imageset/Contents.json rename to submodules/TelegramUI/Images.xcassets/Call/StatusScreen.imageset/Contents.json index affbec4133..a12e93d182 100644 --- a/submodules/TelegramUI/Images.xcassets/Call/Volume.imageset/Contents.json +++ b/submodules/TelegramUI/Images.xcassets/Call/StatusScreen.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "volsmall.pdf", + "filename" : "ic_voicesharing.pdf", "idiom" : "universal" } ], diff --git a/submodules/TelegramUI/Images.xcassets/Call/Video.imageset/ic_vc_camera.pdf b/submodules/TelegramUI/Images.xcassets/Call/StatusScreen.imageset/ic_voicesharing.pdf similarity index 64% rename from submodules/TelegramUI/Images.xcassets/Call/Video.imageset/ic_vc_camera.pdf rename to submodules/TelegramUI/Images.xcassets/Call/StatusScreen.imageset/ic_voicesharing.pdf index 0fdb8285cc73793a331f71b00b6bf46cb574f84a..e19c33373da878be5036c1f2255ae6b84af0b639 100644 GIT binary patch delta 874 zcmdm?dQ@S8UA?KPfr6bKS8+*EYGN)|1*30>cV4t1&z=3j1+fY`u0d0_yyM(-icwBV zr6F43>)%E`S9@iHgwM(o4?jE+|HUg_B**ZY#1*OEv&6on&lX#|^x{i5-D)b@vZYXAliQhjf~Iqu{j!d!MU^f+FDLmjmE*jZWPj}*&gyzGi*I|Ux^iv|%bg>3 z{>}RJWUUXDP1~bY~;=S;@gw& zI}TO~^>6NvT)#CYwm7i5Qaanwd4*X`qy2)Opo7In@}n5}TLlfH*)BFLJJiu}e%;O& zmome&=Fa=VxM}+uugw!UmU+#5D)b@s569H$+V`h@dU4OzTk=QSB+*ME(KDy-tXG@T z(Bacrn_gXAsnNya^TB%0a-YlF_iSC1TVQBwq;yw`t5LteCXnO3d%@Kp;r{s0*|kCp zs%1+XZhowlJ2gw9+(k%w(hJGrk~xA2hbMD=Q{#OzXUfYpU5T4c*3A|6*Wyd&zaIE1 zZtv55zQ?-GPSBs<^;>qkd1-|Qe^9={kGB@=e^n1IcYId(=eKXZi6P6BcRzoudL$k?+0<{9h z3Nac^rI|S?3PuL5M#e^y{|o5om>3%vSQuFvSwo@0y7MZO^q!lFBMb?F)%m6B58mjW?*h%@me>W}wds$c0 delta 1485 zcmai!eKgYx7{{Z$O-4!OWtx}aO6>RBn`N!YSifls8u~wycyc zUnwQ_QkcovwKJ~z!!FNjNarRJZ)VF$e&QrtB6Sa`e4K@6NorxdnBwrpl{1MvA3d?z zya#S|(I)7}w4*^uvc*FyT*aV7MDalkbXrsT7hV>5F99DqwGFY;uEj*3{U1i4ca{!R zk2naW_uGbC3UY*Le1iqY(YFQFLMNND=sh{2xMnKxooFbr&TCE~^>%*KG}>unpD-M< z50DcHoP@@ky>$0>NC{;|Y~BW_jyVD}p%FXovHXiAv^LaI^siF&@;^2N`rt>bSOHV+`E z>4i=_JN+qV!CUj`y?JSwuV|c$TU9!W_-25ImLd$62J}W6q#lA&K~c49Z zfJ~}7ubx_938ECp>~&A6*oowlwAeNNdTV@3wy2G0YkaqoR#76LN+ySkVGG5ef|;;J&oV7_+klq$-PW8d5TiPrt~R0Ji4&VU-R5VjzD*xDF2QS;MN6+O;u-ogtm+B4p~0a1;&%P?ufUU=n>JY^2qD{9s!JQO+<5a>I<(bvYe}G)FT8)sIoVIl zIat}RB1GCo^Bt0kYR0N--6KNZ52z)w8T)~l_2#;531PB8*=YW{$M^^J?puzUHIFnW zGUzD`9urn9_H-B<=VfkhttwjXui_$OHmo+XyABFAgxn3nA@PjdZgDM_vbdaI?62VD zOg%wyN4AyBt!Wbko=v~sDzL}-$ruytb$^9~v#xC&x2{^xROV@_fJiuq%-YaO+6LO9 z;3ut|;=`k8Uy(B&$l^n7G*Boc@YSGw)+4CFzmgP+-3@>^Bpmsd;L&i%-vbg2U@=*s zwz(I8!u-b)^$i2ifc-a5Ks5GShR0-8X%kKbBToZV6b45J=x90(q*KvI4Ei(}j0!=5 jcn}K`A%y=ufd~9k)WOU+Hj^F#L8CGD5Cnomae@2^5Yv+2 diff --git a/submodules/TelegramUI/Images.xcassets/Call/Video.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Call/StatusVideo.imageset/Contents.json similarity index 75% rename from submodules/TelegramUI/Images.xcassets/Call/Video.imageset/Contents.json rename to submodules/TelegramUI/Images.xcassets/Call/StatusVideo.imageset/Contents.json index c01e0f97c1..9acec56798 100644 --- a/submodules/TelegramUI/Images.xcassets/Call/Video.imageset/Contents.json +++ b/submodules/TelegramUI/Images.xcassets/Call/StatusVideo.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "ic_vc_camera.pdf", + "filename" : "ic_voicecamera.pdf", "idiom" : "universal" } ], diff --git a/submodules/TelegramUI/Images.xcassets/Call/CallSwitchCameraButton.imageset/ic_call_flip.pdf b/submodules/TelegramUI/Images.xcassets/Call/StatusVideo.imageset/ic_voicecamera.pdf similarity index 59% rename from submodules/TelegramUI/Images.xcassets/Call/CallSwitchCameraButton.imageset/ic_call_flip.pdf rename to submodules/TelegramUI/Images.xcassets/Call/StatusVideo.imageset/ic_voicecamera.pdf index 3a34ee5aa778f59756457e715ae8ef57099969ad..9302da2be72dcabb32a01fc83ae1c397745f0a3d 100644 GIT binary patch delta 1208 zcmZ3gx=CSz7?-hvfkJ*#7MG39L_M*3eV^34^pXq(Q)5E~J3Fr8lA_eaT&@bn++fE( z8AFae-?c5=qmm9B`&JphVR@~C_C>c@om*!9_ty0J{>AI$8P@628eN~%_g++&oc;Z# zb!XAs!*kx5?3mTP<$%=Pj7^#4t1IWdS?d$axzzjk*Ee>n@_)qmx-Xx*WP|A0O-p;9 zHP&z8X>pGeefPRpaNUXvM)__Rd1s_ZcU}=>@lctiYW_u_NH33h=5`CyY3rV?zP`$7 zs{7p3oD~z+YMGm6nntTGJY}@|)eaBo^IBW&)SJET?w)aR-`vO2+gCdO4Prl`8Y@%w zWa|_0E?B8o>1hO7j7=}?MYcsQ%Lu%de>Q|E9WlG4QN}sBPnr4e72^r zhhRp|!ilT6%T6xsxbEO)#ZWnYkHD9ezuWRBKiWEV^Xuz(Wv?*Ea@(CeERoq%d}MuC zBOklF%jE}>CrS!h)ZH)tlAqqT?d6>nQ_tX$6}mlPN7+Y77A3jYmm^jsS+h^};Caleo$*)4C{Z<=yW{n|E#fEV z*jXKlm1XM?H>=^e!m()aq5n+xUmtk%U$C%!%lrE;%timO>YsUep5LL0zoGWG>-~6n zr{Br3;#F_HFtwNV)Tp~UxooIkD87b4Ft7hbbKRxe@pJnh@8L?#OM#{kAPba;3@0yS zkux#^CaE9={h-w1{L-T2)M5n_h=6l`UP)?RNwESb%>{wd7gU?c^UA~#t| zKv3JzOu^7BRzcr6zcjBz!B9cpJ2RzNAsWa6t3$HPd~&#ef*{242)9{G?hsHBGSo9x zh|zE=&CE$rFfwp8GB%ogP(Z8R(7?plz`(-D(#SH(z(5^{G!^uH^HW?BOHvgyT&#=? zjIb#|m|jton#N_IV98|w2MT7UrpBfUX$mkgGb3QgfPg|COw8ES$N(rdxn5AQ-oV@d zQ{Kb^L(IV392o9s=9n1(!vS5)6l69Kfb1(NO3chjEdmw~3i`pBRjCS=z=+MyFHtZD zho8P@L0($Ef(4Z00t{FiOEdGtG)r?c!^A{0LkkmN5G5H{SQuNFS{R#JS{S9-aS>Lc Z5DO`O5{pW}L1b)UXvC$e>gw;t1ppCQsviIV delta 1782 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 rT2cyzfn(rONE`xOP;Q-l5w)RDUL literal 0 HcmV?d00001 diff --git a/submodules/TelegramUI/Images.xcassets/Call/StatusVolumeOff.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Call/StatusVolumeOff.imageset/Contents.json new file mode 100644 index 0000000000..95ca49b9d3 --- /dev/null +++ b/submodules/TelegramUI/Images.xcassets/Call/StatusVolumeOff.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "ic_voicevolumeoff.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/submodules/TelegramUI/Images.xcassets/Call/StatusVolumeOff.imageset/ic_voicevolumeoff.pdf b/submodules/TelegramUI/Images.xcassets/Call/StatusVolumeOff.imageset/ic_voicevolumeoff.pdf new file mode 100644 index 0000000000000000000000000000000000000000..bcc068ce30fb81b97b71f252ad476ce7d285ff0c GIT binary patch literal 4269 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 D)DU+q literal 0 HcmV?d00001 diff --git a/submodules/TelegramUI/Resources/PresentationStrings.mapping b/submodules/TelegramUI/Resources/PresentationStrings.mapping index 4989794867cd6333834e3a4b2f7fc51d40a71e3c..55f2253cdb881abcd28cc5be47687fb65cbbd4d4 100644 GIT binary patch delta 32350 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 bC(vf&!oNc`|0KWP3u%1}H3r&5nbY`xZ^{{) delta 32793 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 V#m5W-NG4p3*c|K;{=AFQ{|~Io+s*(0 From 385b035ed0ba3cb95a9a858c4bb071e9186c3bdf Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Fri, 30 Apr 2021 22:47:13 +0400 Subject: [PATCH 3/4] Video Chat Improvements --- .../Sources/PresentationCallManager.swift | 1 + .../Sources/ContextActionsContainerNode.swift | 9 +- .../Sources/CallControllerButton.swift | 33 +++++++ .../Sources/PresentationGroupCall.swift | 70 ++++++++++++++ .../VoiceChatCameraPreviewController.swift | 25 +++-- .../Sources/VoiceChatController.swift | 93 ++++++++++--------- .../Sources/VoiceChatParticipantItem.swift | 14 +-- submodules/TgVoipWebrtc/tgcalls | 2 +- 8 files changed, 188 insertions(+), 59 deletions(-) diff --git a/submodules/AccountContext/Sources/PresentationCallManager.swift b/submodules/AccountContext/Sources/PresentationCallManager.swift index 423d172138..0a96e7aa79 100644 --- a/submodules/AccountContext/Sources/PresentationCallManager.swift +++ b/submodules/AccountContext/Sources/PresentationCallManager.swift @@ -372,6 +372,7 @@ public protocol PresentationGroupCall: class { var incomingVideoSources: Signal, NoError> { get } func makeIncomingVideoView(endpointId: String, completion: @escaping (PresentationCallVideoView?) -> Void) + func makeOutgoingVideoView(completion: @escaping (PresentationCallVideoView?) -> Void) func loadMoreMembers(token: String) } diff --git a/submodules/ContextUI/Sources/ContextActionsContainerNode.swift b/submodules/ContextUI/Sources/ContextActionsContainerNode.swift index c09c105d8c..82bb62ee10 100644 --- a/submodules/ContextUI/Sources/ContextActionsContainerNode.swift +++ b/submodules/ContextUI/Sources/ContextActionsContainerNode.swift @@ -165,8 +165,11 @@ private final class InnerActionsContainerNode: ASDisplayNode { gesture.isEnabled = self.panSelectionGestureEnabled } - func updateLayout(widthClass: ContainerViewLayoutSizeClass, constrainedWidth: CGFloat, transition: ContainedViewLayoutTransition) -> CGSize { + func updateLayout(widthClass: ContainerViewLayoutSizeClass, constrainedWidth: CGFloat, minimalWidth: CGFloat?, transition: ContainedViewLayoutTransition) -> CGSize { var minActionsWidth: CGFloat = 250.0 + if let minimalWidth = minimalWidth, minimalWidth > minActionsWidth { + minActionsWidth = minimalWidth + } switch widthClass { case .compact: @@ -517,10 +520,10 @@ final class ContextActionsContainerNode: ASDisplayNode { } var contentSize = CGSize() - let actionsSize = self.actionsNode.updateLayout(widthClass: widthClass, constrainedWidth: constrainedWidth, transition: transition) + let actionsSize = self.actionsNode.updateLayout(widthClass: widthClass, constrainedWidth: constrainedWidth, minimalWidth: nil, transition: transition) if let additionalActionsNode = self.additionalActionsNode, let additionalShadowNode = self.additionalShadowNode { - let additionalActionsSize = additionalActionsNode.updateLayout(widthClass: widthClass, constrainedWidth: actionsSize.width, transition: transition) + let additionalActionsSize = additionalActionsNode.updateLayout(widthClass: widthClass, constrainedWidth: actionsSize.width, minimalWidth: actionsSize.width, transition: transition) contentSize = additionalActionsSize let bounds = CGRect(origin: CGPoint(), size: additionalActionsSize) diff --git a/submodules/TelegramCallsUI/Sources/CallControllerButton.swift b/submodules/TelegramCallsUI/Sources/CallControllerButton.swift index 28bdc66a40..fbac931468 100644 --- a/submodules/TelegramCallsUI/Sources/CallControllerButton.swift +++ b/submodules/TelegramCallsUI/Sources/CallControllerButton.swift @@ -5,6 +5,7 @@ import AsyncDisplayKit import SwiftSignalKit import AppBundle import SemanticStatusNode +import AnimationUI private let labelFont = Font.regular(13.0) @@ -30,6 +31,8 @@ final class CallControllerButtonItemNode: HighlightTrackingButtonNode { } enum Image { + case cameraOff + case cameraOn case camera case mute case flipCamera @@ -63,6 +66,7 @@ final class CallControllerButtonItemNode: HighlightTrackingButtonNode { private let effectView: UIVisualEffectView private let contentBackgroundNode: ASImageNode private let contentNode: ASImageNode + private var animationNode: AnimationNode? private let overlayHighlightNode: ASImageNode private var statusNode: SemanticStatusNode? let textNode: ImmediateTextNode @@ -179,6 +183,33 @@ final class CallControllerButtonItemNode: HighlightTrackingButtonNode { let contentBackgroundImage: UIImage? = nil + var animationName: String? + switch content.image { + case .cameraOff: + animationName = "anim_cameraoff" + case .cameraOn: + animationName = "anim_cameraon" + default: + break + } + + if let animationName = animationName { + let animationFrame = CGRect(origin: CGPoint(), size: CGSize(width: self.largeButtonSize, height: self.largeButtonSize)) + if self.animationNode == nil { + let animationNode = AnimationNode(animation: animationName, colors: nil, scale: 1.0) + self.animationNode = animationNode + self.contentContainer.insertSubnode(animationNode, aboveSubnode: self.contentNode) + } + if let animationNode = self.animationNode { + animationNode.frame = animationFrame + if previousContent == nil { + animationNode.seekToEnd() + } else if previousContent?.image != content.image { + animationNode.play() + } + } + } + let contentImage = generateImage(CGSize(width: self.largeButtonSize, height: self.largeButtonSize), contextGenerator: { size, context in context.clear(CGRect(origin: CGPoint(), size: size)) @@ -219,6 +250,8 @@ final class CallControllerButtonItemNode: HighlightTrackingButtonNode { var image: UIImage? switch content.image { + case .cameraOff, .cameraOn: + image = nil case .camera: image = generateTintedImage(image: UIImage(bundleImageName: "Call/CallCameraButton"), color: imageColor) case .mute: diff --git a/submodules/TelegramCallsUI/Sources/PresentationGroupCall.swift b/submodules/TelegramCallsUI/Sources/PresentationGroupCall.swift index 372c2ce9dc..c98e57d1d8 100644 --- a/submodules/TelegramCallsUI/Sources/PresentationGroupCall.swift +++ b/submodules/TelegramCallsUI/Sources/PresentationGroupCall.swift @@ -2384,6 +2384,76 @@ public final class PresentationGroupCallImpl: PresentationGroupCall { self.participantsContext?.lowerHand() } + public func makeOutgoingVideoView(completion: @escaping (PresentationCallVideoView?) -> Void) { + if self.videoCapturer == nil { + let videoCapturer = OngoingCallVideoCapturer() + self.videoCapturer = videoCapturer + } + + self.videoCapturer?.makeOutgoingVideoView(completion: { view in + if let view = view { + let setOnFirstFrameReceived = view.setOnFirstFrameReceived + let setOnOrientationUpdated = view.setOnOrientationUpdated + let setOnIsMirroredUpdated = view.setOnIsMirroredUpdated + completion(PresentationCallVideoView( + holder: view, + view: view.view, + setOnFirstFrameReceived: { f in + setOnFirstFrameReceived(f) + }, + getOrientation: { [weak view] in + if let view = view { + let mappedValue: PresentationCallVideoView.Orientation + switch view.getOrientation() { + case .rotation0: + mappedValue = .rotation0 + case .rotation90: + mappedValue = .rotation90 + case .rotation180: + mappedValue = .rotation180 + case .rotation270: + mappedValue = .rotation270 + } + return mappedValue + } else { + return .rotation0 + } + }, + getAspect: { [weak view] in + if let view = view { + return view.getAspect() + } else { + return 0.0 + } + }, + setOnOrientationUpdated: { f in + setOnOrientationUpdated { value, aspect in + let mappedValue: PresentationCallVideoView.Orientation + switch value { + case .rotation0: + mappedValue = .rotation0 + case .rotation90: + mappedValue = .rotation90 + case .rotation180: + mappedValue = .rotation180 + case .rotation270: + mappedValue = .rotation270 + } + f?(mappedValue, aspect) + } + }, + setOnIsMirroredUpdated: { f in + setOnIsMirroredUpdated { value in + f?(value) + } + } + )) + } else { + completion(nil) + } + }) + } + public func requestVideo() { if self.videoCapturer == nil { let videoCapturer = OngoingCallVideoCapturer() diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatCameraPreviewController.swift b/submodules/TelegramCallsUI/Sources/VoiceChatCameraPreviewController.swift index f80ee4e067..a0b59a8edf 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatCameraPreviewController.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatCameraPreviewController.swift @@ -21,14 +21,16 @@ final class VoiceChatCameraPreviewController: ViewController { private var animatedIn = false - private let shareCamera: () -> Void + private let cameraNode: GroupVideoNode + private let shareCamera: (ASDisplayNode) -> Void private let switchCamera: () -> Void private let shareScreen: () -> Void private var presentationDataDisposable: Disposable? - init(context: AccountContext, shareCamera: @escaping () -> Void, switchCamera: @escaping () -> Void, shareScreen: @escaping () -> Void) { + init(context: AccountContext, cameraNode: GroupVideoNode, shareCamera: @escaping (ASDisplayNode) -> Void, switchCamera: @escaping () -> Void, shareScreen: @escaping () -> Void) { self.context = context + self.cameraNode = cameraNode self.shareCamera = shareCamera self.switchCamera = switchCamera self.shareScreen = shareScreen @@ -58,10 +60,12 @@ final class VoiceChatCameraPreviewController: ViewController { } override public func loadDisplayNode() { - self.displayNode = VoiceChatCameraPreviewControllerNode(context: self.context) + self.displayNode = VoiceChatCameraPreviewControllerNode(context: self.context, cameraNode: self.cameraNode) self.controllerNode.shareCamera = { [weak self] in - self?.shareCamera() - self?.dismiss() + if let strongSelf = self { + strongSelf.shareCamera(strongSelf.cameraNode) + strongSelf.dismiss() + } } self.controllerNode.switchCamera = { [weak self] in self?.switchCamera() @@ -106,6 +110,7 @@ private class VoiceChatCameraPreviewControllerNode: ViewControllerTracingNode, U private let context: AccountContext private var presentationData: PresentationData + private let cameraNode: GroupVideoNode private let dimNode: ASDisplayNode private let wrappingScrollNode: ASScrollNode private let contentContainerNode: ASDisplayNode @@ -130,10 +135,12 @@ private class VoiceChatCameraPreviewControllerNode: ViewControllerTracingNode, U var dismiss: (() -> Void)? var cancel: (() -> Void)? - init(context: AccountContext) { + init(context: AccountContext, cameraNode: GroupVideoNode) { self.context = context self.presentationData = context.sharedContext.currentPresentationData.with { $0 } + self.cameraNode = cameraNode + self.wrappingScrollNode = ASScrollNode() self.wrappingScrollNode.view.alwaysBounceVertical = true self.wrappingScrollNode.view.delaysContentTouches = false @@ -201,7 +208,7 @@ private class VoiceChatCameraPreviewControllerNode: ViewControllerTracingNode, U self.wrappingScrollNode.view.delegate = self self.addSubnode(self.wrappingScrollNode) - + self.wrappingScrollNode.addSubnode(self.backgroundNode) self.wrappingScrollNode.addSubnode(self.contentContainerNode) @@ -214,6 +221,7 @@ private class VoiceChatCameraPreviewControllerNode: ViewControllerTracingNode, U self.contentContainerNode.addSubnode(self.previewContainerNode) + self.previewContainerNode.addSubnode(self.cameraNode) self.previewContainerNode.addSubnode(self.switchCameraButton) self.switchCameraButton.view.addSubview(self.switchCameraEffectView) self.switchCameraButton.addSubnode(self.switchCameraIconNode) @@ -368,6 +376,9 @@ private class VoiceChatCameraPreviewControllerNode: ViewControllerTracingNode, U let previewSize = CGSize(width: contentFrame.width - previewInset * 2.0, height: contentHeight - 243.0 - bottomInset) transition.updateFrame(node: self.previewContainerNode, frame: CGRect(origin: CGPoint(x: previewInset, y: 56.0), size: previewSize)) + self.cameraNode.frame = CGRect(origin: CGPoint(), size: previewSize) + self.cameraNode.updateLayout(size: previewSize, isLandscape: false, transition: .immediate) + let switchCameraFrame = CGRect(x: previewSize.width - 48.0 - 16.0, y: previewSize.height - 48.0 - 16.0, width: 48.0, height: 48.0) transition.updateFrame(node: self.switchCameraButton, frame: switchCameraFrame) transition.updateFrame(view: self.switchCameraEffectView, frame: CGRect(origin: CGPoint(), size: switchCameraFrame.size)) diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatController.swift b/submodules/TelegramCallsUI/Sources/VoiceChatController.swift index addd42ef7e..1f174c34cd 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatController.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatController.swift @@ -177,8 +177,6 @@ final class GroupVideoNode: ASDisplayNode { rotatedVideoFrame.size.height = ceil(rotatedVideoFrame.size.height) var videoSize = rotatedVideoFrame.size -// CGSize(width: 1203, height: 677) - transition.updatePosition(layer: self.videoView.view.layer, position: rotatedVideoFrame.center) transition.updateBounds(layer: self.videoView.view.layer, bounds: CGRect(origin: CGPoint(), size: videoSize)) @@ -194,6 +192,8 @@ private final class MainVideoContainerNode: ASDisplayNode { private let context: AccountContext private let call: PresentationGroupCall + private var backdropVideoNode: GroupVideoNode? + private var currentVideoNode: GroupVideoNode? private var candidateVideoNode: GroupVideoNode? private let topCornersNode: ASImageNode @@ -291,7 +291,6 @@ private final class MainVideoContainerNode: ASDisplayNode { strongSelf.candidateVideoNode = nil let videoNode = GroupVideoNode(videoView: videoView) - if let currentVideoNode = strongSelf.currentVideoNode { currentVideoNode.removeFromSupernode() strongSelf.currentVideoNode = nil @@ -500,6 +499,12 @@ public final class VoiceChatController: ViewController { if lhs.effectiveVideoEndpointId != rhs.effectiveVideoEndpointId { return false } + if lhs.hasVideo != rhs.hasVideo { + return false + } + if lhs.hasScreencast != rhs.hasScreencast { + return false + } if lhs.activityTimestamp != rhs.activityTimestamp { return false } @@ -639,10 +644,6 @@ public final class VoiceChatController: ViewController { if peerEntry.hasScreencast { textIcon.insert(.screen) } - if peerEntry.volume != nil { - textIcon.insert(.volume) - } else { - } let yourText: String if (peerEntry.about?.isEmpty ?? true) && peer.smallProfileImage == nil { yourText = presentationData.strings.VoiceChat_TapToAddPhotoOrBio @@ -676,6 +677,9 @@ public final class VoiceChatController: ViewController { text = .text(presentationData.strings.VoiceChat_StatusMutedForYou, textIcon, .destructive) icon = .microphone(true, UIColor(rgb: 0xff3b30)) } else { + if peerEntry.volume != nil { + textIcon.insert(.volume) + } let volumeValue = peerEntry.volume.flatMap { $0 / 100 } if let volume = volumeValue, volume != 100 { text = .text( presentationData.strings.VoiceChat_StatusSpeakingVolume("\(volume)%").0, textIcon, .constructive) @@ -875,8 +879,8 @@ public final class VoiceChatController: ViewController { private var requestedVideoSources = Set() private var videoNodes: [(String, GroupVideoNode)] = [] - private var currentDominantSpeakerWithVideo: (PeerId, String)? - private var currentForcedSpeakerWithVideo: (PeerId, String)? + private var currentDominantSpeakerWithVideo: PeerId? + private var currentForcedSpeakerWithVideo: PeerId? private var effectiveSpeakerWithVideo: (PeerId, String)? private var updateAvatarDisposable = MetaDisposable() @@ -982,11 +986,13 @@ public final class VoiceChatController: ViewController { self.bottomPanelBackgroundNode = ASDisplayNode() self.bottomPanelBackgroundNode.backgroundColor = panelBackgroundColor + self.bottomPanelBackgroundNode.isUserInteractionEnabled = false self.bottomCornersNode = ASImageNode() self.bottomCornersNode.displaysAsynchronously = false self.bottomCornersNode.displayWithoutProcessing = true self.bottomCornersNode.image = cornersImage(top: false, bottom: true, dark: false) + self.bottomCornersNode.isUserInteractionEnabled = false self.audioButton = CallControllerButtonItemNode() self.cameraButton = CallControllerButtonItemNode() @@ -1076,12 +1082,12 @@ public final class VoiceChatController: ViewController { let _ = self?.call.updateMuteState(peerId: peerId, isMuted: isMuted) }, pinPeer: { [weak self] peerId, endpointId in if let strongSelf = self { - if peerId != strongSelf.currentForcedSpeakerWithVideo?.0, let endpointId = endpointId { - strongSelf.currentForcedSpeakerWithVideo = (peerId, endpointId) + if peerId != strongSelf.currentForcedSpeakerWithVideo { + strongSelf.currentForcedSpeakerWithVideo = peerId } else { strongSelf.currentForcedSpeakerWithVideo = nil } - strongSelf.updatePinnedParticipant() + strongSelf.updatePinnedParticipant(waitForFullSize: false) var updateLayout = false if strongSelf.effectiveSpeakerWithVideo != nil && !strongSelf.isExpanded { @@ -1415,7 +1421,7 @@ public final class VoiceChatController: ViewController { for (endpointId, _) in strongSelf.videoNodes { if entry.effectiveVideoEndpointId == endpointId { - items.append(.action(ContextMenuActionItem(text: strongSelf.currentForcedSpeakerWithVideo?.0 == peer.id ? strongSelf.presentationData.strings.VoiceChat_UnpinVideo : strongSelf.presentationData.strings.VoiceChat_PinVideo, icon: { theme in + items.append(.action(ContextMenuActionItem(text: strongSelf.currentForcedSpeakerWithVideo == peer.id ? strongSelf.presentationData.strings.VoiceChat_UnpinVideo : strongSelf.presentationData.strings.VoiceChat_PinVideo, icon: { theme in return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Pin"), color: theme.actionSheet.primaryTextColor) }, action: { _, f in guard let strongSelf = self else { @@ -1891,12 +1897,12 @@ public final class VoiceChatController: ViewController { } } - if let (peerId, endpointId, _) = maxLevelWithVideo { - /*if strongSelf.currentDominantSpeakerWithVideo?.0 != peerId || strongSelf.currentDominantSpeakerWithVideo?.1 != endpointId { - strongSelf.currentDominantSpeakerWithVideo = (peerId, endpointId) - strongSelf.call.setFullSizeVideo(endpointId: endpointId) - strongSelf.mainVideoContainerNode?.updatePeer(peer: (peerId: peerId, source: endpointId), waitForFullSize: true) - }*/ + if let (peerId, _, _) = maxLevelWithVideo { + if strongSelf.currentDominantSpeakerWithVideo != peerId { + strongSelf.currentDominantSpeakerWithVideo = peerId + + strongSelf.updatePinnedParticipant(waitForFullSize: true) + } } strongSelf.itemInteraction?.updateAudioLevels(levels) @@ -2056,13 +2062,13 @@ public final class VoiceChatController: ViewController { if let (peerId, endpointId) = strongSelf.effectiveSpeakerWithVideo { if !validSources.contains(endpointId) { - if peerId == strongSelf.currentForcedSpeakerWithVideo?.0 { + if peerId == strongSelf.currentForcedSpeakerWithVideo { strongSelf.currentForcedSpeakerWithVideo = nil } - if peerId == strongSelf.currentDominantSpeakerWithVideo?.0 { + if peerId == strongSelf.currentDominantSpeakerWithVideo { strongSelf.currentDominantSpeakerWithVideo = nil } - strongSelf.updatePinnedParticipant() + strongSelf.updatePinnedParticipant(waitForFullSize: false) } } @@ -3240,14 +3246,22 @@ public final class VoiceChatController: ViewController { self.call.disableVideo() self.call.disableScreencast() } else { - let controller = VoiceChatCameraPreviewController(context: self.context, shareCamera: { [weak self] in - self?.call.requestVideo() - }, switchCamera: { [weak self] in - self?.call.switchVideoCamera() - }, shareScreen: { [weak self] in - self?.call.requestScreencast() - }) - self.controller?.present(controller, in: .window(.root)) + self.call.makeOutgoingVideoView { [weak self] view in + guard let strongSelf = self, let view = view else { + return + } + let cameraNode = GroupVideoNode(videoView: view) + let controller = VoiceChatCameraPreviewController(context: strongSelf.context, cameraNode: cameraNode, shareCamera: { [weak self] videoNode in + if let strongSelf = self { + strongSelf.call.requestVideo() + } + }, switchCamera: { [weak self] in + self?.call.switchVideoCamera() + }, shareScreen: { [weak self] in + self?.call.requestScreencast() + }) + strongSelf.controller?.present(controller, in: .window(.root)) + } } } @@ -3467,15 +3481,10 @@ public final class VoiceChatController: ViewController { self.topPanelBackgroundNode.frame = CGRect(x: 0.0, y: topPanelHeight - 24.0, width: size.width, height: min(topPanelFrame.height, 24.0)) let listMaxY = listTopInset + listSize.height - var bottomOffset: CGFloat = min(0.0, bottomEdge - listMaxY) + let bottomOffset: CGFloat = min(0.0, bottomEdge - listMaxY) + layout.size.height - bottomPanelHeight let bottomDelta = self.effectiveBottomAreaHeight - bottomAreaHeight - bottomOffset += layout.size.height - bottomPanelHeight - - var bottomCornersFrame = CGRect(origin: CGPoint(x: sideInset + floorToScreenPixels((size.width - contentWidth) / 2.0), y: -50.0 + bottomOffset + bottomDelta), size: CGSize(width: contentWidth - sideInset * 2.0, height: 50.0)) - - - + let bottomCornersFrame = CGRect(origin: CGPoint(x: sideInset + floorToScreenPixels((size.width - contentWidth) / 2.0), y: -50.0 + bottomOffset + bottomDelta), size: CGSize(width: contentWidth - sideInset * 2.0, height: 50.0)) let previousBottomCornersFrame = self.bottomCornersNode.frame if !bottomCornersFrame.equalTo(previousBottomCornersFrame) { self.bottomCornersNode.frame = bottomCornersFrame @@ -3703,7 +3712,7 @@ public final class VoiceChatController: ViewController { } let transition: ContainedViewLayoutTransition = animated ? .animated(duration: 0.3, curve: .linear) : .immediate - self.cameraButton.update(size: videoButtonSize, content: CallControllerButtonItemNode.Content(appearance: normalButtonAppearance, image: .camera), text: self.presentationData.strings.VoiceChat_Video, transition: transition) + self.cameraButton.update(size: videoButtonSize, content: CallControllerButtonItemNode.Content(appearance: normalButtonAppearance, image: .cameraOff), text: self.presentationData.strings.VoiceChat_Video, transition: transition) self.switchCameraButton.update(size: videoButtonSize, content: CallControllerButtonItemNode.Content(appearance: normalButtonAppearance, image: .flipCamera), text: "", transition: transition) @@ -4498,20 +4507,20 @@ public final class VoiceChatController: ViewController { self.enqueueTileTransition(tileTransition) } - private func updatePinnedParticipant() { + private func updatePinnedParticipant(waitForFullSize: Bool) { let effectivePinnedParticipant = self.currentForcedSpeakerWithVideo ?? self.currentDominantSpeakerWithVideo - guard effectivePinnedParticipant?.0 != self.effectiveSpeakerWithVideo?.0 || effectivePinnedParticipant?.1 != self.effectiveSpeakerWithVideo?.1 else { + guard effectivePinnedParticipant != self.effectiveSpeakerWithVideo?.0 else { return } - if let (peerId, _) = effectivePinnedParticipant { + if let peerId = effectivePinnedParticipant { for entry in self.currentEntries { switch entry { case let .peer(peer): if peer.peer.id == peerId, let endpointId = peer.effectiveVideoEndpointId { self.effectiveSpeakerWithVideo = (peerId, endpointId) self.call.setFullSizeVideo(endpointId: endpointId) - self.mainVideoContainerNode?.updatePeer(peer: (peerId: peerId, endpointId: endpointId), waitForFullSize: false) + self.mainVideoContainerNode?.updatePeer(peer: (peerId: peerId, endpointId: endpointId), waitForFullSize: waitForFullSize) } default: break diff --git a/submodules/TelegramCallsUI/Sources/VoiceChatParticipantItem.swift b/submodules/TelegramCallsUI/Sources/VoiceChatParticipantItem.swift index 7b0bc0762f..6b3c03250b 100644 --- a/submodules/TelegramCallsUI/Sources/VoiceChatParticipantItem.swift +++ b/submodules/TelegramCallsUI/Sources/VoiceChatParticipantItem.swift @@ -260,12 +260,10 @@ private class VoiceChatParticipantStatusNode: ASDisplayNode { default: break } - - let (textLayout, textApply) = makeTextLayout(TextNodeLayoutArguments(attributedString: attributedString, backgroundColor: nil, maximumNumberOfLines: 1, truncationType: .end, constrainedSize: CGSize(width: size.width, height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets())) - + let iconSize = CGSize(width: 16.0, height: 16.0) let spacing: CGFloat = 3.0 - var contentSize = textLayout.size + var icons: [UIImage] = [] if hasVolume, let image = generateTintedImage(image: UIImage(bundleImageName: "Call/StatusVolume"), color: color) { icons.append(image) @@ -276,6 +274,9 @@ private class VoiceChatParticipantStatusNode: ASDisplayNode { if hasScreen, let image = generateTintedImage(image: UIImage(bundleImageName: "Call/StatusScreen"), color: color) { icons.append(image) } + + let (textLayout, textApply) = makeTextLayout(TextNodeLayoutArguments(attributedString: attributedString, backgroundColor: nil, maximumNumberOfLines: 1, truncationType: .end, constrainedSize: CGSize(width: size.width - (iconSize.width + spacing) * CGFloat(icons.count), height: CGFloat.greatestFiniteMagnitude), alignment: .natural, cutout: nil, insets: UIEdgeInsets())) + var contentSize = textLayout.size contentSize.width += (iconSize.width + spacing) * CGFloat(icons.count) return (contentSize, { [weak self] in @@ -1162,6 +1163,7 @@ class VoiceChatParticipantItemNode: ItemListRevealOptionsItemNode { return (layout, { [weak self] synchronousLoad, animated in if let strongSelf = self { + var hadItem = strongSelf.layoutParams?.0 != nil strongSelf.layoutParams = (item, params, first, last) strongSelf.currentTitle = titleAttributedString?.string strongSelf.wavesColor = wavesColor @@ -1262,8 +1264,8 @@ class VoiceChatParticipantItemNode: ItemListRevealOptionsItemNode { } let transition: ContainedViewLayoutTransition - if animated { - transition = ContainedViewLayoutTransition.animated(duration: 0.4, curve: .spring) + if animated && hadItem { + transition = ContainedViewLayoutTransition.animated(duration: 0.3, curve: .easeInOut) } else { transition = .immediate } diff --git a/submodules/TgVoipWebrtc/tgcalls b/submodules/TgVoipWebrtc/tgcalls index ae6291030c..94a9c7b4e4 160000 --- a/submodules/TgVoipWebrtc/tgcalls +++ b/submodules/TgVoipWebrtc/tgcalls @@ -1 +1 @@ -Subproject commit ae6291030c8484492423c8272ad41db02509d9f7 +Subproject commit 94a9c7b4e49c943d1ca108e35779739ad99d695a From 34ec6b26174789e5f12bc6a32b2e0faaf140db75 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Fri, 30 Apr 2021 23:43:39 +0400 Subject: [PATCH 4/4] Improve greeting sticker preloading --- .../Sources/AccountContext.swift | 18 ++- .../AccountContext/Sources/FetchManager.swift | 5 + .../Sources/ChatListController.swift | 105 ++++++------------ .../Sources/ContactsController.swift | 59 ++-------- .../TelegramUI/Sources/AccountContext.swift | 4 +- .../TelegramUI/Sources/ChatController.swift | 4 +- .../TelegramUI/Sources/ChatEmptyNode.swift | 5 +- .../Sources/NavigateToChatController.swift | 2 +- .../Sources/PeerInfo/PeerInfoScreen.swift | 101 ++++++----------- .../TelegramUI/Sources/PrefetchManager.swift | 65 +++++++++-- 10 files changed, 153 insertions(+), 215 deletions(-) diff --git a/submodules/AccountContext/Sources/AccountContext.swift b/submodules/AccountContext/Sources/AccountContext.swift index 403c739bde..4968ec27ed 100644 --- a/submodules/AccountContext/Sources/AccountContext.swift +++ b/submodules/AccountContext/Sources/AccountContext.swift @@ -219,17 +219,14 @@ public final class ChatPeerNearbyData: Equatable { public final class ChatGreetingData: Equatable { public static func == (lhs: ChatGreetingData, rhs: ChatGreetingData) -> Bool { - if let lhsSticker = lhs.sticker, let rhsSticker = rhs.sticker, !lhsSticker.isEqual(to: rhsSticker) { - return false - } else if (lhs.sticker == nil) != (rhs.sticker == nil) { - return false - } - return true + return lhs.uuid == rhs.uuid } - public let sticker: TelegramMediaFile? + public let uuid: UUID + public let sticker: Signal - public init(sticker: TelegramMediaFile?) { + public init(uuid: UUID, sticker: Signal) { + self.uuid = uuid self.sticker = sticker } } @@ -285,14 +282,13 @@ public final class NavigateToChatControllerParams { public let activateMessageSearch: (ChatSearchDomain, String)? public let peekData: ChatPeekTimeout? public let peerNearbyData: ChatPeerNearbyData? - public let greetingData: ChatGreetingData? public let reportReason: ReportReason? public let animated: Bool public let options: NavigationAnimationOptions public let parentGroupId: PeerGroupId? public let completion: (ChatController) -> Void - public init(navigationController: NavigationController, chatController: ChatController? = nil, context: AccountContext, chatLocation: ChatLocation, chatLocationContextHolder: Atomic = Atomic(value: nil), subject: ChatControllerSubject? = nil, botStart: ChatControllerInitialBotStart? = nil, updateTextInputState: ChatTextInputState? = nil, activateInput: Bool = false, keepStack: NavigateToChatKeepStack = .default, useExisting: Bool = true, purposefulAction: (() -> Void)? = nil, scrollToEndIfExists: Bool = false, activateMessageSearch: (ChatSearchDomain, String)? = nil, peekData: ChatPeekTimeout? = nil, peerNearbyData: ChatPeerNearbyData? = nil, greetingData: ChatGreetingData? = nil, reportReason: ReportReason? = nil, animated: Bool = true, options: NavigationAnimationOptions = [], parentGroupId: PeerGroupId? = nil, completion: @escaping (ChatController) -> Void = { _ in }) { + public init(navigationController: NavigationController, chatController: ChatController? = nil, context: AccountContext, chatLocation: ChatLocation, chatLocationContextHolder: Atomic = Atomic(value: nil), subject: ChatControllerSubject? = nil, botStart: ChatControllerInitialBotStart? = nil, updateTextInputState: ChatTextInputState? = nil, activateInput: Bool = false, keepStack: NavigateToChatKeepStack = .default, useExisting: Bool = true, purposefulAction: (() -> Void)? = nil, scrollToEndIfExists: Bool = false, activateMessageSearch: (ChatSearchDomain, String)? = nil, peekData: ChatPeekTimeout? = nil, peerNearbyData: ChatPeerNearbyData? = nil, reportReason: ReportReason? = nil, animated: Bool = true, options: NavigationAnimationOptions = [], parentGroupId: PeerGroupId? = nil, completion: @escaping (ChatController) -> Void = { _ in }) { self.navigationController = navigationController self.chatController = chatController self.chatLocationContextHolder = chatLocationContextHolder @@ -309,7 +305,6 @@ public final class NavigateToChatControllerParams { self.activateMessageSearch = activateMessageSearch self.peekData = peekData self.peerNearbyData = peerNearbyData - self.greetingData = greetingData self.reportReason = reportReason self.animated = animated self.options = options @@ -719,6 +714,7 @@ public protocol AccountContext: class { var liveLocationManager: LiveLocationManager? { get } var peersNearbyManager: PeersNearbyManager? { get } var fetchManager: FetchManager { get } + var prefetchManager: PrefetchManager? { get } var downloadedMediaStoreManager: DownloadedMediaStoreManager { get } var peerChannelMemberCategoriesContextsManager: PeerChannelMemberCategoriesContextsManager { get } var wallpaperUploadManager: WallpaperUploadManager? { get } diff --git a/submodules/AccountContext/Sources/FetchManager.swift b/submodules/AccountContext/Sources/FetchManager.swift index c70576facd..ad4db3b593 100644 --- a/submodules/AccountContext/Sources/FetchManager.swift +++ b/submodules/AccountContext/Sources/FetchManager.swift @@ -158,3 +158,8 @@ public protocol FetchManager { func cancelInteractiveFetches(category: FetchManagerCategory, location: FetchManagerLocation, locationKey: FetchManagerLocationKey, resource: MediaResource) func fetchStatus(category: FetchManagerCategory, location: FetchManagerLocation, locationKey: FetchManagerLocationKey, resource: MediaResource) -> Signal } + +public protocol PrefetchManager { + var preloadedGreetingSticker: ChatGreetingData { get } + func prepareNextGreetingSticker() +} diff --git a/submodules/ChatListUI/Sources/ChatListController.swift b/submodules/ChatListUI/Sources/ChatListController.swift index 113c170936..babc8ab979 100644 --- a/submodules/ChatListUI/Sources/ChatListController.swift +++ b/submodules/ChatListUI/Sources/ChatListController.swift @@ -144,9 +144,6 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController private let featuredFiltersDisposable = MetaDisposable() private var processedFeaturedFilters = false - private let preloadedSticker = Promise(nil) - private let preloadStickerDisposable = MetaDisposable() - private let isReorderingTabsValue = ValuePromise(false) private var searchContentNode: NavigationBarSearchContentNode? @@ -613,53 +610,43 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController scrollToEndIfExists = true } - let _ = (strongSelf.preloadedSticker.get() - |> take(1) - |> deliverOnMainQueue).start(next: { [weak self] greetingSticker in - if let strongSelf = self { - strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peer.id), activateInput: activateInput && !peer.isDeleted, scrollToEndIfExists: scrollToEndIfExists, greetingData: greetingSticker.flatMap({ ChatGreetingData(sticker: $0) }), animated: !scrollToEndIfExists, options: strongSelf.groupId == PeerGroupId.root ? [.removeOnMasterDetails] : [], parentGroupId: strongSelf.groupId, completion: { [weak self] controller in - self?.chatListDisplayNode.containerNode.currentItemNode.clearHighlightAnimated(true) - if let promoInfo = promoInfo { - switch promoInfo { - case .proxy: - let _ = (ApplicationSpecificNotice.getProxyAdsAcknowledgment(accountManager: strongSelf.context.sharedContext.accountManager) - |> deliverOnMainQueue).start(next: { value in - guard let strongSelf = self else { - return - } - if !value { - controller.displayPromoAnnouncement(text: strongSelf.presentationData.strings.DialogList_AdNoticeAlert) - let _ = ApplicationSpecificNotice.setProxyAdsAcknowledgment(accountManager: strongSelf.context.sharedContext.accountManager).start() - } - }) - case let .psa(type, _): - let _ = (ApplicationSpecificNotice.getPsaAcknowledgment(accountManager: strongSelf.context.sharedContext.accountManager, peerId: peer.id) - |> deliverOnMainQueue).start(next: { value in - guard let strongSelf = self else { - return - } - if !value { - var text = strongSelf.presentationData.strings.ChatList_GenericPsaAlert - let key = "ChatList.PsaAlert.\(type)" - if let string = strongSelf.presentationData.strings.primaryComponent.dict[key] { - text = string - } else if let string = strongSelf.presentationData.strings.secondaryComponent?.dict[key] { - text = string - } - - controller.displayPromoAnnouncement(text: text) - let _ = ApplicationSpecificNotice.setPsaAcknowledgment(accountManager: strongSelf.context.sharedContext.accountManager, peerId: peer.id).start() - } - }) + strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peer.id), activateInput: activateInput && !peer.isDeleted, scrollToEndIfExists: scrollToEndIfExists, animated: !scrollToEndIfExists, options: strongSelf.groupId == PeerGroupId.root ? [.removeOnMasterDetails] : [], parentGroupId: strongSelf.groupId, completion: { [weak self] controller in + self?.chatListDisplayNode.containerNode.currentItemNode.clearHighlightAnimated(true) + if let promoInfo = promoInfo { + switch promoInfo { + case .proxy: + let _ = (ApplicationSpecificNotice.getProxyAdsAcknowledgment(accountManager: strongSelf.context.sharedContext.accountManager) + |> deliverOnMainQueue).start(next: { value in + guard let strongSelf = self else { + return } - } - })) - - if activateInput { - strongSelf.prepareRandomGreetingSticker() + if !value { + controller.displayPromoAnnouncement(text: strongSelf.presentationData.strings.DialogList_AdNoticeAlert) + let _ = ApplicationSpecificNotice.setProxyAdsAcknowledgment(accountManager: strongSelf.context.sharedContext.accountManager).start() + } + }) + case let .psa(type, _): + let _ = (ApplicationSpecificNotice.getPsaAcknowledgment(accountManager: strongSelf.context.sharedContext.accountManager, peerId: peer.id) + |> deliverOnMainQueue).start(next: { value in + guard let strongSelf = self else { + return + } + if !value { + var text = strongSelf.presentationData.strings.ChatList_GenericPsaAlert + let key = "ChatList.PsaAlert.\(type)" + if let string = strongSelf.presentationData.strings.primaryComponent.dict[key] { + text = string + } else if let string = strongSelf.presentationData.strings.secondaryComponent?.dict[key] { + text = string + } + + controller.displayPromoAnnouncement(text: text) + let _ = ApplicationSpecificNotice.setPsaAcknowledgment(accountManager: strongSelf.context.sharedContext.accountManager, peerId: peer.id).start() + } + }) } } - }) + })) } } } @@ -1126,7 +1113,7 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController super.displayNodeDidLoad() Queue.mainQueue().after(1.0) { - self.prepareRandomGreetingSticker() + self.context.prefetchManager?.prepareNextGreetingSticker() } } @@ -2763,28 +2750,6 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController } } - private func prepareRandomGreetingSticker() { - let context = self.context - self.preloadedSticker.set(.single(nil) - |> then(context.engine.stickers.randomGreetingSticker() - |> map { item in - return item?.file - })) - - self.preloadStickerDisposable.set((self.preloadedSticker.get() - |> mapToSignal { sticker -> Signal in - if let sticker = sticker { - let _ = freeMediaFileInteractiveFetched(account: context.account, fileReference: .standalone(media: sticker)).start() - return chatMessageAnimationData(postbox: context.account.postbox, resource: sticker.resource, fitzModifier: nil, width: 384, height: 384, synchronousLoad: false) - |> mapToSignal { _ -> Signal in - return .complete() - } - } else { - return .complete() - } - }).start()) - } - override public func tabBarDisabledAction() { self.donePressed() } diff --git a/submodules/ContactListUI/Sources/ContactsController.swift b/submodules/ContactListUI/Sources/ContactsController.swift index ddd00d0c2a..aecb825611 100644 --- a/submodules/ContactListUI/Sources/ContactsController.swift +++ b/submodules/ContactListUI/Sources/ContactsController.swift @@ -89,9 +89,6 @@ public class ContactsController: ViewController { public var switchToChatsController: (() -> Void)? - private let preloadedSticker = Promise(nil) - private let preloadStickerDisposable = MetaDisposable() - public override func updateNavigationCustomData(_ data: Any?, progress: CGFloat, transition: ContainedViewLayoutTransition) { if self.isNodeLoaded { self.contactsNode.contactListNode.updateSelectedChatLocation(data as? ChatLocation, progress: progress, transition: transition) @@ -235,24 +232,16 @@ public class ContactsController: ViewController { scrollToEndIfExists = true } - let _ = (strongSelf.preloadedSticker.get() - |> take(1) - |> deliverOnMainQueue).start(next: { [weak self] greetingSticker in - if let strongSelf = self { - strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peer.id), purposefulAction: { [weak self] in - if fromSearch { - self?.deactivateSearch(animated: false) - self?.switchToChatsController?() - } - }, scrollToEndIfExists: scrollToEndIfExists, greetingData: greetingSticker.flatMap({ ChatGreetingData(sticker: $0) }), options: [.removeOnMasterDetails], completion: { [weak self] _ in - if let strongSelf = self { - strongSelf.contactsNode.contactListNode.listNode.clearHighlightAnimated(true) - } - })) - - strongSelf.prepareRandomGreetingSticker() + strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(peer.id), purposefulAction: { [weak self] in + if fromSearch { + self?.deactivateSearch(animated: false) + self?.switchToChatsController?() } - }) + }, scrollToEndIfExists: scrollToEndIfExists, options: [.removeOnMasterDetails], completion: { [weak self] _ in + if let strongSelf = self { + strongSelf.contactsNode.contactListNode.listNode.clearHighlightAnimated(true) + } + })) } case let .deviceContact(id, _): let _ = ((strongSelf.context.sharedContext.contactDataManager?.extendedData(stableId: id) ?? .single(nil)) @@ -423,14 +412,6 @@ public class ContactsController: ViewController { self.contactsNode.contactListNode.enableUpdates = false } - public override func displayNodeDidLoad() { - super.displayNodeDidLoad() - - Queue.mainQueue().after(1.0) { - self.prepareRandomGreetingSticker() - } - } - override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) { super.containerLayoutUpdated(layout, transition: transition) @@ -525,26 +506,4 @@ public class ContactsController: ViewController { } }) } - - private func prepareRandomGreetingSticker() { - let context = self.context - self.preloadedSticker.set(.single(nil) - |> then(context.engine.stickers.randomGreetingSticker() - |> map { item in - return item?.file - })) - - self.preloadStickerDisposable.set((self.preloadedSticker.get() - |> mapToSignal { sticker -> Signal in - if let sticker = sticker { - let _ = freeMediaFileInteractiveFetched(account: context.account, fileReference: .standalone(media: sticker)).start() - return chatMessageAnimationData(postbox: context.account.postbox, resource: sticker.resource, fitzModifier: nil, width: 384, height: 384, synchronousLoad: false) - |> mapToSignal { _ -> Signal in - return .complete() - } - } else { - return .complete() - } - }).start()) - } } diff --git a/submodules/TelegramUI/Sources/AccountContext.swift b/submodules/TelegramUI/Sources/AccountContext.swift index 5e5e1ab5c3..34ea3cd855 100644 --- a/submodules/TelegramUI/Sources/AccountContext.swift +++ b/submodules/TelegramUI/Sources/AccountContext.swift @@ -112,7 +112,7 @@ public final class AccountContextImpl: AccountContext { public let engine: TelegramEngine public let fetchManager: FetchManager - private let prefetchManager: PrefetchManager? + public let prefetchManager: PrefetchManager? public var keyShortcutsController: KeyShortcutsController? @@ -172,7 +172,7 @@ public final class AccountContextImpl: AccountContext { } self.fetchManager = FetchManagerImpl(postbox: account.postbox, storeManager: self.downloadedMediaStoreManager) if sharedContext.applicationBindings.isMainApp && !temp { - self.prefetchManager = PrefetchManager(sharedContext: sharedContext, account: account, fetchManager: self.fetchManager) + self.prefetchManager = PrefetchManagerImpl(sharedContext: sharedContext, account: account, engine: self.engine, fetchManager: self.fetchManager) self.wallpaperUploadManager = WallpaperUploadManagerImpl(sharedContext: sharedContext, account: account, presentationData: sharedContext.presentationData) self.themeUpdateManager = ThemeUpdateManagerImpl(sharedContext: sharedContext, account: account) } else { diff --git a/submodules/TelegramUI/Sources/ChatController.swift b/submodules/TelegramUI/Sources/ChatController.swift index b3a1805c55..042d093469 100644 --- a/submodules/TelegramUI/Sources/ChatController.swift +++ b/submodules/TelegramUI/Sources/ChatController.swift @@ -418,7 +418,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G private var importStateDisposable: Disposable? - public init(context: AccountContext, chatLocation: ChatLocation, chatLocationContextHolder: Atomic = Atomic(value: nil), subject: ChatControllerSubject? = nil, botStart: ChatControllerInitialBotStart? = nil, mode: ChatControllerPresentationMode = .standard(previewing: false), peekData: ChatPeekTimeout? = nil, peerNearbyData: ChatPeerNearbyData? = nil, greetingData: ChatGreetingData? = nil) { + public init(context: AccountContext, chatLocation: ChatLocation, chatLocationContextHolder: Atomic = Atomic(value: nil), subject: ChatControllerSubject? = nil, botStart: ChatControllerInitialBotStart? = nil, mode: ChatControllerPresentationMode = .standard(previewing: false), peekData: ChatPeekTimeout? = nil, peerNearbyData: ChatPeerNearbyData? = nil) { let _ = ChatControllerCount.modify { value in return value + 1 } @@ -463,7 +463,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G self.stickerSettings = ChatInterfaceStickerSettings(loopAnimatedStickers: false) - self.presentationInterfaceState = ChatPresentationInterfaceState(chatWallpaper: self.presentationData.chatWallpaper, theme: self.presentationData.theme, strings: self.presentationData.strings, dateTimeFormat: self.presentationData.dateTimeFormat, nameDisplayOrder: self.presentationData.nameDisplayOrder, limitsConfiguration: context.currentLimitsConfiguration.with { $0 }, fontSize: self.presentationData.chatFontSize, bubbleCorners: self.presentationData.chatBubbleCorners, accountPeerId: context.account.peerId, mode: mode, chatLocation: chatLocation, subject: subject, peerNearbyData: peerNearbyData, greetingData: greetingData, pendingUnpinnedAllMessages: false, activeGroupCallInfo: nil, hasActiveGroupCall: false, importState: nil) + self.presentationInterfaceState = ChatPresentationInterfaceState(chatWallpaper: self.presentationData.chatWallpaper, theme: self.presentationData.theme, strings: self.presentationData.strings, dateTimeFormat: self.presentationData.dateTimeFormat, nameDisplayOrder: self.presentationData.nameDisplayOrder, limitsConfiguration: context.currentLimitsConfiguration.with { $0 }, fontSize: self.presentationData.chatFontSize, bubbleCorners: self.presentationData.chatBubbleCorners, accountPeerId: context.account.peerId, mode: mode, chatLocation: chatLocation, subject: subject, peerNearbyData: peerNearbyData, greetingData: context.prefetchManager?.preloadedGreetingSticker, pendingUnpinnedAllMessages: false, activeGroupCallInfo: nil, hasActiveGroupCall: false, importState: nil) self.presentationInterfaceStatePromise = ValuePromise(self.presentationInterfaceState) var mediaAccessoryPanelVisibility = MediaAccessoryPanelVisibility.none diff --git a/submodules/TelegramUI/Sources/ChatEmptyNode.swift b/submodules/TelegramUI/Sources/ChatEmptyNode.swift index 18976ae21f..1baaa5ff45 100644 --- a/submodules/TelegramUI/Sources/ChatEmptyNode.swift +++ b/submodules/TelegramUI/Sources/ChatEmptyNode.swift @@ -161,7 +161,7 @@ private final class ChatEmptyNodeGreetingChatContent: ASDisplayNode, ChatEmptyNo } else if !self.didSetupSticker { let sticker: Signal if let preloadedSticker = interfaceState.greetingData?.sticker { - sticker = .single(preloadedSticker) + sticker = preloadedSticker } else { sticker = self.context.engine.stickers.randomGreetingSticker() |> map { item -> TelegramMediaFile? in @@ -338,7 +338,7 @@ private final class ChatEmptyNodeNearbyChatContent: ASDisplayNode, ChatEmptyNode } else if !self.didSetupSticker { let sticker: Signal if let preloadedSticker = interfaceState.greetingData?.sticker { - sticker = .single(preloadedSticker) + sticker = preloadedSticker } else { sticker = self.context.engine.stickers.randomGreetingSticker() |> map { item -> TelegramMediaFile? in @@ -876,6 +876,7 @@ final class ChatEmptyNode: ASDisplayNode { node = ChatEmptyNodeNearbyChatContent(context: self.context, interaction: self.interaction) case .greeting: node = ChatEmptyNodeGreetingChatContent(context: self.context, interaction: self.interaction) + self.context.prefetchManager?.prepareNextGreetingSticker() } self.content = (contentType, node) self.addSubnode(node) diff --git a/submodules/TelegramUI/Sources/NavigateToChatController.swift b/submodules/TelegramUI/Sources/NavigateToChatController.swift index 4f6e15974f..fe5d204ab5 100644 --- a/submodules/TelegramUI/Sources/NavigateToChatController.swift +++ b/submodules/TelegramUI/Sources/NavigateToChatController.swift @@ -71,7 +71,7 @@ public func navigateToChatControllerImpl(_ params: NavigateToChatControllerParam }) } } else { - controller = ChatControllerImpl(context: params.context, chatLocation: params.chatLocation, chatLocationContextHolder: params.chatLocationContextHolder, subject: params.subject, botStart: params.botStart, peekData: params.peekData, peerNearbyData: params.peerNearbyData, greetingData: params.greetingData) + controller = ChatControllerImpl(context: params.context, chatLocation: params.chatLocation, chatLocationContextHolder: params.chatLocationContextHolder, subject: params.subject, botStart: params.botStart, peekData: params.peekData, peerNearbyData: params.peerNearbyData) } controller.purposefulAction = params.purposefulAction if let search = params.activateMessageSearch { diff --git a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift index 0755dbe75a..ff14e45412 100644 --- a/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift +++ b/submodules/TelegramUI/Sources/PeerInfo/PeerInfoScreen.swift @@ -1532,9 +1532,6 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD private var groupMembersSearchContext: GroupMembersSearchContext? - private let preloadedSticker = Promise(nil) - private let preloadStickerDisposable = MetaDisposable() - private let displayAsPeersPromise = Promise<[FoundPeer]>([]) fileprivate let accountsAndPeers = Promise<[(Account, Peer, Int32)]>() @@ -2838,24 +2835,7 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD if let _ = nearbyPeerDistance { self.preloadHistoryDisposable.set(self.context.account.addAdditionalPreloadHistoryPeerId(peerId: peerId)) - self.preloadedSticker.set(.single(nil) - |> then(context.engine.stickers.randomGreetingSticker() - |> map { item in - return item?.file - })) - - self.preloadStickerDisposable.set((self.preloadedSticker.get() - |> mapToSignal { sticker -> Signal in - if let sticker = sticker { - let _ = freeMediaFileInteractiveFetched(account: context.account, fileReference: .standalone(media: sticker)).start() - return chatMessageAnimationData(postbox: context.account.postbox, resource: sticker.resource, fitzModifier: nil, width: 384, height: 384, synchronousLoad: false) - |> mapToSignal { _ -> Signal in - return .complete() - } - } else { - return .complete() - } - }).start()) + self.context.prefetchManager?.prepareNextGreetingSticker() } } @@ -2870,7 +2850,6 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD self.selectAddMemberDisposable.dispose() self.addMemberDisposable.dispose() self.preloadHistoryDisposable.dispose() - self.preloadStickerDisposable.dispose() self.resolvePeerByNameDisposable?.dispose() self.navigationActionDisposable.dispose() self.enqueueMediaMessageDisposable.dispose() @@ -3356,24 +3335,18 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD switch key { case .message: if let navigationController = controller.navigationController as? NavigationController { - let _ = (self.preloadedSticker.get() - |> take(1) - |> deliverOnMainQueue).start(next: { [weak self] sticker in - if let strongSelf = self { - strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(strongSelf.peerId), keepStack: strongSelf.nearbyPeerDistance != nil ? .always : .default, peerNearbyData: strongSelf.nearbyPeerDistance.flatMap({ ChatPeerNearbyData(distance: $0) }), greetingData: strongSelf.nearbyPeerDistance != nil ? sticker.flatMap({ ChatGreetingData(sticker: $0) }) : nil, completion: { _ in - if strongSelf.nearbyPeerDistance != nil { - var viewControllers = navigationController.viewControllers - viewControllers = viewControllers.filter { controller in - if controller is PeerInfoScreen { - return false - } - return true - } - navigationController.setViewControllers(viewControllers, animated: false) + self.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: self.context, chatLocation: .peer(self.peerId), keepStack: self.nearbyPeerDistance != nil ? .always : .default, peerNearbyData: self.nearbyPeerDistance.flatMap({ ChatPeerNearbyData(distance: $0) }), completion: { [weak self] _ in + if let strongSelf = self, strongSelf.nearbyPeerDistance != nil { + var viewControllers = navigationController.viewControllers + viewControllers = viewControllers.filter { controller in + if controller is PeerInfoScreen { + return false } - })) + return true + } + navigationController.setViewControllers(viewControllers, animated: false) } - }) + })) } case .discussion: if let cachedData = self.data?.cachedData as? CachedChannelData, case let .known(maybeLinkedDiscussionPeerId) = cachedData.linkedDiscussionPeerId, let linkedDiscussionPeerId = maybeLinkedDiscussionPeerId { @@ -3773,24 +3746,18 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD private func openChatWithMessageSearch() { if let navigationController = (self.controller?.navigationController as? NavigationController) { - let _ = (self.preloadedSticker.get() - |> take(1) - |> deliverOnMainQueue).start(next: { [weak self] sticker in - if let strongSelf = self { - strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(strongSelf.peerId), keepStack: strongSelf.nearbyPeerDistance != nil ? .always : .default, activateMessageSearch: (.everything, ""), peerNearbyData: strongSelf.nearbyPeerDistance.flatMap({ ChatPeerNearbyData(distance: $0) }), greetingData: strongSelf.nearbyPeerDistance != nil ? sticker.flatMap({ ChatGreetingData(sticker: $0) }) : nil, completion: { _ in - if strongSelf.nearbyPeerDistance != nil { - var viewControllers = navigationController.viewControllers - viewControllers = viewControllers.filter { controller in - if controller is PeerInfoScreen { - return false - } - return true - } - navigationController.setViewControllers(viewControllers, animated: false) + self.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: self.context, chatLocation: .peer(self.peerId), keepStack: self.nearbyPeerDistance != nil ? .always : .default, activateMessageSearch: (.everything, ""), peerNearbyData: self.nearbyPeerDistance.flatMap({ ChatPeerNearbyData(distance: $0) }), completion: { [weak self] _ in + if let strongSelf = self, strongSelf.nearbyPeerDistance != nil { + var viewControllers = navigationController.viewControllers + viewControllers = viewControllers.filter { controller in + if controller is PeerInfoScreen { + return false } - })) + return true + } + navigationController.setViewControllers(viewControllers, animated: false) } - }) + })) } } @@ -4233,24 +4200,18 @@ private final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewD private func openChat() { if let navigationController = self.controller?.navigationController as? NavigationController { - let _ = (self.preloadedSticker.get() - |> take(1) - |> deliverOnMainQueue).start(next: { [weak self] sticker in - if let strongSelf = self { - strongSelf.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: strongSelf.context, chatLocation: .peer(strongSelf.peerId), keepStack: strongSelf.nearbyPeerDistance != nil ? .always : .default, peerNearbyData: strongSelf.nearbyPeerDistance.flatMap({ ChatPeerNearbyData(distance: $0) }), greetingData: strongSelf.nearbyPeerDistance != nil ? sticker.flatMap({ ChatGreetingData(sticker: $0) }) : nil, completion: { _ in - if strongSelf.nearbyPeerDistance != nil { - var viewControllers = navigationController.viewControllers - viewControllers = viewControllers.filter { controller in - if controller is PeerInfoScreen { - return false - } - return true - } - navigationController.setViewControllers(viewControllers, animated: false) + self.context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: self.context, chatLocation: .peer(self.peerId), keepStack: self.nearbyPeerDistance != nil ? .always : .default, peerNearbyData: self.nearbyPeerDistance.flatMap({ ChatPeerNearbyData(distance: $0) }), completion: { [weak self] _ in + if let strongSelf = self, strongSelf.nearbyPeerDistance != nil { + var viewControllers = navigationController.viewControllers + viewControllers = viewControllers.filter { controller in + if controller is PeerInfoScreen { + return false } - })) + return true + } + navigationController.setViewControllers(viewControllers, animated: false) } - }) + })) } } diff --git a/submodules/TelegramUI/Sources/PrefetchManager.swift b/submodules/TelegramUI/Sources/PrefetchManager.swift index 9ea80fb61b..88d8f64684 100644 --- a/submodules/TelegramUI/Sources/PrefetchManager.swift +++ b/submodules/TelegramUI/Sources/PrefetchManager.swift @@ -6,6 +6,7 @@ import SyncCore import TelegramUIPreferences import AccountContext import PhotoResources +import StickerResources import Emoji import UniversalMediaPlayer @@ -21,18 +22,23 @@ public enum PrefetchMediaItem { case animatedEmojiSticker(TelegramMediaFile) } -private final class PrefetchManagerImpl { +private final class PrefetchManagerInnerImpl { private let queue: Queue private let account: Account + private let engine: TelegramEngine private let fetchManager: FetchManager private var listDisposable: Disposable? private var contexts: [MediaId: PrefetchMediaContext] = [:] - - init(queue: Queue, sharedContext: SharedAccountContext, account: Account, fetchManager: FetchManager) { + + private let preloadGreetingStickerDisposable = MetaDisposable() + fileprivate let preloadedGreetingStickerPromise = Promise(nil) + + init(queue: Queue, sharedContext: SharedAccountContext, account: Account, engine: TelegramEngine, fetchManager: FetchManager) { self.queue = queue self.account = account + self.engine = engine self.fetchManager = fetchManager let networkType = account.networkType @@ -226,18 +232,63 @@ private final class PrefetchManagerImpl { } } } + + fileprivate func prepareNextGreetingSticker() { + let account = self.account + let engine = self.engine + self.preloadedGreetingStickerPromise.set(.single(nil) + |> then(engine.stickers.randomGreetingSticker() + |> map { item in + return item?.file + })) + + self.preloadGreetingStickerDisposable.set((self.preloadedGreetingStickerPromise.get() + |> mapToSignal { sticker -> Signal in + if let sticker = sticker { + let _ = freeMediaFileInteractiveFetched(account: account, fileReference: .standalone(media: sticker)).start() + return chatMessageAnimationData(postbox: account.postbox, resource: sticker.resource, fitzModifier: nil, width: 384, height: 384, synchronousLoad: false) + |> mapToSignal { _ -> Signal in + return .complete() + } + } else { + return .complete() + } + }).start()) + } } -final class PrefetchManager { +final class PrefetchManagerImpl: PrefetchManager { private let queue: Queue - private let impl: QueueLocalObject + private let impl: QueueLocalObject + private let uuid = Atomic(value: UUID()) - init(sharedContext: SharedAccountContext, account: Account, fetchManager: FetchManager) { + init(sharedContext: SharedAccountContext, account: Account, engine: TelegramEngine, fetchManager: FetchManager) { let queue = Queue.mainQueue() self.queue = queue self.impl = QueueLocalObject(queue: queue, generate: { - return PrefetchManagerImpl(queue: queue, sharedContext: sharedContext, account: account, fetchManager: fetchManager) + return PrefetchManagerInnerImpl(queue: queue, sharedContext: sharedContext, account: account, engine: engine, fetchManager: fetchManager) }) } + + var preloadedGreetingSticker: ChatGreetingData { + let signal: Signal = Signal { subscriber in + let disposable = MetaDisposable() + self.impl.with { impl in + disposable.set((impl.preloadedGreetingStickerPromise.get() |> take(1)).start(next: { file in + subscriber.putNext(file) + subscriber.putCompletion() + })) + } + return disposable + } + return ChatGreetingData(uuid: uuid.with { $0 }, sticker: signal) + } + + func prepareNextGreetingSticker() { + let _ = uuid.swap(UUID()) + self.impl.with { impl in + impl.prepareNextGreetingSticker() + } + } }