diff --git a/Telegram-iOS.xcworkspace/contents.xcworkspacedata b/Telegram-iOS.xcworkspace/contents.xcworkspacedata
index efd3029867..2670de51a9 100644
--- a/Telegram-iOS.xcworkspace/contents.xcworkspacedata
+++ b/Telegram-iOS.xcworkspace/contents.xcworkspacedata
@@ -379,6 +379,9 @@
+
+
diff --git a/submodules/PasscodeUI/Info.plist b/submodules/PasscodeUI/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/PasscodeUI/Info.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ $(CURRENT_PROJECT_VERSION)
+
+
diff --git a/submodules/PasscodeUI/PasscodeUI_Xcode.xcodeproj/project.pbxproj b/submodules/PasscodeUI/PasscodeUI_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..7c5dbbf5ae
--- /dev/null
+++ b/submodules/PasscodeUI/PasscodeUI_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,635 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D0C9C9FA230228D400FAB518 /* PasscodeUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9C9F8230228D400FAB518 /* PasscodeUI.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D0C9CA0E2302293400FAB518 /* PasscodeEntryControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA042302293200FAB518 /* PasscodeEntryControllerNode.swift */; };
+ D0C9CA0F2302293400FAB518 /* PasscodeBackground.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA052302293300FAB518 /* PasscodeBackground.swift */; };
+ D0C9CA102302293400FAB518 /* PasscodeEntryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA062302293300FAB518 /* PasscodeEntryController.swift */; };
+ D0C9CA112302293400FAB518 /* PasscodeSetupControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA072302293300FAB518 /* PasscodeSetupControllerNode.swift */; };
+ D0C9CA122302293400FAB518 /* PasscodeLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA082302293300FAB518 /* PasscodeLayout.swift */; };
+ D0C9CA132302293400FAB518 /* PasscodeLockIconNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA092302293300FAB518 /* PasscodeLockIconNode.swift */; };
+ D0C9CA142302293400FAB518 /* PasscodeEntryInputFieldNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA0A2302293400FAB518 /* PasscodeEntryInputFieldNode.swift */; };
+ D0C9CA152302293400FAB518 /* PasscodeEntryLabelNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA0B2302293400FAB518 /* PasscodeEntryLabelNode.swift */; };
+ D0C9CA162302293400FAB518 /* PasscodeEntryKeyboardNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA0C2302293400FAB518 /* PasscodeEntryKeyboardNode.swift */; };
+ D0C9CA172302293400FAB518 /* PasscodeSetupController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA0D2302293400FAB518 /* PasscodeSetupController.swift */; };
+ D0C9CA1C2302298E00FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA1B2302298E00FAB518 /* Foundation.framework */; };
+ D0C9CA1E2302299200FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA1D2302299200FAB518 /* UIKit.framework */; };
+ D0C9CA202302299500FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA1F2302299500FAB518 /* Display.framework */; };
+ D0C9CA222302299A00FAB518 /* ImageBlur.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA212302299A00FAB518 /* ImageBlur.framework */; };
+ D0C9CA24230229A200FAB518 /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA23230229A200FAB518 /* AsyncDisplayKit.framework */; };
+ D0C9CA26230229AA00FAB518 /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA25230229AA00FAB518 /* SwiftSignalKit.framework */; };
+ D0C9CA28230229AF00FAB518 /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA27230229AF00FAB518 /* Postbox.framework */; };
+ D0C9CA2A230229BA00FAB518 /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA29230229BA00FAB518 /* TelegramPresentationData.framework */; };
+ D0C9CA2C230229C200FAB518 /* TelegramUIPreferences.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA2B230229C200FAB518 /* TelegramUIPreferences.framework */; };
+ D0C9CA2E230229C900FAB518 /* AccountContext.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA2D230229C900FAB518 /* AccountContext.framework */; };
+ D0C9CA30230229D100FAB518 /* LocalAuth.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA2F230229D100FAB518 /* LocalAuth.framework */; };
+ D0C9CA32230229DE00FAB518 /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA31230229DE00FAB518 /* TelegramCore.framework */; };
+ D0C9CA34230229F100FAB518 /* LegacyComponents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA33230229F100FAB518 /* LegacyComponents.framework */; };
+ D0C9CA3623022A7400FAB518 /* TelegramStringFormatting.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA3523022A7400FAB518 /* TelegramStringFormatting.framework */; };
+ D0C9CA3A23022AA300FAB518 /* FrameworkBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA3923022AA300FAB518 /* FrameworkBundle.swift */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D0C9C9F5230228D400FAB518 /* PasscodeUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PasscodeUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9C9F8230228D400FAB518 /* PasscodeUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PasscodeUI.h; sourceTree = ""; };
+ D0C9C9F9230228D400FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D0C9CA042302293200FAB518 /* PasscodeEntryControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasscodeEntryControllerNode.swift; sourceTree = ""; };
+ D0C9CA052302293300FAB518 /* PasscodeBackground.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasscodeBackground.swift; sourceTree = ""; };
+ D0C9CA062302293300FAB518 /* PasscodeEntryController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasscodeEntryController.swift; sourceTree = ""; };
+ D0C9CA072302293300FAB518 /* PasscodeSetupControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasscodeSetupControllerNode.swift; sourceTree = ""; };
+ D0C9CA082302293300FAB518 /* PasscodeLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasscodeLayout.swift; sourceTree = ""; };
+ D0C9CA092302293300FAB518 /* PasscodeLockIconNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasscodeLockIconNode.swift; sourceTree = ""; };
+ D0C9CA0A2302293400FAB518 /* PasscodeEntryInputFieldNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasscodeEntryInputFieldNode.swift; sourceTree = ""; };
+ D0C9CA0B2302293400FAB518 /* PasscodeEntryLabelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasscodeEntryLabelNode.swift; sourceTree = ""; };
+ D0C9CA0C2302293400FAB518 /* PasscodeEntryKeyboardNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasscodeEntryKeyboardNode.swift; sourceTree = ""; };
+ D0C9CA0D2302293400FAB518 /* PasscodeSetupController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasscodeSetupController.swift; sourceTree = ""; };
+ D0C9CA1B2302298E00FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D0C9CA1D2302299200FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D0C9CA1F2302299500FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CA212302299A00FAB518 /* ImageBlur.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ImageBlur.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CA23230229A200FAB518 /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CA25230229AA00FAB518 /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CA27230229AF00FAB518 /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CA29230229BA00FAB518 /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CA2B230229C200FAB518 /* TelegramUIPreferences.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramUIPreferences.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CA2D230229C900FAB518 /* AccountContext.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AccountContext.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CA2F230229D100FAB518 /* LocalAuth.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LocalAuth.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CA31230229DE00FAB518 /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CA33230229F100FAB518 /* LegacyComponents.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LegacyComponents.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CA3523022A7400FAB518 /* TelegramStringFormatting.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramStringFormatting.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CA3923022AA300FAB518 /* FrameworkBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FrameworkBundle.swift; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D0C9C9F2230228D400FAB518 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9CA3623022A7400FAB518 /* TelegramStringFormatting.framework in Frameworks */,
+ D0C9CA34230229F100FAB518 /* LegacyComponents.framework in Frameworks */,
+ D0C9CA32230229DE00FAB518 /* TelegramCore.framework in Frameworks */,
+ D0C9CA30230229D100FAB518 /* LocalAuth.framework in Frameworks */,
+ D0C9CA2E230229C900FAB518 /* AccountContext.framework in Frameworks */,
+ D0C9CA2C230229C200FAB518 /* TelegramUIPreferences.framework in Frameworks */,
+ D0C9CA2A230229BA00FAB518 /* TelegramPresentationData.framework in Frameworks */,
+ D0C9CA28230229AF00FAB518 /* Postbox.framework in Frameworks */,
+ D0C9CA26230229AA00FAB518 /* SwiftSignalKit.framework in Frameworks */,
+ D0C9CA24230229A200FAB518 /* AsyncDisplayKit.framework in Frameworks */,
+ D0C9CA222302299A00FAB518 /* ImageBlur.framework in Frameworks */,
+ D0C9CA202302299500FAB518 /* Display.framework in Frameworks */,
+ D0C9CA1E2302299200FAB518 /* UIKit.framework in Frameworks */,
+ D0C9CA1C2302298E00FAB518 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D0C9C9EB230228D400FAB518 = {
+ isa = PBXGroup;
+ children = (
+ D0C9C9F9230228D400FAB518 /* Info.plist */,
+ D0C9C9F7230228D400FAB518 /* Sources */,
+ D0C9C9F6230228D400FAB518 /* Products */,
+ D0C9CA1A2302298D00FAB518 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D0C9C9F6230228D400FAB518 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9C9F5230228D400FAB518 /* PasscodeUI.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D0C9C9F7230228D400FAB518 /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CA052302293300FAB518 /* PasscodeBackground.swift */,
+ D0C9CA062302293300FAB518 /* PasscodeEntryController.swift */,
+ D0C9CA042302293200FAB518 /* PasscodeEntryControllerNode.swift */,
+ D0C9CA0A2302293400FAB518 /* PasscodeEntryInputFieldNode.swift */,
+ D0C9CA0C2302293400FAB518 /* PasscodeEntryKeyboardNode.swift */,
+ D0C9CA0B2302293400FAB518 /* PasscodeEntryLabelNode.swift */,
+ D0C9CA082302293300FAB518 /* PasscodeLayout.swift */,
+ D0C9CA092302293300FAB518 /* PasscodeLockIconNode.swift */,
+ D0C9CA0D2302293400FAB518 /* PasscodeSetupController.swift */,
+ D0C9CA072302293300FAB518 /* PasscodeSetupControllerNode.swift */,
+ D0C9CA3923022AA300FAB518 /* FrameworkBundle.swift */,
+ D0C9C9F8230228D400FAB518 /* PasscodeUI.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D0C9CA1A2302298D00FAB518 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CA3523022A7400FAB518 /* TelegramStringFormatting.framework */,
+ D0C9CA33230229F100FAB518 /* LegacyComponents.framework */,
+ D0C9CA31230229DE00FAB518 /* TelegramCore.framework */,
+ D0C9CA2F230229D100FAB518 /* LocalAuth.framework */,
+ D0C9CA2D230229C900FAB518 /* AccountContext.framework */,
+ D0C9CA2B230229C200FAB518 /* TelegramUIPreferences.framework */,
+ D0C9CA29230229BA00FAB518 /* TelegramPresentationData.framework */,
+ D0C9CA27230229AF00FAB518 /* Postbox.framework */,
+ D0C9CA25230229AA00FAB518 /* SwiftSignalKit.framework */,
+ D0C9CA23230229A200FAB518 /* AsyncDisplayKit.framework */,
+ D0C9CA212302299A00FAB518 /* ImageBlur.framework */,
+ D0C9CA1F2302299500FAB518 /* Display.framework */,
+ D0C9CA1D2302299200FAB518 /* UIKit.framework */,
+ D0C9CA1B2302298E00FAB518 /* Foundation.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D0C9C9F0230228D400FAB518 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9C9FA230228D400FAB518 /* PasscodeUI.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D0C9C9F4230228D400FAB518 /* PasscodeUI */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D0C9C9FD230228D400FAB518 /* Build configuration list for PBXNativeTarget "PasscodeUI" */;
+ buildPhases = (
+ D0C9C9F0230228D400FAB518 /* Headers */,
+ D0C9C9F1230228D400FAB518 /* Sources */,
+ D0C9C9F2230228D400FAB518 /* Frameworks */,
+ D0C9C9F3230228D400FAB518 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = PasscodeUI;
+ productName = PasscodeUI;
+ productReference = D0C9C9F5230228D400FAB518 /* PasscodeUI.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D0C9C9EC230228D400FAB518 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D0C9C9F4230228D400FAB518 = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D0C9C9EF230228D400FAB518 /* Build configuration list for PBXProject "PasscodeUI_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D0C9C9EB230228D400FAB518;
+ productRefGroup = D0C9C9F6230228D400FAB518 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D0C9C9F4230228D400FAB518 /* PasscodeUI */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D0C9C9F3230228D400FAB518 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D0C9C9F1230228D400FAB518 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9CA0E2302293400FAB518 /* PasscodeEntryControllerNode.swift in Sources */,
+ D0C9CA152302293400FAB518 /* PasscodeEntryLabelNode.swift in Sources */,
+ D0C9CA162302293400FAB518 /* PasscodeEntryKeyboardNode.swift in Sources */,
+ D0C9CA172302293400FAB518 /* PasscodeSetupController.swift in Sources */,
+ D0C9CA0F2302293400FAB518 /* PasscodeBackground.swift in Sources */,
+ D0C9CA142302293400FAB518 /* PasscodeEntryInputFieldNode.swift in Sources */,
+ D0C9CA122302293400FAB518 /* PasscodeLayout.swift in Sources */,
+ D0C9CA132302293400FAB518 /* PasscodeLockIconNode.swift in Sources */,
+ D0C9CA3A23022AA300FAB518 /* FrameworkBundle.swift in Sources */,
+ D0C9CA102302293400FAB518 /* PasscodeEntryController.swift in Sources */,
+ D0C9CA112302293400FAB518 /* PasscodeSetupControllerNode.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D0C9C9FB230228D400FAB518 /* DebugAppStoreLLC */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = DebugAppStoreLLC;
+ };
+ D0C9C9FC230228D400FAB518 /* ReleaseAppStoreLLC */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ VALIDATE_PRODUCT = YES;
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9C9FE230228D400FAB518 /* DebugAppStoreLLC */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "";
+ CODE_SIGN_STYLE = Manual;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = "";
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MACH_O_TYPE = staticlib;
+ PRODUCT_BUNDLE_IDENTIFIER = org.telegram.PasscodeUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugAppStoreLLC;
+ };
+ D0C9C9FF230228D400FAB518 /* ReleaseAppStoreLLC */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "";
+ CODE_SIGN_STYLE = Manual;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = "";
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MACH_O_TYPE = staticlib;
+ PRODUCT_BUNDLE_IDENTIFIER = org.telegram.PasscodeUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9CA00230228FB00FAB518 /* DebugHockeyapp */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = DebugHockeyapp;
+ };
+ D0C9CA01230228FB00FAB518 /* DebugHockeyapp */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "";
+ CODE_SIGN_STYLE = Manual;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = "";
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MACH_O_TYPE = staticlib;
+ PRODUCT_BUNDLE_IDENTIFIER = org.telegram.PasscodeUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugHockeyapp;
+ };
+ D0C9CA022302290600FAB518 /* ReleaseHockeyappInternal */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ VALIDATE_PRODUCT = YES;
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = ReleaseHockeyappInternal;
+ };
+ D0C9CA032302290600FAB518 /* ReleaseHockeyappInternal */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "";
+ CODE_SIGN_STYLE = Manual;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = "";
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MACH_O_TYPE = staticlib;
+ PRODUCT_BUNDLE_IDENTIFIER = org.telegram.PasscodeUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseHockeyappInternal;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ D0C9C9EF230228D400FAB518 /* Build configuration list for PBXProject "PasscodeUI_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9C9FB230228D400FAB518 /* DebugAppStoreLLC */,
+ D0C9CA00230228FB00FAB518 /* DebugHockeyapp */,
+ D0C9C9FC230228D400FAB518 /* ReleaseAppStoreLLC */,
+ D0C9CA022302290600FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D0C9C9FD230228D400FAB518 /* Build configuration list for PBXNativeTarget "PasscodeUI" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9C9FE230228D400FAB518 /* DebugAppStoreLLC */,
+ D0C9CA01230228FB00FAB518 /* DebugHockeyapp */,
+ D0C9C9FF230228D400FAB518 /* ReleaseAppStoreLLC */,
+ D0C9CA032302290600FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D0C9C9EC230228D400FAB518 /* Project object */;
+}
diff --git a/submodules/PasscodeUI/Sources/FrameworkBundle.swift b/submodules/PasscodeUI/Sources/FrameworkBundle.swift
new file mode 100644
index 0000000000..8ca13d7d92
--- /dev/null
+++ b/submodules/PasscodeUI/Sources/FrameworkBundle.swift
@@ -0,0 +1,13 @@
+import Foundation
+import UIKit
+
+private class FrameworkBundleClass: NSObject {
+}
+
+let frameworkBundle: Bundle = Bundle(for: FrameworkBundleClass.self)
+
+extension UIImage {
+ convenience init?(bundleImageName: String) {
+ self.init(named: bundleImageName, in: frameworkBundle, compatibleWith: nil)
+ }
+}
diff --git a/submodules/TelegramUI/TelegramUI/PasscodeBackground.swift b/submodules/PasscodeUI/Sources/PasscodeBackground.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/PasscodeBackground.swift
rename to submodules/PasscodeUI/Sources/PasscodeBackground.swift
index 333b85273f..9203e6c1cb 100644
--- a/submodules/TelegramUI/TelegramUI/PasscodeBackground.swift
+++ b/submodules/PasscodeUI/Sources/PasscodeBackground.swift
@@ -2,7 +2,6 @@ import Foundation
import UIKit
import Display
import ImageBlur
-import TelegramUIPrivateModule
protocol PasscodeBackground {
var size: CGSize { get }
diff --git a/submodules/TelegramUI/TelegramUI/PasscodeEntryController.swift b/submodules/PasscodeUI/Sources/PasscodeEntryController.swift
similarity index 98%
rename from submodules/TelegramUI/TelegramUI/PasscodeEntryController.swift
rename to submodules/PasscodeUI/Sources/PasscodeEntryController.swift
index ce710c6c21..c6c4a57f62 100644
--- a/submodules/TelegramUI/TelegramUI/PasscodeEntryController.swift
+++ b/submodules/PasscodeUI/Sources/PasscodeEntryController.swift
@@ -8,8 +8,9 @@ import TelegramPresentationData
import TelegramUIPreferences
import AccountContext
import LocalAuth
+import TelegramStringFormatting
-final public class PasscodeEntryControllerPresentationArguments {
+public final class PasscodeEntryControllerPresentationArguments {
let animated: Bool
let fadeIn: Bool
let lockIconInitialFrame: () -> CGRect
@@ -28,7 +29,7 @@ public enum PasscodeEntryControllerBiometricsMode {
case enabled(Data?)
}
-final public class PasscodeEntryController: ViewController {
+public final class PasscodeEntryController: ViewController {
private var controllerNode: PasscodeEntryControllerNode {
return self.displayNode as! PasscodeEntryControllerNode
}
@@ -88,7 +89,7 @@ final public class PasscodeEntryController: ViewController {
self.inBackgroundDisposable?.dispose()
}
- required init(coder aDecoder: NSCoder) {
+ required public init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
diff --git a/submodules/TelegramUI/TelegramUI/PasscodeEntryControllerNode.swift b/submodules/PasscodeUI/Sources/PasscodeEntryControllerNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/PasscodeEntryControllerNode.swift
rename to submodules/PasscodeUI/Sources/PasscodeEntryControllerNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/PasscodeEntryInputFieldNode.swift b/submodules/PasscodeUI/Sources/PasscodeEntryInputFieldNode.swift
similarity index 98%
rename from submodules/TelegramUI/TelegramUI/PasscodeEntryInputFieldNode.swift
rename to submodules/PasscodeUI/Sources/PasscodeEntryInputFieldNode.swift
index a40c7ef3db..60f4279ba7 100644
--- a/submodules/TelegramUI/TelegramUI/PasscodeEntryInputFieldNode.swift
+++ b/submodules/PasscodeUI/Sources/PasscodeEntryInputFieldNode.swift
@@ -51,12 +51,12 @@ private let validDigitsSet: CharacterSet = {
return CharacterSet(charactersIn: "0".unicodeScalars.first! ... "9".unicodeScalars.first!)
}()
-enum PasscodeEntryFieldType {
+public enum PasscodeEntryFieldType {
case digits6
case digits4
case alphanumeric
- var maxLength: Int? {
+ public var maxLength: Int? {
switch self {
case .digits6:
return 6
@@ -67,7 +67,7 @@ enum PasscodeEntryFieldType {
}
}
- var allowedCharacters: CharacterSet? {
+ public var allowedCharacters: CharacterSet? {
switch self {
case .digits6, .digits4:
return validDigitsSet
@@ -76,7 +76,7 @@ enum PasscodeEntryFieldType {
}
}
- var keyboardType: UIKeyboardType {
+ public var keyboardType: UIKeyboardType {
switch self {
case .digits6, .digits4:
if #available(iOS 10.0, *) {
diff --git a/submodules/TelegramUI/TelegramUI/PasscodeEntryKeyboardNode.swift b/submodules/PasscodeUI/Sources/PasscodeEntryKeyboardNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/PasscodeEntryKeyboardNode.swift
rename to submodules/PasscodeUI/Sources/PasscodeEntryKeyboardNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/PasscodeEntryLabelNode.swift b/submodules/PasscodeUI/Sources/PasscodeEntryLabelNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/PasscodeEntryLabelNode.swift
rename to submodules/PasscodeUI/Sources/PasscodeEntryLabelNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/PasscodeLayout.swift b/submodules/PasscodeUI/Sources/PasscodeLayout.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/PasscodeLayout.swift
rename to submodules/PasscodeUI/Sources/PasscodeLayout.swift
diff --git a/submodules/TelegramUI/TelegramUI/PasscodeLockIconNode.swift b/submodules/PasscodeUI/Sources/PasscodeLockIconNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/PasscodeLockIconNode.swift
rename to submodules/PasscodeUI/Sources/PasscodeLockIconNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/PasscodeSetupController.swift b/submodules/PasscodeUI/Sources/PasscodeSetupController.swift
similarity index 90%
rename from submodules/TelegramUI/TelegramUI/PasscodeSetupController.swift
rename to submodules/PasscodeUI/Sources/PasscodeSetupController.swift
index 7db159bdf0..a48258ee4f 100644
--- a/submodules/TelegramUI/TelegramUI/PasscodeSetupController.swift
+++ b/submodules/PasscodeUI/Sources/PasscodeSetupController.swift
@@ -8,12 +8,12 @@ import Postbox
import TelegramPresentationData
import AccountContext
-enum PasscodeSetupControllerMode {
+public enum PasscodeSetupControllerMode {
case setup(change: Bool, PasscodeEntryFieldType)
case entry(PostboxAccessChallengeData)
}
-final class PasscodeSetupController: ViewController {
+public final class PasscodeSetupController: ViewController {
private var controllerNode: PasscodeSetupControllerNode {
return self.displayNode as! PasscodeSetupControllerNode
}
@@ -21,8 +21,8 @@ final class PasscodeSetupController: ViewController {
private let context: AccountContext
private var mode: PasscodeSetupControllerMode
- var complete: ((String, Bool) -> Void)?
- var check: ((String) -> Bool)?
+ public var complete: ((String, Bool) -> Void)?
+ public var check: ((String) -> Bool)?
private let hapticFeedback = HapticFeedback()
@@ -30,7 +30,7 @@ final class PasscodeSetupController: ViewController {
private var nextAction: UIBarButtonItem?
- init(context: AccountContext, mode: PasscodeSetupControllerMode) {
+ public init(context: AccountContext, mode: PasscodeSetupControllerMode) {
self.context = context
self.mode = mode
self.presentationData = context.sharedContext.currentPresentationData.with { $0 }
@@ -45,7 +45,7 @@ final class PasscodeSetupController: ViewController {
self.title = self.presentationData.strings.PasscodeSettings_Title
}
- required init(coder aDecoder: NSCoder) {
+ required public init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
@@ -126,26 +126,26 @@ final class PasscodeSetupController: ViewController {
}
}
- override func viewWillAppear(_ animated: Bool) {
+ override public func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.controllerNode.activateInput()
}
- override func viewDidAppear(_ animated: Bool) {
+ override public func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.view.disablesInteractiveTransitionGestureRecognizer = true
self.controllerNode.activateInput()
}
- override func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
+ override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
super.containerLayoutUpdated(layout, transition: transition)
self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationHeight, transition: transition)
}
- @objc func nextPressed() {
+ @objc private func nextPressed() {
self.controllerNode.activateNext()
}
}
diff --git a/submodules/TelegramUI/TelegramUI/PasscodeSetupControllerNode.swift b/submodules/PasscodeUI/Sources/PasscodeSetupControllerNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/PasscodeSetupControllerNode.swift
rename to submodules/PasscodeUI/Sources/PasscodeSetupControllerNode.swift
diff --git a/submodules/PasscodeUI/Sources/PasscodeUI.h b/submodules/PasscodeUI/Sources/PasscodeUI.h
new file mode 100644
index 0000000000..aff8b6a225
--- /dev/null
+++ b/submodules/PasscodeUI/Sources/PasscodeUI.h
@@ -0,0 +1,19 @@
+//
+// PasscodeUI.h
+// PasscodeUI
+//
+// Created by Peter on 8/13/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for PasscodeUI.
+FOUNDATION_EXPORT double PasscodeUIVersionNumber;
+
+//! Project version string for PasscodeUI.
+FOUNDATION_EXPORT const unsigned char PasscodeUIVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/TelegramUI/TelegramUI/NumberFormat.swift b/submodules/TelegramStringFormatting/Sources/NumberFormat.swift
similarity index 81%
rename from submodules/TelegramUI/TelegramUI/NumberFormat.swift
rename to submodules/TelegramStringFormatting/Sources/NumberFormat.swift
index ab36c7c313..987c42651a 100644
--- a/submodules/TelegramUI/TelegramUI/NumberFormat.swift
+++ b/submodules/TelegramStringFormatting/Sources/NumberFormat.swift
@@ -1,6 +1,6 @@
import Foundation
-func convertToArabicNumeralString(_ string: String) -> String {
+public func convertToArabicNumeralString(_ string: String) -> String {
var string = string
let arabicNumbers = ["٠": "0", "١": "1", "٢": "2", "٣": "3", "٤": "4", "٥": "5", "٦": "6", "٧": "7", "٨": "8", "٩": "9"]
for (arabic, generic) in arabicNumbers {
diff --git a/submodules/TelegramStringFormatting/TelegramStringFormatting_Xcode.xcodeproj/project.pbxproj b/submodules/TelegramStringFormatting/TelegramStringFormatting_Xcode.xcodeproj/project.pbxproj
index b8afb93043..9b75caa1b8 100644
--- a/submodules/TelegramStringFormatting/TelegramStringFormatting_Xcode.xcodeproj/project.pbxproj
+++ b/submodules/TelegramStringFormatting/TelegramStringFormatting_Xcode.xcodeproj/project.pbxproj
@@ -24,6 +24,7 @@
D0C9C35E2300AEF100FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C35D2300AEF100FAB518 /* Display.framework */; };
D0C9C3622300AFCC00FAB518 /* CurrencyFormat.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C3612300AFCB00FAB518 /* CurrencyFormat.swift */; };
D0C9C3642300AFE800FAB518 /* FrameworkBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C3632300AFE800FAB518 /* FrameworkBundle.swift */; };
+ D0C9CA3823022A8300FAB518 /* NumberFormat.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA3723022A8300FAB518 /* NumberFormat.swift */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
@@ -46,6 +47,7 @@
D0C9C35D2300AEF100FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0C9C3612300AFCB00FAB518 /* CurrencyFormat.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CurrencyFormat.swift; sourceTree = ""; };
D0C9C3632300AFE800FAB518 /* FrameworkBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FrameworkBundle.swift; sourceTree = ""; };
+ D0C9CA3723022A8300FAB518 /* NumberFormat.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NumberFormat.swift; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -88,6 +90,7 @@
D0879AAF22F7021000C4D6B3 /* Sources */ = {
isa = PBXGroup;
children = (
+ D0C9CA3723022A8300FAB518 /* NumberFormat.swift */,
D0C9C3612300AFCB00FAB518 /* CurrencyFormat.swift */,
D0C9C3552300AD9900FAB518 /* MessageContentKind.swift */,
D0C9C3572300ADCF00FAB518 /* ServiceMessageStrings.swift */,
@@ -199,6 +202,7 @@
D0C9C3642300AFE800FAB518 /* FrameworkBundle.swift in Sources */,
D0C9C3622300AFCC00FAB518 /* CurrencyFormat.swift in Sources */,
D0C9C3562300AD9900FAB518 /* MessageContentKind.swift in Sources */,
+ D0C9CA3823022A8300FAB518 /* NumberFormat.swift in Sources */,
D0879ACA22F7063300C4D6B3 /* DateFormat.swift in Sources */,
D0879ABD22F705AE00C4D6B3 /* PresenceStrings.swift in Sources */,
D0C9C3542300AD7000FAB518 /* StringForDuration.swift in Sources */,
diff --git a/submodules/TelegramUI/TelegramUI/ApplicationContext.swift b/submodules/TelegramUI/TelegramUI/ApplicationContext.swift
index 7eb20a9383..621d517387 100644
--- a/submodules/TelegramUI/TelegramUI/ApplicationContext.swift
+++ b/submodules/TelegramUI/TelegramUI/ApplicationContext.swift
@@ -15,6 +15,7 @@ import TelegramPermissions
import TelegramNotices
import LegacyUI
import TelegramPermissionsUI
+import PasscodeUI
func isAccessLocked(data: PostboxAccessChallengeData, at timestamp: Int32) -> Bool {
if data.isLockable, let autolockDeadline = data.autolockDeadline, autolockDeadline <= timestamp {
diff --git a/submodules/TelegramUI/TelegramUI/ChatContextResultManagedMediaId.swift b/submodules/TelegramUI/TelegramUI/ChatContextResultManagedMediaId.swift
deleted file mode 100644
index 8d228e1d3b..0000000000
--- a/submodules/TelegramUI/TelegramUI/ChatContextResultManagedMediaId.swift
+++ /dev/null
@@ -1,23 +0,0 @@
-import Foundation
-import TelegramCore
-import Postbox
-
-struct ChatContextResultManagedMediaId: ManagedMediaId {
- let result: ChatContextResult
-
- init(result: ChatContextResult) {
- self.result = result
- }
-
- var hashValue: Int {
- return self.result.id.hashValue
- }
-
- func isEqual(to: ManagedMediaId) -> Bool {
- if let to = to as? ChatContextResultManagedMediaId {
- return self.result == to.result
- } else {
- return false
- }
- }
-}
diff --git a/submodules/TelegramUI/TelegramUI/ExtractVideoData.swift b/submodules/TelegramUI/TelegramUI/ExtractVideoData.swift
deleted file mode 100644
index 591fdb5a0a..0000000000
--- a/submodules/TelegramUI/TelegramUI/ExtractVideoData.swift
+++ /dev/null
@@ -1,7 +0,0 @@
-import Foundation
-import SwiftSignalKit
-import Postbox
-
-func extractVideoDimensions() {
-
-}
diff --git a/submodules/TelegramUI/TelegramUI/ManagedMediaId.swift b/submodules/TelegramUI/TelegramUI/ManagedMediaId.swift
deleted file mode 100644
index 0029c53f39..0000000000
--- a/submodules/TelegramUI/TelegramUI/ManagedMediaId.swift
+++ /dev/null
@@ -1,6 +0,0 @@
-import Foundation
-
-protocol ManagedMediaId {
- var hashValue: Int { get }
- func isEqual(to: ManagedMediaId) -> Bool
-}
diff --git a/submodules/TelegramUI/TelegramUI/PasscodeOptionsController.swift b/submodules/TelegramUI/TelegramUI/PasscodeOptionsController.swift
index e90081f234..efd05b9ce4 100644
--- a/submodules/TelegramUI/TelegramUI/PasscodeOptionsController.swift
+++ b/submodules/TelegramUI/TelegramUI/PasscodeOptionsController.swift
@@ -11,6 +11,8 @@ import TelegramUIPreferences
import ItemListUI
import AccountContext
import LocalAuth
+import PasscodeUI
+import TelegramStringFormatting
private final class PasscodeOptionsControllerArguments {
let turnPasscodeOff: () -> Void
diff --git a/submodules/TelegramUI/TelegramUI/PeerMessageManagedMediaId.swift b/submodules/TelegramUI/TelegramUI/PeerMessageManagedMediaId.swift
deleted file mode 100644
index 3bc5040bc4..0000000000
--- a/submodules/TelegramUI/TelegramUI/PeerMessageManagedMediaId.swift
+++ /dev/null
@@ -1,22 +0,0 @@
-import Foundation
-import Postbox
-
-struct PeerMessageManagedMediaId: ManagedMediaId {
- let messageId: MessageId
-
- init(messageId: MessageId) {
- self.messageId = messageId
- }
-
- var hashValue: Int {
- return self.messageId.hashValue
- }
-
- func isEqual(to: ManagedMediaId) -> Bool {
- if let to = to as? PeerMessageManagedMediaId {
- return self.messageId == to.messageId
- } else {
- return false
- }
- }
-}
diff --git a/submodules/TelegramUI/TelegramUI/RecentGifManagedMediaId.swift b/submodules/TelegramUI/TelegramUI/RecentGifManagedMediaId.swift
deleted file mode 100644
index 8474854ba6..0000000000
--- a/submodules/TelegramUI/TelegramUI/RecentGifManagedMediaId.swift
+++ /dev/null
@@ -1,23 +0,0 @@
-import Foundation
-import TelegramCore
-import Postbox
-
-struct RecentGifManagedMediaId: ManagedMediaId {
- let id: MediaId
-
- init(id: MediaId) {
- self.id = id
- }
-
- var hashValue: Int {
- return self.id.hashValue
- }
-
- func isEqual(to: ManagedMediaId) -> Bool {
- if let to = to as? RecentGifManagedMediaId {
- return self.id == to.id
- } else {
- return false
- }
- }
-}
diff --git a/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj b/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj
index 337f6cfadd..1cb9d86f6f 100644
--- a/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj
+++ b/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj
@@ -31,7 +31,6 @@
09310D33213ED5FC0020033A /* anim_group.json in Resources */ = {isa = PBXBuildFile; fileRef = 09310D1B213BC5DE0020033A /* anim_group.json */; };
0940932422E73DFB003846A3 /* ChatSendMessageActionSheetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0940932322E73DFB003846A3 /* ChatSendMessageActionSheetController.swift */; };
0940932622E73E12003846A3 /* ChatSendMessageActionSheetControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0940932522E73E12003846A3 /* ChatSendMessageActionSheetControllerNode.swift */; };
- 094735032275B62B00EA2312 /* PasscodeLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 094735022275B62B00EA2312 /* PasscodeLayout.swift */; };
0947350E2275D72100EA2312 /* anim_hide.json in Resources */ = {isa = PBXBuildFile; fileRef = 094735042275D71F00EA2312 /* anim_hide.json */; };
0947350F2275D72100EA2312 /* anim_unread.json in Resources */ = {isa = PBXBuildFile; fileRef = 094735052275D72000EA2312 /* anim_unread.json */; };
094735102275D72100EA2312 /* anim_read.json in Resources */ = {isa = PBXBuildFile; fileRef = 094735062275D72000EA2312 /* anim_read.json */; };
@@ -104,7 +103,6 @@
09DD88EF21BDDE2B000766BC /* Geocoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD88EE21BDDE2B000766BC /* Geocoding.swift */; };
09DD88F321BF907C000766BC /* WebSearchRecentQueryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD88F221BF907C000766BC /* WebSearchRecentQueryItem.swift */; };
09DD88F521BF9730000766BC /* WebSearchRecentQueries.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD88F421BF9730000766BC /* WebSearchRecentQueries.swift */; };
- 09DE2F252269B7E80045E975 /* PasscodeSetupControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DE2F242269B7E80045E975 /* PasscodeSetupControllerNode.swift */; };
09DE2F272269D5730045E975 /* PrivacyIntroController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DE2F262269D5730045E975 /* PrivacyIntroController.swift */; };
09DE2F292269D5E30045E975 /* PrivacyIntroControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DE2F282269D5E30045E975 /* PrivacyIntroControllerNode.swift */; };
09E2D9EF226F1AFA00EA0AA4 /* Emoji.mapping in Resources */ = {isa = PBXBuildFile; fileRef = 09E2D9ED226F1AF300EA0AA4 /* Emoji.mapping */; };
@@ -114,7 +112,6 @@
09E4A805223D4A5A0038140F /* OpenSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E4A804223D4A5A0038140F /* OpenSettings.swift */; };
09E4A807223D4B860038140F /* AccountUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E4A806223D4B860038140F /* AccountUtils.swift */; };
09EC0DED22CB583C00E7185B /* TextLinkHandling.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EC0DEC22CB583C00E7185B /* TextLinkHandling.swift */; };
- 09EC5CDC22CBD33D00292E42 /* NumberFormat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EC5CDB22CBD33D00292E42 /* NumberFormat.swift */; };
09EDAD26220D30980012A50B /* AutodownloadConnectionTypeController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EDAD25220D30980012A50B /* AutodownloadConnectionTypeController.swift */; };
09EDAD2A220DA6A40012A50B /* VolumeButtons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EDAD29220DA6A40012A50B /* VolumeButtons.swift */; };
09EDAD2C2211552F0012A50B /* AutodownloadMediaCategoryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EDAD2B2211552F0012A50B /* AutodownloadMediaCategoryController.swift */; };
@@ -123,14 +120,6 @@
09F21563225C776100AEDF6D /* ChatListBadgeNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F21562225C776000AEDF6D /* ChatListBadgeNode.swift */; };
09F21565225C83E100AEDF6D /* ChatListStatusNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F21564225C83E100AEDF6D /* ChatListStatusNode.swift */; };
09F2158D225CF5BC00AEDF6D /* Pasteboard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F2158C225CF5BC00AEDF6D /* Pasteboard.swift */; };
- 09F2159A2263E62900AEDF6D /* PasscodeEntryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F215992263E62900AEDF6D /* PasscodeEntryController.swift */; };
- 09F2159C2263E63200AEDF6D /* PasscodeEntryControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F2159B2263E63200AEDF6D /* PasscodeEntryControllerNode.swift */; };
- 09F215A022649BCB00AEDF6D /* PasscodeEntryInputFieldNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F2159F22649BCB00AEDF6D /* PasscodeEntryInputFieldNode.swift */; };
- 09F215A422649C2200AEDF6D /* PasscodeEntryLabelNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F215A322649C2200AEDF6D /* PasscodeEntryLabelNode.swift */; };
- 09F215A622649C3000AEDF6D /* PasscodeLockIconNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F215A522649C3000AEDF6D /* PasscodeLockIconNode.swift */; };
- 09F215A822649C7900AEDF6D /* PasscodeEntryKeyboardNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F215A722649C7900AEDF6D /* PasscodeEntryKeyboardNode.swift */; };
- 09F215AB2264ABA600AEDF6D /* PasscodeBackground.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F215AA2264ABA600AEDF6D /* PasscodeBackground.swift */; };
- 09F215AD2264DC4500AEDF6D /* PasscodeSetupController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F215AC2264DC4500AEDF6D /* PasscodeSetupController.swift */; };
09F664C021EAAFAF00AB7E26 /* ThemeColorsGridController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F664BF21EAAFAF00AB7E26 /* ThemeColorsGridController.swift */; };
09F664C221EAAFCB00AB7E26 /* ThemeColorsGridControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F664C121EAAFCB00AB7E26 /* ThemeColorsGridControllerNode.swift */; };
09F664C421EAB98300AB7E26 /* ThemeColorsGridControllerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F664C321EAB98300AB7E26 /* ThemeColorsGridControllerItem.swift */; };
@@ -520,6 +509,7 @@
D0C9C98F2302154500FAB518 /* TelegramPermissionsUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C98E2302154500FAB518 /* TelegramPermissionsUI.framework */; };
D0C9C9BB2302168100FAB518 /* PeersNearbyIconNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C9BA2302168100FAB518 /* PeersNearbyIconNode.framework */; };
D0C9C9DE2302267200FAB518 /* SolidRoundedButtonNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C9DD2302267200FAB518 /* SolidRoundedButtonNode.framework */; };
+ D0C9CA192302297C00FAB518 /* PasscodeUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA182302297C00FAB518 /* PasscodeUI.framework */; };
D0CAD90120AEECAC00ACD96E /* ChatEditInterfaceMessageState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CAD90020AEECAC00ACD96E /* ChatEditInterfaceMessageState.swift */; };
D0CB27CF20C17A4A001ACF93 /* TermsOfServiceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CB27CE20C17A4A001ACF93 /* TermsOfServiceController.swift */; };
D0CB27D220C17A7F001ACF93 /* TermsOfServiceControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CB27D120C17A7F001ACF93 /* TermsOfServiceControllerNode.swift */; };
@@ -609,10 +599,6 @@
D0EC6CD71EB9F58800EBF1C3 /* EmojiUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01D6BFB1E42AB3C006151C6 /* EmojiUtils.swift */; };
D0EC6CD91EB9F58800EBF1C3 /* ValidateAddressNameInteractive.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E305A41E5B2BFB00D7A3A2 /* ValidateAddressNameInteractive.swift */; };
D0EC6CDC1EB9F58800EBF1C3 /* TelegramAccountAuxiliaryMethods.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F3A8AA1E82D83E00B4C64C /* TelegramAccountAuxiliaryMethods.swift */; };
- D0EC6CF41EB9F58800EBF1C3 /* ManagedMediaId.swift in Sources */ = {isa = PBXBuildFile; fileRef = D099EA261DE765DB001AF5A8 /* ManagedMediaId.swift */; };
- D0EC6CF51EB9F58800EBF1C3 /* PeerMessageManagedMediaId.swift in Sources */ = {isa = PBXBuildFile; fileRef = D099EA2C1DE76782001AF5A8 /* PeerMessageManagedMediaId.swift */; };
- D0EC6CF61EB9F58800EBF1C3 /* ChatContextResultManagedMediaId.swift in Sources */ = {isa = PBXBuildFile; fileRef = D099EA2E1DE775BB001AF5A8 /* ChatContextResultManagedMediaId.swift */; };
- D0EC6CF71EB9F58800EBF1C3 /* RecentGifManagedMediaId.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F02CD81E97ED080065DEE2 /* RecentGifManagedMediaId.swift */; };
D0EC6CF91EB9F58800EBF1C3 /* MediaManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69CD61D6B87D30046BCD6 /* MediaManager.swift */; };
D0EC6CFB1EB9F58800EBF1C3 /* ManagedAudioRecorder.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0D03AE41DECAE8900220C46 /* ManagedAudioRecorder.swift */; };
D0EC6CFD1EB9F58800EBF1C3 /* AudioWaveform.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0D03B2B1DED9B8900220C46 /* AudioWaveform.swift */; };
@@ -882,7 +868,6 @@
D0F760DD222034980074F7E5 /* ChannelStatsControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F760DC222034980074F7E5 /* ChannelStatsControllerNode.swift */; };
D0F9720F1FFE4BD5002595C8 /* notification.caf in Resources */ = {isa = PBXBuildFile; fileRef = D0C50E431E93FCD200F62E39 /* notification.caf */; };
D0F972101FFE4BD5002595C8 /* MessageSent.caf in Resources */ = {isa = PBXBuildFile; fileRef = D073CE621DCBBE5D007511FD /* MessageSent.caf */; };
- D0FA08C020483F9600DD23FC /* ExtractVideoData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FA08BF20483F9600DD23FC /* ExtractVideoData.swift */; };
D0FA08C8204982DC00DD23FC /* ChatTextInputActionButtonsNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FA08C7204982DC00DD23FC /* ChatTextInputActionButtonsNode.swift */; };
D0FA08CA2049BEAC00DD23FC /* ChatEmptyNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FA08C92049BEAC00DD23FC /* ChatEmptyNode.swift */; };
D0FAB13E22EBC25300D8BED2 /* ChatMessageBubbleBackdrop.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FAB13D22EBC25300D8BED2 /* ChatMessageBubbleBackdrop.swift */; };
@@ -916,7 +901,6 @@
09310D1B213BC5DE0020033A /* anim_group.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_group.json; sourceTree = ""; };
0940932322E73DFB003846A3 /* ChatSendMessageActionSheetController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatSendMessageActionSheetController.swift; sourceTree = ""; };
0940932522E73E12003846A3 /* ChatSendMessageActionSheetControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatSendMessageActionSheetControllerNode.swift; sourceTree = ""; };
- 094735022275B62B00EA2312 /* PasscodeLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeLayout.swift; sourceTree = ""; };
094735042275D71F00EA2312 /* anim_hide.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_hide.json; sourceTree = ""; };
094735052275D72000EA2312 /* anim_unread.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_unread.json; sourceTree = ""; };
094735062275D72000EA2312 /* anim_read.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_read.json; sourceTree = ""; };
@@ -989,7 +973,6 @@
09DD88EE21BDDE2B000766BC /* Geocoding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Geocoding.swift; sourceTree = ""; };
09DD88F221BF907C000766BC /* WebSearchRecentQueryItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSearchRecentQueryItem.swift; sourceTree = ""; };
09DD88F421BF9730000766BC /* WebSearchRecentQueries.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSearchRecentQueries.swift; sourceTree = ""; };
- 09DE2F242269B7E80045E975 /* PasscodeSetupControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeSetupControllerNode.swift; sourceTree = ""; };
09DE2F262269D5730045E975 /* PrivacyIntroController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivacyIntroController.swift; sourceTree = ""; };
09DE2F282269D5E30045E975 /* PrivacyIntroControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivacyIntroControllerNode.swift; sourceTree = ""; };
09E2D9ED226F1AF300EA0AA4 /* Emoji.mapping */ = {isa = PBXFileReference; lastKnownFileType = file; name = Emoji.mapping; path = TelegramUI/Resources/Emoji.mapping; sourceTree = ""; };
@@ -999,7 +982,6 @@
09E4A804223D4A5A0038140F /* OpenSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenSettings.swift; sourceTree = ""; };
09E4A806223D4B860038140F /* AccountUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountUtils.swift; sourceTree = ""; };
09EC0DEC22CB583C00E7185B /* TextLinkHandling.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextLinkHandling.swift; sourceTree = ""; };
- 09EC5CDB22CBD33D00292E42 /* NumberFormat.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NumberFormat.swift; sourceTree = ""; };
09EDAD25220D30980012A50B /* AutodownloadConnectionTypeController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutodownloadConnectionTypeController.swift; sourceTree = ""; };
09EDAD29220DA6A40012A50B /* VolumeButtons.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VolumeButtons.swift; sourceTree = ""; };
09EDAD2B2211552F0012A50B /* AutodownloadMediaCategoryController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutodownloadMediaCategoryController.swift; sourceTree = ""; };
@@ -1008,14 +990,6 @@
09F21562225C776000AEDF6D /* ChatListBadgeNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListBadgeNode.swift; sourceTree = ""; };
09F21564225C83E100AEDF6D /* ChatListStatusNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListStatusNode.swift; sourceTree = ""; };
09F2158C225CF5BC00AEDF6D /* Pasteboard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Pasteboard.swift; sourceTree = ""; };
- 09F215992263E62900AEDF6D /* PasscodeEntryController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeEntryController.swift; sourceTree = ""; };
- 09F2159B2263E63200AEDF6D /* PasscodeEntryControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeEntryControllerNode.swift; sourceTree = ""; };
- 09F2159F22649BCB00AEDF6D /* PasscodeEntryInputFieldNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeEntryInputFieldNode.swift; sourceTree = ""; };
- 09F215A322649C2200AEDF6D /* PasscodeEntryLabelNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeEntryLabelNode.swift; sourceTree = ""; };
- 09F215A522649C3000AEDF6D /* PasscodeLockIconNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeLockIconNode.swift; sourceTree = ""; };
- 09F215A722649C7900AEDF6D /* PasscodeEntryKeyboardNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeEntryKeyboardNode.swift; sourceTree = ""; };
- 09F215AA2264ABA600AEDF6D /* PasscodeBackground.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeBackground.swift; sourceTree = ""; };
- 09F215AC2264DC4500AEDF6D /* PasscodeSetupController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeSetupController.swift; sourceTree = ""; };
09F664BF21EAAFAF00AB7E26 /* ThemeColorsGridController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeColorsGridController.swift; sourceTree = ""; };
09F664C121EAAFCB00AB7E26 /* ThemeColorsGridControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeColorsGridControllerNode.swift; sourceTree = ""; };
09F664C321EAB98300AB7E26 /* ThemeColorsGridControllerItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeColorsGridControllerItem.swift; sourceTree = ""; };
@@ -1386,9 +1360,6 @@
D099E21F229405BB00561B75 /* Weak.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Weak.swift; sourceTree = ""; };
D099EA1E1DE7450B001AF5A8 /* HorizontalListContextResultsChatInputContextPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HorizontalListContextResultsChatInputContextPanelNode.swift; sourceTree = ""; };
D099EA201DE7451D001AF5A8 /* HorizontalListContextResultsChatInputPanelItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HorizontalListContextResultsChatInputPanelItem.swift; sourceTree = ""; };
- D099EA261DE765DB001AF5A8 /* ManagedMediaId.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ManagedMediaId.swift; sourceTree = ""; };
- D099EA2C1DE76782001AF5A8 /* PeerMessageManagedMediaId.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerMessageManagedMediaId.swift; sourceTree = ""; };
- D099EA2E1DE775BB001AF5A8 /* ChatContextResultManagedMediaId.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatContextResultManagedMediaId.swift; sourceTree = ""; };
D09D88721F86D56B00BEB4C9 /* AuthorizationLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorizationLayout.swift; sourceTree = ""; };
D09E637B1F0E7C28003444CD /* SharedMediaPlayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SharedMediaPlayer.swift; sourceTree = ""; };
D09E637E1F0E8C9F003444CD /* PeerMessagesMediaPlaylist.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerMessagesMediaPlaylist.swift; sourceTree = ""; };
@@ -1581,6 +1552,7 @@
D0C9C98E2302154500FAB518 /* TelegramPermissionsUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPermissionsUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0C9C9BA2302168100FAB518 /* PeersNearbyIconNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PeersNearbyIconNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0C9C9DD2302267200FAB518 /* SolidRoundedButtonNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SolidRoundedButtonNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CA182302297C00FAB518 /* PasscodeUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PasscodeUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0CAD90020AEECAC00ACD96E /* ChatEditInterfaceMessageState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatEditInterfaceMessageState.swift; sourceTree = ""; };
D0CB27CE20C17A4A001ACF93 /* TermsOfServiceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TermsOfServiceController.swift; sourceTree = ""; };
D0CB27D120C17A7F001ACF93 /* TermsOfServiceControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TermsOfServiceControllerNode.swift; sourceTree = ""; };
@@ -1737,7 +1709,6 @@
D0EF40DE1E73100D000DFCD4 /* ChatHistoryNavigationStack.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatHistoryNavigationStack.swift; sourceTree = ""; };
D0F02CCB1E96EF350065DEE2 /* ChatMediaInputStickerPane.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMediaInputStickerPane.swift; sourceTree = ""; };
D0F02CCD1E96FACE0065DEE2 /* ChatMediaInputGifPane.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMediaInputGifPane.swift; sourceTree = ""; };
- D0F02CD81E97ED080065DEE2 /* RecentGifManagedMediaId.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RecentGifManagedMediaId.swift; sourceTree = ""; };
D0F19F6120E5694D00EEC860 /* GroupStickerPackCurrentItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupStickerPackCurrentItem.swift; sourceTree = ""; };
D0F19F6320E5A15B00EEC860 /* ChatMediaInputPeerSpecificItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMediaInputPeerSpecificItem.swift; sourceTree = ""; };
D0F3A8AA1E82D83E00B4C64C /* TelegramAccountAuxiliaryMethods.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TelegramAccountAuxiliaryMethods.swift; sourceTree = ""; };
@@ -1797,7 +1768,6 @@
D0F760DA222034910074F7E5 /* ChannelStatsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChannelStatsController.swift; sourceTree = ""; };
D0F760DC222034980074F7E5 /* ChannelStatsControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChannelStatsControllerNode.swift; sourceTree = ""; };
D0F7AB381DCFF87B009AD9A1 /* ChatMessageDateHeader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageDateHeader.swift; sourceTree = ""; };
- D0FA08BF20483F9600DD23FC /* ExtractVideoData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtractVideoData.swift; sourceTree = ""; };
D0FA08C7204982DC00DD23FC /* ChatTextInputActionButtonsNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatTextInputActionButtonsNode.swift; sourceTree = ""; };
D0FA08C92049BEAC00DD23FC /* ChatEmptyNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatEmptyNode.swift; sourceTree = ""; };
D0FA0ABE1E76E17F005BB9B7 /* TwoStepVerificationPasswordEntryController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TwoStepVerificationPasswordEntryController.swift; sourceTree = ""; };
@@ -1820,6 +1790,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ D0C9CA192302297C00FAB518 /* PasscodeUI.framework in Frameworks */,
D0C9C9DE2302267200FAB518 /* SolidRoundedButtonNode.framework in Frameworks */,
D0C9C9BB2302168100FAB518 /* PeersNearbyIconNode.framework in Frameworks */,
D0C9C98F2302154500FAB518 /* TelegramPermissionsUI.framework in Frameworks */,
@@ -2129,30 +2100,6 @@
name = Data;
sourceTree = "";
};
- 09E4A7FF223AE0440038140F /* UI */ = {
- isa = PBXGroup;
- children = (
- );
- name = UI;
- sourceTree = "";
- };
- 09F215982263E61400AEDF6D /* Passcode */ = {
- isa = PBXGroup;
- children = (
- 09F215AA2264ABA600AEDF6D /* PasscodeBackground.swift */,
- 09F215992263E62900AEDF6D /* PasscodeEntryController.swift */,
- 09F2159B2263E63200AEDF6D /* PasscodeEntryControllerNode.swift */,
- 09F215A722649C7900AEDF6D /* PasscodeEntryKeyboardNode.swift */,
- 09F2159F22649BCB00AEDF6D /* PasscodeEntryInputFieldNode.swift */,
- 09F215A322649C2200AEDF6D /* PasscodeEntryLabelNode.swift */,
- 09F215A522649C3000AEDF6D /* PasscodeLockIconNode.swift */,
- 09F215AC2264DC4500AEDF6D /* PasscodeSetupController.swift */,
- 09DE2F242269B7E80045E975 /* PasscodeSetupControllerNode.swift */,
- 094735022275B62B00EA2312 /* PasscodeLayout.swift */,
- );
- name = Passcode;
- sourceTree = "";
- };
D008178022B47450008A895F /* Notification Content */ = {
isa = PBXGroup;
children = (
@@ -2276,7 +2223,6 @@
0900678E21ED8E0E00530762 /* HexColor.swift */,
0947FCAF224055990086741C /* StringHash.swift */,
09F2158C225CF5BC00AEDF6D /* Pasteboard.swift */,
- 09EC5CDB22CBD33D00292E42 /* NumberFormat.swift */,
);
name = Strings;
sourceTree = "";
@@ -2735,6 +2681,7 @@
D08D45281D5E340200A7428A /* Frameworks */ = {
isa = PBXGroup;
children = (
+ D0C9CA182302297C00FAB518 /* PasscodeUI.framework */,
D0C9C9DD2302267200FAB518 /* SolidRoundedButtonNode.framework */,
D0C9C9BA2302168100FAB518 /* PeersNearbyIconNode.framework */,
D0C9C98E2302154500FAB518 /* TelegramPermissionsUI.framework */,
@@ -3467,10 +3414,6 @@
isa = PBXGroup;
children = (
D0F69CD61D6B87D30046BCD6 /* MediaManager.swift */,
- D099EA261DE765DB001AF5A8 /* ManagedMediaId.swift */,
- D099EA2C1DE76782001AF5A8 /* PeerMessageManagedMediaId.swift */,
- D099EA2E1DE775BB001AF5A8 /* ChatContextResultManagedMediaId.swift */,
- D0F02CD81E97ED080065DEE2 /* RecentGifManagedMediaId.swift */,
D0D03AE41DECAE8900220C46 /* ManagedAudioRecorder.swift */,
D0CFBB901FD881A600B65C0D /* AudioRecordningToneData.swift */,
D0D03B2B1DED9B8900220C46 /* AudioWaveform.swift */,
@@ -3482,7 +3425,6 @@
0919546D229458E900E11046 /* Animated Stickers */,
D0F69E9D1D6B8E240046BCD6 /* Resources */,
D0177B831DFB095000A5083A /* FileMediaResourceStatus.swift */,
- D0FA08BF20483F9600DD23FC /* ExtractVideoData.swift */,
D0ADF965212E05A300310BBC /* TonePlayer.swift */,
0910B0EC21FA178C00F8F87D /* WallpaperPreviewMedia.swift */,
);
@@ -3554,7 +3496,6 @@
D01BAA161ECC8DED00295217 /* Call List */,
D0F69E791D6B8C3B0046BCD6 /* Settings */,
D0C50E361E93CAF200F62E39 /* Notifications */,
- 09F215982263E61400AEDF6D /* Passcode */,
090E778422A9B94700CD99F5 /* Peers Nearby */,
);
name = Controllers;
@@ -3838,7 +3779,6 @@
D04614352005093B00EC0EF2 /* Location */,
09E4A7FD223ADF940038140F /* Routing */,
D01848F021A2323D00B6DEBD /* Strings */,
- 09E4A7FF223AE0440038140F /* UI */,
D073CE701DCBF23F007511FD /* DeclareEncodables.swift */,
D073CE641DCBC26B007511FD /* ServiceSoundManager.swift */,
D0E305A41E5B2BFB00D7A3A2 /* ValidateAddressNameInteractive.swift */,
@@ -4263,14 +4203,10 @@
D02B2B9820810DA00062476B /* StickerPaneSearchStickerItem.swift in Sources */,
D020A9DC1FEAE6E7008C66F7 /* OverlayPlayerControllerNode.swift in Sources */,
09D968A1221F7FF100B1458A /* ChatTypingActivityContentNode.swift in Sources */,
- D0EC6CF41EB9F58800EBF1C3 /* ManagedMediaId.swift in Sources */,
09D968A3221F800A00B1458A /* ChatUploadingActivityContentNode.swift in Sources */,
- D0EC6CF51EB9F58800EBF1C3 /* PeerMessageManagedMediaId.swift in Sources */,
- D0EC6CF61EB9F58800EBF1C3 /* ChatContextResultManagedMediaId.swift in Sources */,
090E778622A9B95A00CD99F5 /* PeersNearbyController.swift in Sources */,
D04ECD721FFBF22B00DE9029 /* OpenUrl.swift in Sources */,
D056CD7A1FF3CC2A00880D28 /* ListMessagePlaybackOverlayNode.swift in Sources */,
- D0EC6CF71EB9F58800EBF1C3 /* RecentGifManagedMediaId.swift in Sources */,
D0EC6CF91EB9F58800EBF1C3 /* MediaManager.swift in Sources */,
0962E66521B3631100245FD9 /* WebSearchNavigationContentNode.swift in Sources */,
D0EB5ADF1F798033004E89B6 /* PeerMediaCollectionEmptyNode.swift in Sources */,
@@ -4352,7 +4288,6 @@
D0EC6D2A1EB9F58800EBF1C3 /* FetchPhotoLibraryImageResource.swift in Sources */,
D0EC6D2B1EB9F58800EBF1C3 /* FileMediaResourceStatus.swift in Sources */,
09510B0F22F9347E0078CAB7 /* BundleResource.swift in Sources */,
- D0FA08C020483F9600DD23FC /* ExtractVideoData.swift in Sources */,
D025402522E1E00100AC0195 /* ChatSlowmodeHintController.swift in Sources */,
D008177D22B46B7E008A895F /* TGContactModel.m in Sources */,
D0EC6D301EB9F58800EBF1C3 /* RadialProgressNode.swift in Sources */,
@@ -4371,14 +4306,12 @@
D0EB42011F30ED4F00838FE6 /* LegacyImageProcessors.m in Sources */,
D01590C322BDAEBC0017C33E /* BMPImage.cpp in Sources */,
D0CE8CE51F6F354400AA2DB0 /* ChatTextInputAccessoryItem.swift in Sources */,
- 09F215AD2264DC4500AEDF6D /* PasscodeSetupController.swift in Sources */,
D097C26820DD0A1D007BB4B8 /* PeerReportController.swift in Sources */,
09F664C621EB400A00AB7E26 /* ThemeGridSearchContentNode.swift in Sources */,
D01BAA181ECC8E0000295217 /* CallListController.swift in Sources */,
D0EC6D4B1EB9F58800EBF1C3 /* ChatListNode.swift in Sources */,
D0EC6D4D1EB9F58800EBF1C3 /* ChatListHoleItem.swift in Sources */,
0962E67921B67A9800245FD9 /* ChatMessageAnimatedStickerItemNode.swift in Sources */,
- 09DE2F252269B7E80045E975 /* PasscodeSetupControllerNode.swift in Sources */,
D0EC6D4E1EB9F58800EBF1C3 /* ChatListItem.swift in Sources */,
D0B2F76A2052920D00D3BFB9 /* UserInfoEditingPhoneItem.swift in Sources */,
D0AEAE272080D6970013176E /* PaneSearchBarNode.swift in Sources */,
@@ -4418,7 +4351,6 @@
D0B85C1E1FF6F76600E795B4 /* AuthorizationSequencePasswordRecoveryControllerNode.swift in Sources */,
09B4EE4721A6D33F00847FA6 /* RecentSessionsEmptyStateItem.swift in Sources */,
09F664C421EAB98300AB7E26 /* ThemeColorsGridControllerItem.swift in Sources */,
- 09F2159C2263E63200AEDF6D /* PasscodeEntryControllerNode.swift in Sources */,
D07E413D208A494D00FCA8F0 /* ProxyServerActionSheetController.swift in Sources */,
D02C81732177AC5900CD1006 /* NotificationSearchItem.swift in Sources */,
D018BE58218C7BD800C02DDC /* ChatMessageDeliveryFailedNode.swift in Sources */,
@@ -4452,7 +4384,6 @@
D00817D622B47A14008A895F /* TGProxyItem.m in Sources */,
D0EC6D7A1EB9F58800EBF1C3 /* ChatListSearchContainerNode.swift in Sources */,
D0EC6D7B1EB9F58800EBF1C3 /* ChatListRecentPeersListItem.swift in Sources */,
- 09F215A022649BCB00AEDF6D /* PasscodeEntryInputFieldNode.swift in Sources */,
0910B0ED21FA178C00F8F87D /* WallpaperPreviewMedia.swift in Sources */,
D0EC6D7F1EB9F58800EBF1C3 /* HashtagSearchController.swift in Sources */,
D0EC6D801EB9F58800EBF1C3 /* HashtagSearchControllerNode.swift in Sources */,
@@ -4596,7 +4527,6 @@
D0EC6DD21EB9F58900EBF1C3 /* MentionChatInputContextPanelNode.swift in Sources */,
D00701A22029F6D0006B9E34 /* TGMimeTypeMap.m in Sources */,
D0EC6DD31EB9F58900EBF1C3 /* MentionChatInputPanelItem.swift in Sources */,
- 094735032275B62B00EA2312 /* PasscodeLayout.swift in Sources */,
D0EC6DD41EB9F58900EBF1C3 /* CommandChatInputContextPanelNode.swift in Sources */,
D0EC6DD51EB9F58900EBF1C3 /* CommandChatInputPanelItem.swift in Sources */,
D0EC6DD61EB9F58900EBF1C3 /* VerticalListContextResultsChatInputContextPanelNode.swift in Sources */,
@@ -4635,7 +4565,6 @@
D0EC6DE71EB9F58900EBF1C3 /* ChatTitleAccessoryPanelNode.swift in Sources */,
D0EC6DE81EB9F58900EBF1C3 /* ChatPinnedMessageTitlePanelNode.swift in Sources */,
D0EC6DE91EB9F58900EBF1C3 /* ChatInfoTitlePanelNode.swift in Sources */,
- 09F2159A2263E62900AEDF6D /* PasscodeEntryController.swift in Sources */,
09D96899221DE92600B1458A /* ID3ArtworkReader.swift in Sources */,
D0EC6DEA1EB9F58900EBF1C3 /* ChatReportPeerTitlePanelNode.swift in Sources */,
D0B21B1F22156D92003F741D /* LegacyCache.swift in Sources */,
@@ -4654,7 +4583,6 @@
09EC0DED22CB583C00E7185B /* TextLinkHandling.swift in Sources */,
D08984F02114AE0C00918162 /* DataPrivacySettingsController.swift in Sources */,
D0EC6DFB1EB9F58900EBF1C3 /* AvatarGalleryController.swift in Sources */,
- 09EC5CDC22CBD33D00292E42 /* NumberFormat.swift in Sources */,
D00817DB22B47A14008A895F /* LegacyChatImport.swift in Sources */,
09EDAD2C2211552F0012A50B /* AutodownloadMediaCategoryController.swift in Sources */,
090B48C82200BCA8005083FA /* WallpaperUploadManager.swift in Sources */,
@@ -4675,7 +4603,6 @@
D04554A421B42982007A6DD9 /* ConfirmPhoneNumberController.swift in Sources */,
D07ABBA5202A14BC003671DE /* LegacyImagePicker.swift in Sources */,
D0EC6E0E1EB9F58900EBF1C3 /* PeerAvatarImageGalleryItem.swift in Sources */,
- 09F215A822649C7900AEDF6D /* PasscodeEntryKeyboardNode.swift in Sources */,
D0D4345C1F97CEAA00CC1806 /* ProxyServerSettingsController.swift in Sources */,
D08BDF641FA37BEA009D08E1 /* ChatRecordingPreviewInputPanelNode.swift in Sources */,
D0943B071FDEC529001522CC /* InstantVideoRadialStatusNode.swift in Sources */,
@@ -4699,7 +4626,6 @@
D0AF323A1FB1D8D60097362B /* ChatOverlayNavigationBar.swift in Sources */,
D0943AF61FDAAE7E001522CC /* MultipleAvatarsNode.swift in Sources */,
D0EC6E2B1EB9F58900EBF1C3 /* ComposeController.swift in Sources */,
- 09F215A422649C2200AEDF6D /* PasscodeEntryLabelNode.swift in Sources */,
09749BCF21F236F2008FDDE9 /* ModernCheckNode.swift in Sources */,
0940932422E73DFB003846A3 /* ChatSendMessageActionSheetController.swift in Sources */,
D0EC6E2C1EB9F58900EBF1C3 /* ComposeControllerNode.swift in Sources */,
@@ -4715,7 +4641,6 @@
D0EC6E331EB9F58900EBF1C3 /* CreateChannelController.swift in Sources */,
D0AA29AE1F72770D00C050AC /* ChatListItemStrings.swift in Sources */,
D0EC6E351EB9F58900EBF1C3 /* ItemListAvatarAndNameItem.swift in Sources */,
- 09F215A622649C3000AEDF6D /* PasscodeLockIconNode.swift in Sources */,
D00ACA5A2022897D0045D427 /* ProcessedPeerRestrictionText.swift in Sources */,
D04203152037162700490EA5 /* MediaInputPaneTrendingItem.swift in Sources */,
D0EC6E3C1EB9F58900EBF1C3 /* ItemListPeerActionItem.swift in Sources */,
@@ -4809,7 +4734,6 @@
D0E8175B201254FA00B82BBB /* ChatRecentActionsEmptyNode.swift in Sources */,
09510B1522F96E6C0078CAB7 /* ChatScheduleTimeControllerNode.swift in Sources */,
D0EC6E7D1EB9F58900EBF1C3 /* ChangePhoneNumberIntroController.swift in Sources */,
- 09F215AB2264ABA600AEDF6D /* PasscodeBackground.swift in Sources */,
D0EC6E7E1EB9F58900EBF1C3 /* ChangePhoneNumberController.swift in Sources */,
D0B21B17220D85E7003F741D /* TabBarAccountSwitchControllerNode.swift in Sources */,
D0EC6E7F1EB9F58900EBF1C3 /* ChangePhoneNumberControllerNode.swift in Sources */,