diff --git a/.gitignore b/.gitignore index 230869b9a..20db4d165 100644 --- a/.gitignore +++ b/.gitignore @@ -27,7 +27,8 @@ out/ # Pods/ -# Do not track our workspace since it is created by CocoaPods +## Ignore project files as we generate them with xcodegen (https://github.com/yonaskolb/XcodeGen) +*.xcodeproj *.xcworkspace # Fastlane diff --git a/CHANGES.rst b/CHANGES.rst index c88a483c6..2263d3be1 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -2,16 +2,21 @@ Changes to be released in next version ================================================= ✨ Features + * Enable encryption for contacts, accounts, and crypto database (#3867) * Change Pin inside the app (#3881) * AuthVC: Add social login (#3846). + * Invite friends: Add the ability to invite friends outside of Element in a few places (#3840). 🙌 Improvements + * Bug report: Add "Continue in background" button (#3816). * Show user id in the room invite preview screen (#3839) * AuthVC: SSO authentication now use redirect URL instead of fallback page (#3846). 🐛 Bugfix - * Crash report cannot be submitted (on small phones) #3819 + * Crash report cannot be submitted (on small phones) (#3819) + * Prevent navigation controller from pushing same view controller (#3924) + * AuthVC: Fix recaptcha view cropping (#3940). ⚠️ API Changes * @@ -25,6 +30,9 @@ Changes to be released in next version Others * +Improvements: + * Upgrade MatrixKit version ([v0.13.6](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.13.6)). + Changes in 1.1.3 (2020-12-18) ================================================= diff --git a/Config/AppConfig.swift b/Config/AppConfig.swift deleted file mode 100644 index f8606f761..000000000 --- a/Config/AppConfig.swift +++ /dev/null @@ -1,54 +0,0 @@ -// -// Copyright 2020 Vector Creations Ltd -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Foundation -import MatrixKit - -/// AppConfig is Config plus configurations dedicated to the app -class AppConfiguration: Config { - - // MARK: - Global settings - - override func setupSettings() { - super.setupSettings() - setupAppSettings() - } - - private func setupAppSettings() { - // Enable long press on event in bubble cells - MXKRoomBubbleTableViewCell.disableLongPressGesture(onEvent: false) - - // Each room member will be considered as a potential contact. - MXKContactManager.shared().contactManagerMXRoomSource = MXKContactManagerMXRoomSource.all - } - - - // MARK: - Per matrix session settings - - override func setupSettings(for matrixSession: MXSession) { - super.setupSettings(for: matrixSession) - setupWidgetReadReceipts(for: matrixSession) - } - - private func setupWidgetReadReceipts(for matrixSession: MXSession) { - var acknowledgableEventTypes = matrixSession.acknowledgableEventTypes ?? [] - acknowledgableEventTypes.append(kWidgetMatrixEventTypeString) - acknowledgableEventTypes.append(kWidgetModularEventTypeString) - - matrixSession.acknowledgableEventTypes = acknowledgableEventTypes - } - -} diff --git a/Config/AppIdentifiers.xcconfig b/Config/AppIdentifiers.xcconfig new file mode 100644 index 000000000..1eab8a59d --- /dev/null +++ b/Config/AppIdentifiers.xcconfig @@ -0,0 +1,43 @@ +// +// Copyright 2021 Vector Creations Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + + +// App identity +BUNDLE_DISPLAY_NAME = Element +BASE_BUNDLE_IDENTIFIER = im.vector.app +APPLICATION_GROUP_IDENTIFIER = group.im.vector + +// Version +MARKETING_VERSION = 1.2.2 +CURRENT_PROJECT_VERSION = 1.2.2 + + +// Team +DEVELOPMENT_TEAM = 7J4U792NQT + + +// Provisioning profiles +RIOT_PROVISIONING_PROFILE_SPECIFIER = Vector App Store +RIOT_PROVISIONING_PROFILE = f65e7447-b8a3-46cc-8fba-fa60e55e2511 + +NSE_PROVISIONING_PROFILE_SPECIFIER = "Vector NSE: App Store" +NSE_PROVISIONING_PROFILE = 31dc9316-e029-47fd-81f5-778db07d76a2 + +SHARE_EXTENSION_PROVISIONING_PROFILE_SPECIFIER = "Vector Share Extension: App Store" +SHARE_EXTENSION_PROVISIONING_PROFILE = 1a3be143-50c7-4ae2-834e-00596a053141 + +SIRI_INTENTS_PROVISIONING_PROFILE_SPECIFIER = "Vector Siri Intents: App Store" +SIRI_INTENTS_PROVISIONING_PROFILE = 18a66f93-ffe1-4008-b343-58350cc65023 diff --git a/Config/BuildSettings.swift b/Config/BuildSettings.swift index 7b0f0fd3c..d06d29747 100644 --- a/Config/BuildSettings.swift +++ b/Config/BuildSettings.swift @@ -134,7 +134,7 @@ final class BuildSettings: NSObject { // MARK: - VoIP static var allowVoIPUsage: Bool { - #if canImport(JitsiMeet) + #if canImport(JitsiMeetSDK) return true #else return false diff --git a/Config/Project-Debug.xcconfig b/Config/Project-Debug.xcconfig new file mode 100644 index 000000000..8f6979983 --- /dev/null +++ b/Config/Project-Debug.xcconfig @@ -0,0 +1,39 @@ +// +// Copyright 2021 Vector Creations Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This file defines project settings for Debug. +// Targets (App, extensions) xcconfig files automatically include it for Debug build. + +#include "Project.xcconfig" +#include "Project-Warnings.xcconfig" + +ONLY_ACTIVE_ARCH = YES +COPY_PHASE_STRIP = NO +ENABLE_TESTABILITY = YES +MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE + +SWIFT_OPTIMIZATION_LEVEL = -Onone +SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG + +GCC_OPTIMIZATION_LEVEL = 0 +GCC_DYNAMIC_NO_PIC = NO +GCC_PREPROCESSOR_DEFINITIONS = DEBUG=1 $(inherited) +GCC_SYMBOLS_PRIVATE_EXTERN = NO + + +// Code signing: Use the development team for all targets +CODE_SIGN_IDENTITY = iPhone Developer +CODE_SIGN_STYLE = Automatic diff --git a/Config/Project-Release.xcconfig b/Config/Project-Release.xcconfig new file mode 100644 index 000000000..c9e52dd72 --- /dev/null +++ b/Config/Project-Release.xcconfig @@ -0,0 +1,33 @@ +// +// Copyright 2021 Vector Creations Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This file defines project settings for Release. +// Targets (App, extensions) xcconfig files automatically include it for Release build. + +#include "Project.xcconfig" +#include "Project-Warnings.xcconfig" + +COPY_PHASE_STRIP = YES +ENABLE_NS_ASSERTIONS = NO +MTL_ENABLE_DEBUG_INFO = NO +VALIDATE_PRODUCT = YES + +SWIFT_COMPILATION_MODE = wholemodule + + +// Code signing: Manual +CODE_SIGN_IDENTITY = iPhone Distribution +CODE_SIGN_STYLE = Manual diff --git a/Config/Project-Warnings.xcconfig b/Config/Project-Warnings.xcconfig new file mode 100644 index 000000000..8c9512128 --- /dev/null +++ b/Config/Project-Warnings.xcconfig @@ -0,0 +1,48 @@ + +// +// Copyright 2021 Vector Creations Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This file defines warning declarations for the base project. +// Targets (App, extensions) xcconfig files automatically include it. + +CLANG_WARN__DUPLICATE_METHOD_MATCH = 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_UNREACHABLE_CODE = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE + +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 diff --git a/Config/Project.xcconfig b/Config/Project.xcconfig new file mode 100644 index 000000000..5772467ee --- /dev/null +++ b/Config/Project.xcconfig @@ -0,0 +1,48 @@ +// +// Copyright 2020 Vector Creations Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// Configuration settings file format documentation can be found at: +// https://help.apple.com/xcode/#/dev745c5c974 + + +// This file defines base project settings. +// Targets (App, extensions) xcconfig files automatically include it. + +// Application constants +KEYCHAIN_ACCESS_GROUP = $(AppIdentifierPrefix)$(BASE_BUNDLE_IDENTIFIER).keychain.shared + +// Build settings +IPHONEOS_DEPLOYMENT_TARGET = 11.0 +SDKROOT = iphoneos +TARGETED_DEVICE_FAMILY = 1,2 +SWIFT_VERSION = 5.3.1 +ENABLE_BITCODE = NO + +LD_RUNPATH_SEARCH_PATHS = $(inherited) @executable_path/Frameworks @executable_path/../../Frameworks +ALWAYS_SEARCH_USER_PATHS = NO +DEFINES_MODULE = YES +ENABLE_STRICT_OBJC_MSGSEND = YES +GCC_NO_COMMON_BLOCKS = YES + +// Make Xcode 12 and fastlane(xcodebuild) happy while some pods are not updated +EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64 + +CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES +CLANG_ANALYZER_NONNULL = YES +CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE + +CLANG_ENABLE_MODULES = YES +CLANG_ENABLE_OBJC_ARC = YES \ No newline at end of file diff --git a/Riot.xcodeproj/xcshareddata/IDETemplateMacros.plist b/IDETemplateMacros.plist similarity index 95% rename from Riot.xcodeproj/xcshareddata/IDETemplateMacros.plist rename to IDETemplateMacros.plist index 61c77a337..5a3026b83 100644 --- a/Riot.xcodeproj/xcshareddata/IDETemplateMacros.plist +++ b/IDETemplateMacros.plist @@ -4,7 +4,7 @@ FILEHEADER -// Copyright 2020 New Vector Ltd +// Copyright 2021 New Vector Ltd // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/INSTALL.md b/INSTALL.md index 3f0f697b5..3e382eb82 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -7,6 +7,7 @@ To build Element iOS project you need: - Xcode 12.1+. - [Ruby](https://www.ruby-lang.org/), a dynamic programming language used by several build tools. - [CocoaPods](https://cocoapods.org), library dependencies manager for Xcode projects. +- [XcodeGen](https://github.com/yonaskolb/XcodeGen), an Xcode project generator. - [bundler](https://bundler.io/) (optional), is also a dependency manager used to manage build tools dependency (CocoaPods, Fastlane). ### Install Ruby @@ -20,17 +21,25 @@ If you do not want to grant the ruby package manager, [RubyGems](https://rubygem To install CocoaPods you can grab the right version by using `bundler` (recommended) or you can directly install it with RubyGems: ``` -gem install cocoapods +$ gem install cocoapods ``` In the last case please ensure that you are using the same version as indicated at the end of the `Podfile.lock` file. +### Install XcodeGen + +You can directly install XcodeGen with [Homebrew](https://brew.sh) or RubyGems: + +``` +$ brew install xcodegen +``` + ### Install bundler (optional) By using `bundler` you will ensure to use the right versions of build tools used to build and deliver the project. You can find dependency definitions in the `Gemfile`. To install `bundler`: ``` -gem install bundler +$ gem install bundler ``` ## Choose Matrix SDKs version to build @@ -51,32 +60,39 @@ If you want to build last development code you have to checkout the develop bran - **Build specific branch of Kit and SDK and modify Element project only** -If you want to build a specific branch for the MatrixKit and the MatrixSDK you have to indicate them using a dictionary like this: `$matrixKitVersion = {'kit branch name' => 'sdk branch name'}`. +If you want to build a specific branch for the MatrixKit and the MatrixSDK you have to indicate them using a dictionary like this: `$matrixKitVersion = {'kit_branch_name' => 'sdk_branch_name'}`. - **Build any branch and be able to modify MatrixKit and MatrixSDK locally** If you want to modify MatrixKit and/or MatrixSDK locally and see the result in Element project you have to uncommment `$matrixKitVersion = :local` in the `Podfile`. But before you have to checkout [MatrixKit](https://github.com/matrix-org/matrix-ios-kit) repository in `../matrix-ios-kit` and [MatrixSDK](https://github.com/matrix-org/matrix-ios-sdk) in `../matrix-ios-sdk` locally relatively to your Element iOS project folder. -Be sure to use compatible branches for Element iOS, MatrixKit and MatrixSDK. For example if you want to modify Element iOS from develop branch use MatrixKit and MatrixSDK develop branches and then make your modifications. +Be sure to use compatible branches for Element iOS, MatrixKit and MatrixSDK. For example, if you want to modify Element iOS from develop branch, use MatrixKit and MatrixSDK develop branches and then make your modifications. **Important**: By working with local pods (development pods) you will need to use legacy build system in Xcode, to have your local changes taken into account. To enable it go to Xcode menu and select `File > Workspace Settings… > Build System` and then choose `Legacy Build System`. -### Modify `$matrixKitVersion` after installation of dependencies +### `$matrixKitVersion` Modification -Assuming you have already completed the **Install dependencies** instructions from **Build** section below. +Every time you change the `$matrixKitVersion` variable in the `Podfile`, you have to run the `pod install` command again. -Each time you edit `$matrixKitVersion` variable in the `Podfile` you will have to run the `pod install` command. ## Build +## Generate Xcode project + +In order to get rid of git conflicts, the `Riot.xcodeproj` is not pushed into the git repository anymore but generated using `XcodeGen`. To generate the `xcodeproj` file simply run the following command line from the root folder : + +``` +$ xcodegen +``` + + ### Install dependencies -Before opening the Element Xcode workspace, you need to install dependencies via CocoaPods. +Then, before opening the Element Xcode workspace, you need to install dependencies via CocoaPods. To be sure to use the right CocoaPods version you can use `bundler`: ``` -$ cd Riot $ bundle install $ bundle exec pod install ``` @@ -84,12 +100,12 @@ $ bundle exec pod install Or if you prefer to use directly CocoaPods: ``` -$ cd Riot $ pod install ``` This will load all dependencies for the Element source code, including [MatrixKit](https://github.com/matrix-org/matrix-ios-kit) -and [MatrixSDK](https://github.com/matrix-org/matrix-ios-sdk). +and [MatrixSDK](https://github.com/matrix-org/matrix-ios-sdk). + ### Open workspace @@ -103,7 +119,10 @@ $ open Riot.xcworkspace ### Configure project -You may need to change the bundle identifier and app group identifier to be unique to get Xcode to build the app. Make sure to change the bundle identifier, application group identifier and app name in the `Config/Common.xcconfig` file to your new identifiers. +You may need to change the bundle identifier and app group identifier to be unique to get Xcode to build the app. Make sure to change the bundle identifier, application group identifier and app name in the `project.yml` file to your new identifiers. + +Each target has its own YAML file in the folder Targets folder. + ## Generate IPA @@ -142,5 +161,3 @@ Or you can use the wrapper script located at `/Tools/Release/buildRelease.sh`. F And then indicate a branch or a tag like this: `$ ./buildRelease.sh ` - - diff --git a/Podfile b/Podfile index 177c8627b..67fff80e8 100644 --- a/Podfile +++ b/Podfile @@ -11,7 +11,7 @@ use_frameworks! # - `{ {kit spec hash} => {sdk spec hash}` to depend on specific pod options (:git => …, :podspec => …) for each repo. Used by Fastfile during CI # # Warning: our internal tooling depends on the name of this variable name, so be sure not to change it -$matrixKitVersion = '= 0.13.4' +$matrixKitVersion = '= 0.14.1' # $matrixKitVersion = :local # $matrixKitVersion = {'develop' => 'develop'} @@ -32,19 +32,13 @@ $matrixKitVersionSpec = $matrixKitVersion $matrixSDKVersionSpec = {} end -# Method to import the right MatrixKit flavour +# Method to import the MatrixKit def import_MatrixKit pod 'MatrixSDK', $matrixSDKVersionSpec pod 'MatrixSDK/JingleCallStack', $matrixSDKVersionSpec pod 'MatrixKit', $matrixKitVersionSpec end -# Method to import the right MatrixKit/AppExtension flavour -def import_MatrixKitAppExtension - pod 'MatrixSDK', $matrixSDKVersionSpec - pod 'MatrixKit/AppExtension', $matrixKitVersionSpec -end - ######################################## abstract_target 'RiotPods' do @@ -81,15 +75,15 @@ abstract_target 'RiotPods' do end target "RiotShareExtension" do - import_MatrixKitAppExtension + import_MatrixKit end target "SiriIntents" do - import_MatrixKitAppExtension + import_MatrixKit end target "RiotNSE" do - import_MatrixKitAppExtension + import_MatrixKit end end @@ -111,6 +105,9 @@ post_install do |installer| if target.name.include? 'ReadMoreTextView' config.build_settings['SWIFT_VERSION'] = '5.2' end + + # Stop Xcode 12 complaining about old IPHONEOS_DEPLOYMENT_TARGET from pods + config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET' end end end diff --git a/Podfile.lock b/Podfile.lock index 11a8ab239..983f550c6 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -30,11 +30,6 @@ PODS: - DTFoundation/DTAnimatedGIF (~> 1.7.5) - DTFoundation/DTHTMLParser (~> 1.7.5) - DTFoundation/UIKit (~> 1.7.5) - - DTCoreText/Extension (1.6.25): - - DTFoundation/Core (~> 1.7.5) - - DTFoundation/DTAnimatedGIF (~> 1.7.5) - - DTFoundation/DTHTMLParser (~> 1.7.5) - - DTFoundation/UIKit (~> 1.7.5) - DTFoundation/Core (1.7.16) - DTFoundation/DTAnimatedGIF (1.7.16) - DTFoundation/DTHTMLParser (1.7.16): @@ -47,7 +42,7 @@ PODS: - GBDeviceInfo/Core (6.4.0) - GZIP (1.3.0) - HPGrowingTextView (1.1) - - JitsiMeetSDK (2.11.0) + - JitsiMeetSDK (3.1.0) - KeychainAccess (4.2.1) - KituraContracts (1.2.1): - LoggerAPI (~> 1.7) @@ -60,36 +55,29 @@ PODS: - MatomoTracker (7.2.2): - MatomoTracker/Core (= 7.2.2) - MatomoTracker/Core (7.2.2) - - MatrixKit (0.13.4): + - MatrixKit (0.14.1): - Down (~> 0.9.3) - DTCoreText (~> 1.6.23) - HPGrowingTextView (~> 1.1) - libPhoneNumber-iOS (~> 0.9.13) - - MatrixKit/Core (= 0.13.4) - - MatrixSDK (= 0.17.6) - - MatrixKit/AppExtension (0.13.4): - - Down (~> 0.9.3) - - DTCoreText (~> 1.6.23) - - DTCoreText/Extension - - HPGrowingTextView (~> 1.1) - - libPhoneNumber-iOS (~> 0.9.13) - - MatrixSDK (= 0.17.6) - - MatrixKit/Core (0.13.4): + - MatrixKit/Core (= 0.14.1) + - MatrixSDK (= 0.18.1) + - MatrixKit/Core (0.14.1): - Down (~> 0.9.3) - DTCoreText (~> 1.6.23) - HPGrowingTextView (~> 1.1) - libPhoneNumber-iOS (~> 0.9.13) - - MatrixSDK (= 0.17.6) - - MatrixSDK (0.17.6): - - MatrixSDK/Core (= 0.17.6) - - MatrixSDK/Core (0.17.6): + - MatrixSDK (= 0.18.1) + - MatrixSDK (0.18.1): + - MatrixSDK/Core (= 0.18.1) + - MatrixSDK/Core (0.18.1): - AFNetworking (~> 4.0.0) - GZIP (~> 1.3.0) - libbase58 (~> 0.1.4) - OLMKit (~> 3.1.0) - Realm (= 10.1.4) - - MatrixSDK/JingleCallStack (0.17.6): - - JitsiMeetSDK (= 2.11.0) + - MatrixSDK/JingleCallStack (0.18.1): + - JitsiMeetSDK (= 3.1.0) - MatrixSDK/Core - OLMKit (3.1.0): - OLMKit/olmc (= 3.1.0) @@ -127,8 +115,7 @@ DEPENDENCIES: - KeychainAccess (~> 4.2.1) - KTCenterFlowLayout (~> 1.3.1) - MatomoTracker (~> 7.2.2) - - MatrixKit (= 0.13.4) - - MatrixKit/AppExtension (= 0.13.4) + - MatrixKit (= 0.14.1) - MatrixSDK - MatrixSDK/JingleCallStack - OLMKit @@ -190,7 +177,7 @@ SPEC CHECKSUMS: GBDeviceInfo: f29249891446a392e64b9c9bbef9554aad2a6beb GZIP: 416858efbe66b41b206895ac6dfd5493200d95b3 HPGrowingTextView: 88a716d97fb853bcb08a4a08e4727da17efc9b19 - JitsiMeetSDK: ddc915b751b0166aa4fdfee938bd60cc87aff9f3 + JitsiMeetSDK: 330e694130d6e67126e5a031b9ab1807f446ab3b KeychainAccess: 9b07f665298d13c3a85881bd3171f6f49b8151c1 KituraContracts: e845e60dc8627ad0a76fa55ef20a45451d8f830b KTCenterFlowLayout: 6e02b50ab2bd865025ae82fe266ed13b6d9eaf97 @@ -199,8 +186,8 @@ SPEC CHECKSUMS: LoggerAPI: ad9c4a6f1e32f518fdb43a1347ac14d765ab5e3d Logging: beeb016c9c80cf77042d62e83495816847ef108b MatomoTracker: a59ec4da0f580be57bdc6baa708a71a86532a832 - MatrixKit: 8dec5df9b3bb6621b8411ec37f93a0e3abe01db8 - MatrixSDK: 43d329b4070301f714808f02872ec1747c2f9b7d + MatrixKit: 267c3235abae2e3878e41a57bda32ec4899118e6 + MatrixSDK: 7d5faf810eab02a189df64aef28583c8bed81f5c OLMKit: 4ee0159d63feeb86d836fdcfefe418e163511639 ReadMoreTextView: 19147adf93abce6d7271e14031a00303fe28720d Realm: 80f4fb2971ccb9adc27a47d0955ae8e533a7030b @@ -212,6 +199,6 @@ SPEC CHECKSUMS: zxcvbn-ios: fef98b7c80f1512ff0eec47ac1fa399fc00f7e3c ZXingObjC: fdbb269f25dd2032da343e06f10224d62f537bdb -PODFILE CHECKSUM: 198d9f0614bcf132a6aa31bdf8c1beb0360fdea7 +PODFILE CHECKSUM: f8d8c8ff72ddc828b223c66425ec17184f06c9cc COCOAPODS: 1.10.1 diff --git a/README.md b/README.md index 4baaabcf1..31edf7a51 100644 --- a/README.md +++ b/README.md @@ -26,11 +26,19 @@ You can try last beta build by accessing our [TestFlight Public Link](https://te ## Build instructions -To build the application please refer to the [installation guide](./INSTALL.md). +If you have already everything installed, opening the project workspace in Xcode should be as easy as: + +``` +$ xcodegen # Create the xcodeproj with all project source files +$ pod install # Create the xcworkspace with all project dependencies +$ open Riot.xcworkspace # Open Xcode +``` + +Else, you can visit our [installation guide](./INSTALL.md). This guide also offers more details and advanced usage like using [MatrixSDK](https://github.com/matrix-org/matrix-ios-sdk) and [MatrixKit](https://github.com/matrix-org/matrix-ios-kit) in their development versions. ## Contributing -If you want to contribute to Element iOS code or translations please refer to the [contribution guide](CONTRIBUTING.md). +If you want to contribute to Element iOS code or translations, go to the [contribution guide](CONTRIBUTING.md). ## Support @@ -42,7 +50,7 @@ If after your research you still have a question, ask at [#element-ios:matrix.or Copyright (c) 2014-2017 OpenMarket Ltd Copyright (c) 2017 Vector Creations Ltd -Copyright (c) 2017-2020 New Vector Ltd +Copyright (c) 2017-2021 New Vector Ltd Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with the License. You may obtain a copy of the License in the [LICENSE](LICENSE) file, or at: diff --git a/Riot.xcodeproj/project.pbxproj b/Riot.xcodeproj/project.pbxproj deleted file mode 100644 index 7e085cac8..000000000 --- a/Riot.xcodeproj/project.pbxproj +++ /dev/null @@ -1,7775 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 51; - objects = { - -/* Begin PBXBuildFile section */ - 24CBEC591F0EAD310093EABB /* RiotShareExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 24CBEC4E1F0EAD310093EABB /* RiotShareExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - 24EEE5A21F23A8B400B3C705 /* MXRoom+Riot.m in Sources */ = {isa = PBXBuildFile; fileRef = F083BBE81E7009EC00A9B29C /* MXRoom+Riot.m */; }; - 24EEE5A31F23A8C300B3C705 /* AvatarGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = F083BC111E7009EC00A9B29C /* AvatarGenerator.m */; }; - 3209451221F1C1430088CAA2 /* BlackTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3209451121F1C1430088CAA2 /* BlackTheme.swift */; }; - 3209451321F1C1D50088CAA2 /* BlackTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3209451121F1C1430088CAA2 /* BlackTheme.swift */; }; - 32242F0921E8B05F00725742 /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32242F0821E8B05F00725742 /* UIColor.swift */; }; - 32242F0A21E8B21300725742 /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32242F0821E8B05F00725742 /* UIColor.swift */; }; - 32242F1221E8FBA900725742 /* ThemeService.m in Sources */ = {isa = PBXBuildFile; fileRef = 32242F0C21E8FBA900725742 /* ThemeService.m */; }; - 32242F1321E8FBA900725742 /* Theme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32242F0D21E8FBA900725742 /* Theme.swift */; }; - 32242F1421E8FBA900725742 /* DefaultTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32242F0F21E8FBA900725742 /* DefaultTheme.swift */; }; - 32242F1521E8FBA900725742 /* DarkTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32242F1021E8FBA900725742 /* DarkTheme.swift */; }; - 32242F1621E8FBCC00725742 /* ThemeService.m in Sources */ = {isa = PBXBuildFile; fileRef = 32242F0C21E8FBA900725742 /* ThemeService.m */; }; - 32242F1721E8FBE500725742 /* Theme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32242F0D21E8FBA900725742 /* Theme.swift */; }; - 32242F1821E8FBF800725742 /* DefaultTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32242F0F21E8FBA900725742 /* DefaultTheme.swift */; }; - 32242F1921E8FBFB00725742 /* DarkTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32242F1021E8FBA900725742 /* DarkTheme.swift */; }; - 322C110822BBC6F80043FEAC /* WidgetManagerConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 322C110722BBC6F80043FEAC /* WidgetManagerConfig.swift */; }; - 3232AB1422564D9100AD6A5C /* swiftgen-config.yml in Resources */ = {isa = PBXBuildFile; fileRef = 3232AB0022564D9100AD6A5C /* swiftgen-config.yml */; }; - 3232AB1522564D9100AD6A5C /* flat-swift4-vector.stencil in Resources */ = {isa = PBXBuildFile; fileRef = 3232AB0322564D9100AD6A5C /* flat-swift4-vector.stencil */; }; - 3232AB2122564D9100AD6A5C /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 3232AB1322564D9100AD6A5C /* README.md */; }; - 3232AB482256558300AD6A5C /* FlowTemplateCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3232AB3C2256558300AD6A5C /* FlowTemplateCoordinatorType.swift */; }; - 3232AB492256558300AD6A5C /* FlowTemplateCoordinatorBridgePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3232AB3D2256558300AD6A5C /* FlowTemplateCoordinatorBridgePresenter.swift */; }; - 3232AB4A2256558300AD6A5C /* FlowTemplateCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3232AB3E2256558300AD6A5C /* FlowTemplateCoordinator.swift */; }; - 3232AB4B2256558300AD6A5C /* TemplateScreenViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3232AB402256558300AD6A5C /* TemplateScreenViewController.storyboard */; }; - 3232AB4C2256558300AD6A5C /* TemplateScreenCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3232AB412256558300AD6A5C /* TemplateScreenCoordinator.swift */; }; - 3232AB4D2256558300AD6A5C /* TemplateScreenCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3232AB422256558300AD6A5C /* TemplateScreenCoordinatorType.swift */; }; - 3232AB4E2256558300AD6A5C /* TemplateScreenViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3232AB432256558300AD6A5C /* TemplateScreenViewModelType.swift */; }; - 3232AB4F2256558300AD6A5C /* TemplateScreenViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3232AB442256558300AD6A5C /* TemplateScreenViewController.swift */; }; - 3232AB502256558300AD6A5C /* TemplateScreenViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3232AB452256558300AD6A5C /* TemplateScreenViewState.swift */; }; - 3232AB512256558300AD6A5C /* TemplateScreenViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3232AB462256558300AD6A5C /* TemplateScreenViewAction.swift */; }; - 3232AB522256558300AD6A5C /* TemplateScreenViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3232AB472256558300AD6A5C /* TemplateScreenViewModel.swift */; }; - 3232ABA1225730E100AD6A5C /* KeyVerificationCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3232AB95225730E100AD6A5C /* KeyVerificationCoordinatorType.swift */; }; - 3232ABA2225730E100AD6A5C /* DeviceVerificationStartViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3232AB97225730E100AD6A5C /* DeviceVerificationStartViewController.storyboard */; }; - 3232ABA3225730E100AD6A5C /* DeviceVerificationStartCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3232AB98225730E100AD6A5C /* DeviceVerificationStartCoordinatorType.swift */; }; - 3232ABA4225730E100AD6A5C /* DeviceVerificationStartViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3232AB99225730E100AD6A5C /* DeviceVerificationStartViewAction.swift */; }; - 3232ABA5225730E100AD6A5C /* DeviceVerificationStartViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3232AB9A225730E100AD6A5C /* DeviceVerificationStartViewModelType.swift */; }; - 3232ABA6225730E100AD6A5C /* DeviceVerificationStartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3232AB9B225730E100AD6A5C /* DeviceVerificationStartViewController.swift */; }; - 3232ABA7225730E100AD6A5C /* DeviceVerificationStartCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3232AB9C225730E100AD6A5C /* DeviceVerificationStartCoordinator.swift */; }; - 3232ABA8225730E100AD6A5C /* DeviceVerificationStartViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3232AB9D225730E100AD6A5C /* DeviceVerificationStartViewState.swift */; }; - 3232ABA9225730E100AD6A5C /* DeviceVerificationStartViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3232AB9E225730E100AD6A5C /* DeviceVerificationStartViewModel.swift */; }; - 3232ABAB225730E100AD6A5C /* KeyVerificationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3232ABA0225730E100AD6A5C /* KeyVerificationCoordinator.swift */; }; - 3232ABC2225B996200AD6A5C /* Themable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3232ABC1225B996100AD6A5C /* Themable.swift */; }; - 323AB947232BD74600C1451F /* AuthFallBackViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 323AB946232BD74600C1451F /* AuthFallBackViewController.m */; }; - 324A204F225FC571004FE8B0 /* DeviceVerificationIncomingViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 324A2047225FC571004FE8B0 /* DeviceVerificationIncomingViewController.storyboard */; }; - 324A2050225FC571004FE8B0 /* DeviceVerificationIncomingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 324A2048225FC571004FE8B0 /* DeviceVerificationIncomingViewController.swift */; }; - 324A2051225FC571004FE8B0 /* DeviceVerificationIncomingViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 324A2049225FC571004FE8B0 /* DeviceVerificationIncomingViewState.swift */; }; - 324A2052225FC571004FE8B0 /* DeviceVerificationIncomingViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 324A204A225FC571004FE8B0 /* DeviceVerificationIncomingViewAction.swift */; }; - 324A2053225FC571004FE8B0 /* DeviceVerificationIncomingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 324A204B225FC571004FE8B0 /* DeviceVerificationIncomingViewModel.swift */; }; - 324A2054225FC571004FE8B0 /* DeviceVerificationIncomingCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 324A204C225FC571004FE8B0 /* DeviceVerificationIncomingCoordinatorType.swift */; }; - 324A2055225FC571004FE8B0 /* DeviceVerificationIncomingViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 324A204D225FC571004FE8B0 /* DeviceVerificationIncomingViewModelType.swift */; }; - 324A2056225FC571004FE8B0 /* DeviceVerificationIncomingCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 324A204E225FC571004FE8B0 /* DeviceVerificationIncomingCoordinator.swift */; }; - 32607D6C243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32607D64243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewController.swift */; }; - 32607D6D243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32607D65243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyCoordinatorType.swift */; }; - 32607D6E243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32607D66243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewModelType.swift */; }; - 32607D6F243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 32607D67243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewController.storyboard */; }; - 32607D70243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32607D68243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewModel.swift */; }; - 32607D71243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32607D69243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewState.swift */; }; - 32607D72243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32607D6A243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewAction.swift */; }; - 32607D73243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32607D6B243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyCoordinator.swift */; }; - 3275FD8C21A5A2C500B9C13D /* TermsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3275FD8B21A5A2C500B9C13D /* TermsView.swift */; }; - 3281BCF72201FA4200F4A383 /* UIControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3281BCF62201FA4200F4A383 /* UIControl.swift */; }; - 3284A35120A07C210044F922 /* postMessageAPI.js in Resources */ = {isa = PBXBuildFile; fileRef = 3284A35020A07C210044F922 /* postMessageAPI.js */; }; - 32863A5A2384070300D07C4A /* RiotSharedSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32863A592384070300D07C4A /* RiotSharedSettings.swift */; }; - 32863A5C2384074C00D07C4A /* RiotSettingAllowedWidgets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32863A5B2384074C00D07C4A /* RiotSettingAllowedWidgets.swift */; }; - 32891D6B2264CBA300C82226 /* SimpleScreenTemplateViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32891D692264CBA300C82226 /* SimpleScreenTemplateViewController.swift */; }; - 32891D6C2264CBA300C82226 /* SimpleScreenTemplateViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 32891D6A2264CBA300C82226 /* SimpleScreenTemplateViewController.storyboard */; }; - 32891D75226728EE00C82226 /* KeyVerificationDataLoadingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32891D73226728EE00C82226 /* KeyVerificationDataLoadingViewController.swift */; }; - 32891D76226728EF00C82226 /* KeyVerificationDataLoadingViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 32891D74226728EE00C82226 /* KeyVerificationDataLoadingViewController.storyboard */; }; - 328E410624CB168500DC4490 /* AppConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 328E410524CB168500DC4490 /* AppConfiguration.swift */; }; - 3291DC8A23E0BE820009732F /* Security.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3291DC8923E0BE820009732F /* Security.storyboard */; }; - 3291DC8D23E0BFF10009732F /* SecurityViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3291DC8C23E0BFF10009732F /* SecurityViewController.m */; }; - 329E746622CD02EA006F9797 /* BubbleReactionActionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 329E746422CD02EA006F9797 /* BubbleReactionActionViewCell.xib */; }; - 329E746722CD02EA006F9797 /* BubbleReactionActionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 329E746522CD02EA006F9797 /* BubbleReactionActionViewCell.swift */; }; - 32A6001622C661100042C1D9 /* EditHistoryViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32A6000D22C661100042C1D9 /* EditHistoryViewState.swift */; }; - 32A6001722C661100042C1D9 /* EditHistoryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32A6000E22C661100042C1D9 /* EditHistoryViewController.swift */; }; - 32A6001822C661100042C1D9 /* EditHistoryViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32A6000F22C661100042C1D9 /* EditHistoryViewModel.swift */; }; - 32A6001922C661100042C1D9 /* EditHistoryViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32A6001022C661100042C1D9 /* EditHistoryViewModelType.swift */; }; - 32A6001A22C661100042C1D9 /* EditHistoryCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32A6001122C661100042C1D9 /* EditHistoryCoordinator.swift */; }; - 32A6001B22C661100042C1D9 /* EditHistoryViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32A6001222C661100042C1D9 /* EditHistoryViewAction.swift */; }; - 32A6001C22C661100042C1D9 /* EditHistoryViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 32A6001322C661100042C1D9 /* EditHistoryViewController.storyboard */; }; - 32A6001D22C661100042C1D9 /* EditHistoryCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32A6001422C661100042C1D9 /* EditHistoryCoordinatorType.swift */; }; - 32A6001E22C661100042C1D9 /* EditHistoryCoordinatorBridgePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32A6001522C661100042C1D9 /* EditHistoryCoordinatorBridgePresenter.swift */; }; - 32A6002022C66FCF0042C1D9 /* EditHistoryMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32A6001F22C66FCF0042C1D9 /* EditHistoryMessage.swift */; }; - 32B1FEDB21A46F2C00637127 /* TermsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 32B1FEDA21A46F2C00637127 /* TermsView.xib */; }; - 32B94DF9228EC26400716A26 /* ReactionsMenuViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32B94DF2228EC26400716A26 /* ReactionsMenuViewAction.swift */; }; - 32B94DFA228EC26400716A26 /* ReactionsMenuButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32B94DF3228EC26400716A26 /* ReactionsMenuButton.swift */; }; - 32BF994F21FA29A400698084 /* SettingsKeyBackupViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32BF994E21FA29A400698084 /* SettingsKeyBackupViewModel.swift */; }; - 32BF995121FA29DC00698084 /* SettingsKeyBackupViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32BF995021FA29DC00698084 /* SettingsKeyBackupViewModelType.swift */; }; - 32BF995321FA2A1300698084 /* SettingsKeyBackupViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32BF995221FA2A1300698084 /* SettingsKeyBackupViewState.swift */; }; - 32BF995521FA2AB700698084 /* SettingsKeyBackupViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32BF995421FA2AB700698084 /* SettingsKeyBackupViewAction.swift */; }; - 32BF995721FB07A400698084 /* SettingsKeyBackupTableViewSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32BF995621FB07A400698084 /* SettingsKeyBackupTableViewSection.swift */; }; - 32D5D16023E1EE2700E3E37C /* ManageSessionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 32D5D15D23E1EE2700E3E37C /* ManageSessionViewController.m */; }; - 32D5D16123E1EE2700E3E37C /* ManageSession.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 32D5D15E23E1EE2700E3E37C /* ManageSession.storyboard */; }; - 32DB557522FDADE50016329E /* ServiceTermsModalCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DB556922FDADE50016329E /* ServiceTermsModalCoordinatorType.swift */; }; - 32DB557622FDADE50016329E /* ServiceTermsModalCoordinatorBridgePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DB556A22FDADE50016329E /* ServiceTermsModalCoordinatorBridgePresenter.swift */; }; - 32DB557722FDADE50016329E /* ServiceTermsModalCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DB556B22FDADE50016329E /* ServiceTermsModalCoordinator.swift */; }; - 32DB557822FDADE50016329E /* ServiceTermsModalScreenViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DB556D22FDADE50016329E /* ServiceTermsModalScreenViewState.swift */; }; - 32DB557922FDADE50016329E /* ServiceTermsModalScreenViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DB556E22FDADE50016329E /* ServiceTermsModalScreenViewModel.swift */; }; - 32DB557A22FDADE50016329E /* ServiceTermsModalScreenViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DB556F22FDADE50016329E /* ServiceTermsModalScreenViewController.swift */; }; - 32DB557B22FDADE50016329E /* ServiceTermsModalScreenViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 32DB557022FDADE50016329E /* ServiceTermsModalScreenViewController.storyboard */; }; - 32DB557C22FDADE50016329E /* ServiceTermsModalScreenViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DB557122FDADE50016329E /* ServiceTermsModalScreenViewModelType.swift */; }; - 32DB557D22FDADE50016329E /* ServiceTermsModalScreenCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DB557222FDADE50016329E /* ServiceTermsModalScreenCoordinatorType.swift */; }; - 32DB557E22FDADE50016329E /* ServiceTermsModalScreenViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DB557322FDADE50016329E /* ServiceTermsModalScreenViewAction.swift */; }; - 32DB557F22FDADE50016329E /* ServiceTermsModalScreenCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DB557422FDADE50016329E /* ServiceTermsModalScreenCoordinator.swift */; }; - 32F6B9692270623100BBA352 /* KeyVerificationDataLoadingCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32F6B9632270623000BBA352 /* KeyVerificationDataLoadingCoordinator.swift */; }; - 32F6B96A2270623100BBA352 /* KeyVerificationDataLoadingViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32F6B9642270623100BBA352 /* KeyVerificationDataLoadingViewState.swift */; }; - 32F6B96B2270623100BBA352 /* KeyVerificationDataLoadingViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32F6B9652270623100BBA352 /* KeyVerificationDataLoadingViewAction.swift */; }; - 32F6B96C2270623100BBA352 /* KeyVerificationDataLoadingCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32F6B9662270623100BBA352 /* KeyVerificationDataLoadingCoordinatorType.swift */; }; - 32F6B96D2270623100BBA352 /* KeyVerificationDataLoadingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32F6B9672270623100BBA352 /* KeyVerificationDataLoadingViewModel.swift */; }; - 32F6B96E2270623100BBA352 /* KeyVerificationDataLoadingViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32F6B9682270623100BBA352 /* KeyVerificationDataLoadingViewModelType.swift */; }; - 32FD754C24D06EBE00BA7B37 /* RiotSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B5597F20EFC3DF00210D55 /* RiotSettings.swift */; }; - 32FD754D24D06EBF00BA7B37 /* RiotSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B5597F20EFC3DF00210D55 /* RiotSettings.swift */; }; - 32FD755024D074C700BA7B37 /* CommonConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD754F24D074C700BA7B37 /* CommonConfiguration.swift */; }; - 32FD755124D074C700BA7B37 /* CommonConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD754F24D074C700BA7B37 /* CommonConfiguration.swift */; }; - 32FD755224D074C700BA7B37 /* CommonConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD754F24D074C700BA7B37 /* CommonConfiguration.swift */; }; - 32FD755324D074C700BA7B37 /* CommonConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD754F24D074C700BA7B37 /* CommonConfiguration.swift */; }; - 32FD755424D074C700BA7B37 /* CommonConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD754F24D074C700BA7B37 /* CommonConfiguration.swift */; }; - 32FD755524D0754500BA7B37 /* AppConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 328E410524CB168500DC4490 /* AppConfiguration.swift */; }; - 32FD755724D15C7A00BA7B37 /* Configurable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD755624D15C7A00BA7B37 /* Configurable.swift */; }; - 32FD755824D15C7A00BA7B37 /* Configurable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD755624D15C7A00BA7B37 /* Configurable.swift */; }; - 32FD755924D15C7A00BA7B37 /* Configurable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD755624D15C7A00BA7B37 /* Configurable.swift */; }; - 32FD755A24D15C7A00BA7B37 /* Configurable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD755624D15C7A00BA7B37 /* Configurable.swift */; }; - 32FD755B24D15C7A00BA7B37 /* Configurable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD755624D15C7A00BA7B37 /* Configurable.swift */; }; - 32FD756424D2AD5100BA7B37 /* BuildSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD756324D2AD5100BA7B37 /* BuildSettings.swift */; }; - 32FD756524D2AD5100BA7B37 /* BuildSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD756324D2AD5100BA7B37 /* BuildSettings.swift */; }; - 32FD756624D2AD5100BA7B37 /* BuildSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD756324D2AD5100BA7B37 /* BuildSettings.swift */; }; - 32FD756724D2AD5100BA7B37 /* BuildSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD756324D2AD5100BA7B37 /* BuildSettings.swift */; }; - 32FD756824D2AD5100BA7B37 /* BuildSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD756324D2AD5100BA7B37 /* BuildSettings.swift */; }; - 32FD757024D2BEF700BA7B37 /* InfoPlist.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD756F24D2BEF700BA7B37 /* InfoPlist.swift */; }; - 32FD757124D2BEF700BA7B37 /* InfoPlist.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD756F24D2BEF700BA7B37 /* InfoPlist.swift */; }; - 32FD757224D2BEF700BA7B37 /* InfoPlist.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD756F24D2BEF700BA7B37 /* InfoPlist.swift */; }; - 32FD757324D2BEF700BA7B37 /* InfoPlist.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD756F24D2BEF700BA7B37 /* InfoPlist.swift */; }; - 32FD757424D2BEF700BA7B37 /* InfoPlist.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD756F24D2BEF700BA7B37 /* InfoPlist.swift */; }; - 32FD757624D2C9BA00BA7B37 /* Bundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD757524D2C9BA00BA7B37 /* Bundle.swift */; }; - 32FD757724D2C9BA00BA7B37 /* Bundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD757524D2C9BA00BA7B37 /* Bundle.swift */; }; - 32FD757824D2C9BA00BA7B37 /* Bundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD757524D2C9BA00BA7B37 /* Bundle.swift */; }; - 32FD757924D2C9BA00BA7B37 /* Bundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD757524D2C9BA00BA7B37 /* Bundle.swift */; }; - 32FD757A24D2C9BA00BA7B37 /* Bundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FD757524D2C9BA00BA7B37 /* Bundle.swift */; }; - 32FDC1CD2386CD390084717A /* RiotSettingIntegrationProvisioning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32FDC1CC2386CD390084717A /* RiotSettingIntegrationProvisioning.swift */; }; - 3AA7D00C2587FF0000420A72 /* EncryptionKeyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA7D00B2587FF0000420A72 /* EncryptionKeyManager.swift */; }; - 3AF393339D2D566CE14AC200 /* Pods_RiotTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 129EB7E27E7E4AC3F5F098F5 /* Pods_RiotTests.framework */; }; - 405FD41D306133A48D9B5AA1 /* Pods_RiotPods_Riot.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACF09217ADF1D7E7A35BC02 /* Pods_RiotPods_Riot.framework */; }; - 670966FEFE120D865FD8A5B6 /* Pods_RiotPods_SiriIntents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51187E952D5CECF6D6F5A28E /* Pods_RiotPods_SiriIntents.framework */; }; - 926FA53F1F4C132000F826C2 /* MXSession+Riot.m in Sources */ = {isa = PBXBuildFile; fileRef = 926FA53E1F4C132000F826C2 /* MXSession+Riot.m */; }; - 92726A471F58737A004AD26F /* IntentHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 92726A461F58737A004AD26F /* IntentHandler.m */; }; - 92726A4B1F58737A004AD26F /* SiriIntents.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 92726A431F58737A004AD26F /* SiriIntents.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - 92726A511F587410004AD26F /* Intents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92726A501F587410004AD26F /* Intents.framework */; }; - 933A7148CE5984940344006C /* Pods_RiotPods_RiotShareExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 97151D7F0F892081250D50A3 /* Pods_RiotPods_RiotShareExtension.framework */; }; - B1057789221304EC00334B1E /* KeyBackupSetupSuccessFromPassphraseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1057788221304EB00334B1E /* KeyBackupSetupSuccessFromPassphraseViewController.swift */; }; - B105778B221304FA00334B1E /* KeyBackupSetupSuccessFromPassphraseViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B105778A221304FA00334B1E /* KeyBackupSetupSuccessFromPassphraseViewController.storyboard */; }; - B105778D2213051E00334B1E /* KeyBackupSetupSuccessFromRecoveryKeyViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B105778C2213051E00334B1E /* KeyBackupSetupSuccessFromRecoveryKeyViewController.swift */; }; - B105778F2213052A00334B1E /* KeyBackupSetupSuccessFromRecoveryKeyViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B105778E2213052A00334B1E /* KeyBackupSetupSuccessFromRecoveryKeyViewController.storyboard */; }; - B108931F23AB80EF00802670 /* KeyVerificationIncomingRequestApprovalBubbleCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B108931E23AB80EF00802670 /* KeyVerificationIncomingRequestApprovalBubbleCell.swift */; }; - B108932123AB8D7D00802670 /* KeyVerificationIncomingRequestApprovalViewData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B108932023AB8D7D00802670 /* KeyVerificationIncomingRequestApprovalViewData.swift */; }; - B108932323AB908A00802670 /* KeyVerificationRequestStatusViewData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B108932223AB908A00802670 /* KeyVerificationRequestStatusViewData.swift */; }; - B108932523AB93A200802670 /* KeyVerificationConclusionViewData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B108932423AB93A200802670 /* KeyVerificationConclusionViewData.swift */; }; - B108932823ABEE6800802670 /* BubbleCellReadReceiptsDisplayable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B108932723ABEE6700802670 /* BubbleCellReadReceiptsDisplayable.swift */; }; - B1098BDF21ECE09F000DDA48 /* Strings.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1098BDA21ECE09E000DDA48 /* Strings.swift */; }; - B1098BE121ECE09F000DDA48 /* Images.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1098BDC21ECE09E000DDA48 /* Images.swift */; }; - B1098BE321ECE09F000DDA48 /* RiotDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1098BDE21ECE09E000DDA48 /* RiotDefaults.swift */; }; - B1098BE521ECE1FC000DDA48 /* Storyboards.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1098BE421ECE1FC000DDA48 /* Storyboards.swift */; }; - B1098BE821ECFE52000DDA48 /* Coordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1098BE721ECFE51000DDA48 /* Coordinator.swift */; }; - B1098BF621ECFE65000DDA48 /* KeyBackupSetupPassphraseCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1098BEA21ECFE64000DDA48 /* KeyBackupSetupPassphraseCoordinator.swift */; }; - B1098BF721ECFE65000DDA48 /* PasswordStrength.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1098BEB21ECFE64000DDA48 /* PasswordStrength.swift */; }; - B1098BF821ECFE65000DDA48 /* KeyBackupSetupPassphraseViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B1098BEC21ECFE64000DDA48 /* KeyBackupSetupPassphraseViewController.storyboard */; }; - B1098BF921ECFE65000DDA48 /* KeyBackupSetupCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1098BED21ECFE64000DDA48 /* KeyBackupSetupCoordinator.swift */; }; - B1098BFA21ECFE65000DDA48 /* KeyBackupSetupPassphraseViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1098BEE21ECFE64000DDA48 /* KeyBackupSetupPassphraseViewModel.swift */; }; - B1098BFB21ECFE65000DDA48 /* KeyBackupSetupCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1098BEF21ECFE64000DDA48 /* KeyBackupSetupCoordinatorType.swift */; }; - B1098BFC21ECFE65000DDA48 /* PasswordStrengthView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1098BF021ECFE64000DDA48 /* PasswordStrengthView.xib */; }; - B1098BFD21ECFE65000DDA48 /* PasswordStrengthManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1098BF121ECFE64000DDA48 /* PasswordStrengthManager.swift */; }; - B1098BFE21ECFE65000DDA48 /* KeyBackupSetupPassphraseViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1098BF221ECFE64000DDA48 /* KeyBackupSetupPassphraseViewModelType.swift */; }; - B1098BFF21ECFE65000DDA48 /* PasswordStrengthView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1098BF321ECFE64000DDA48 /* PasswordStrengthView.swift */; }; - B1098C0021ECFE65000DDA48 /* KeyBackupSetupPassphraseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1098BF421ECFE64000DDA48 /* KeyBackupSetupPassphraseViewController.swift */; }; - B1098C0121ECFE65000DDA48 /* KeyBackupSetupPassphraseCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1098BF521ECFE64000DDA48 /* KeyBackupSetupPassphraseCoordinatorType.swift */; }; - B1098C0D21ED07E4000DDA48 /* NavigationRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1098C0821ED07E4000DDA48 /* NavigationRouter.swift */; }; - B1098C1021ED07E4000DDA48 /* Presentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1098C0B21ED07E4000DDA48 /* Presentable.swift */; }; - B1098C1121ED07E4000DDA48 /* NavigationRouterType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1098C0C21ED07E4000DDA48 /* NavigationRouterType.swift */; }; - B109D6F1222D8C400061B6D9 /* UIApplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = B109D6F0222D8C400061B6D9 /* UIApplication.swift */; }; - B10A3E8E24FE4368007C380F /* ElementView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B10A3E8B24FE4367007C380F /* ElementView.swift */; }; - B10A3E8F24FE4368007C380F /* Timeline_1.swift in Sources */ = {isa = PBXBuildFile; fileRef = B10A3E8C24FE4367007C380F /* Timeline_1.swift */; }; - B10A3E9024FE4368007C380F /* ElementViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B10A3E8D24FE4367007C380F /* ElementViewController.swift */; }; - B10A3E9324FE8254007C380F /* AppCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B10A3E9124FE8254007C380F /* AppCoordinator.swift */; }; - B10A3E9424FE8254007C380F /* AppCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B10A3E9224FE8254007C380F /* AppCoordinatorType.swift */; }; - B10A3E9824FE86AF007C380F /* SplitViewCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B10A3E9624FE86AE007C380F /* SplitViewCoordinatorType.swift */; }; - B10A3E9924FE86AF007C380F /* SplitViewCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B10A3E9724FE86AF007C380F /* SplitViewCoordinator.swift */; }; - B10A3E9C24FE88CB007C380F /* RootRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B10A3E9A24FE88CA007C380F /* RootRouter.swift */; }; - B10A3E9D24FE88CB007C380F /* RootRouterType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B10A3E9B24FE88CB007C380F /* RootRouterType.swift */; }; - B10A3E9F24FFC3E6007C380F /* PlaceholderDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B10A3E9E24FFC3E5007C380F /* PlaceholderDetailViewController.swift */; }; - B10CFBC32268D99D00A5842E /* JitsiService.swift in Sources */ = {isa = PBXBuildFile; fileRef = B10CFBC22268D99D00A5842E /* JitsiService.swift */; }; - B1107EC82200B0720038014B /* KeyBackupRecoverSuccessViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1107EC72200B0720038014B /* KeyBackupRecoverSuccessViewController.swift */; }; - B1107ECA2200B09F0038014B /* KeyBackupRecoverSuccessViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B1107EC92200B09F0038014B /* KeyBackupRecoverSuccessViewController.storyboard */; }; - B110871D21F087F4003554A5 /* KeyBackupSetupPassphraseViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B110871C21F087F4003554A5 /* KeyBackupSetupPassphraseViewState.swift */; }; - B110872321F098F0003554A5 /* ActivityIndicatorPresenterType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B110871F21F098EF003554A5 /* ActivityIndicatorPresenterType.swift */; }; - B110872421F098F0003554A5 /* ActivityIndicatorView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B110872021F098EF003554A5 /* ActivityIndicatorView.xib */; }; - B110872521F098F0003554A5 /* ActivityIndicatorPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B110872121F098EF003554A5 /* ActivityIndicatorPresenter.swift */; }; - B110872621F098F0003554A5 /* ActivityIndicatorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B110872221F098F0003554A5 /* ActivityIndicatorView.swift */; }; - B11291EA238D35590077B478 /* SlidingModalPresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B11291E9238D35590077B478 /* SlidingModalPresentable.swift */; }; - B11291EC238D704C0077B478 /* FloatingPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = B11291EB238D704C0077B478 /* FloatingPoint.swift */; }; - B113DD3D255E876A0022942A /* JitsiWellKnown.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1E5EF9C2541C06000E8A883 /* JitsiWellKnown.swift */; }; - B120863722EF375F001F89E0 /* ReactionHistoryBridgeCoordinatorPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B120863622EF375F001F89E0 /* ReactionHistoryBridgeCoordinatorPresenter.swift */; }; - B124BBD725645F3F0028996D /* RoomIdComponents.swift in Sources */ = {isa = PBXBuildFile; fileRef = B124BBD625645F3F0028996D /* RoomIdComponents.swift */; }; - B125FE1B231D5BF200B72806 /* SettingsDiscoveryTableViewSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = B125FE1A231D5BF200B72806 /* SettingsDiscoveryTableViewSection.swift */; }; - B125FE1D231D5DE400B72806 /* SettingsDiscoveryViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B125FE1C231D5DE400B72806 /* SettingsDiscoveryViewModel.swift */; }; - B125FE1F231D5DF700B72806 /* SettingsDiscoveryViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B125FE1E231D5DF700B72806 /* SettingsDiscoveryViewModelType.swift */; }; - B125FE21231D5E1D00B72806 /* SettingsDiscoveryViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B125FE20231D5E1D00B72806 /* SettingsDiscoveryViewAction.swift */; }; - B125FE23231D5E4300B72806 /* SettingsDiscoveryViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B125FE22231D5E4300B72806 /* SettingsDiscoveryViewState.swift */; }; - B12676832523E4D100BE6B98 /* SecretsResetCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B126767B2523E4D100BE6B98 /* SecretsResetCoordinator.swift */; }; - B12676842523E4D100BE6B98 /* SecretsResetViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B126767C2523E4D100BE6B98 /* SecretsResetViewModelType.swift */; }; - B12676852523E4D100BE6B98 /* SecretsResetViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B126767D2523E4D100BE6B98 /* SecretsResetViewController.swift */; }; - B12676862523E4D100BE6B98 /* SecretsResetCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B126767E2523E4D100BE6B98 /* SecretsResetCoordinatorType.swift */; }; - B12676872523E4D100BE6B98 /* SecretsResetViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B126767F2523E4D100BE6B98 /* SecretsResetViewController.storyboard */; }; - B12676882523E4D100BE6B98 /* SecretsResetViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B12676802523E4D100BE6B98 /* SecretsResetViewState.swift */; }; - B12676892523E4D100BE6B98 /* SecretsResetViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B12676812523E4D100BE6B98 /* SecretsResetViewAction.swift */; }; - B126768A2523E4D100BE6B98 /* SecretsResetViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B12676822523E4D100BE6B98 /* SecretsResetViewModel.swift */; }; - B12742BA258C46DD00731DA6 /* SSOAuthentificationSessionProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = B12742B9258C46DC00731DA6 /* SSOAuthentificationSessionProtocol.swift */; }; - B12742BC258C472800731DA6 /* LegacySSOAuthentificationSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = B12742BB258C472800731DA6 /* LegacySSOAuthentificationSession.swift */; }; - B1284E3E2535FEA6003529D7 /* SecureBackupSetupIntroViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1284E3D2535FEA6003529D7 /* SecureBackupSetupIntroViewModelType.swift */; }; - B1284E402535FEBA003529D7 /* SecureBackupSetupIntroViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1284E3F2535FEBA003529D7 /* SecureBackupSetupIntroViewModel.swift */; }; - B12C56EF2396CB5E00FAC6DE /* RoomMessageURLParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = B12C56EE2396CB5E00FAC6DE /* RoomMessageURLParser.swift */; }; - B12D79FB23E2462200FACEDC /* UserVerificationStartCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B12D79F323E2462000FACEDC /* UserVerificationStartCoordinator.swift */; }; - B12D79FC23E2462200FACEDC /* UserVerificationStartViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B12D79F423E2462100FACEDC /* UserVerificationStartViewController.storyboard */; }; - B12D79FD23E2462200FACEDC /* UserVerificationStartViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B12D79F523E2462100FACEDC /* UserVerificationStartViewModelType.swift */; }; - B12D79FE23E2462200FACEDC /* UserVerificationStartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B12D79F623E2462100FACEDC /* UserVerificationStartViewController.swift */; }; - B12D79FF23E2462200FACEDC /* UserVerificationStartViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B12D79F723E2462100FACEDC /* UserVerificationStartViewState.swift */; }; - B12D7A0023E2462200FACEDC /* UserVerificationStartCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B12D79F823E2462200FACEDC /* UserVerificationStartCoordinatorType.swift */; }; - B12D7A0123E2462200FACEDC /* UserVerificationStartViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B12D79F923E2462200FACEDC /* UserVerificationStartViewModel.swift */; }; - B12D7A0223E2462200FACEDC /* UserVerificationStartViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B12D79FA23E2462200FACEDC /* UserVerificationStartViewAction.swift */; }; - B139C21B21FE5B9200BB68EC /* KeyBackupRecoverFromPassphraseViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B139C21A21FE5B9100BB68EC /* KeyBackupRecoverFromPassphraseViewModel.swift */; }; - B139C21D21FE5BF500BB68EC /* KeyBackupRecoverFromPassphraseViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B139C21C21FE5BF500BB68EC /* KeyBackupRecoverFromPassphraseViewModelType.swift */; }; - B139C21F21FE5D6600BB68EC /* KeyBackupRecoverFromPassphraseViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B139C21E21FE5D6600BB68EC /* KeyBackupRecoverFromPassphraseViewAction.swift */; }; - B139C22121FE5D9D00BB68EC /* KeyBackupRecoverFromPassphraseViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B139C22021FE5D9D00BB68EC /* KeyBackupRecoverFromPassphraseViewState.swift */; }; - B139C22321FF01B200BB68EC /* KeyBackupRecoverFromPassphraseCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B139C22221FF01B200BB68EC /* KeyBackupRecoverFromPassphraseCoordinatorType.swift */; }; - B139C22521FF01C100BB68EC /* KeyBackupRecoverFromPassphraseCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B139C22421FF01C100BB68EC /* KeyBackupRecoverFromPassphraseCoordinator.swift */; }; - B14084C623BF76890010F692 /* BubbleCellContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B14084C523BF76890010F692 /* BubbleCellContentView.swift */; }; - B14084C823BF76CB0010F692 /* BubbleCellContentView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B14084C723BF76CB0010F692 /* BubbleCellContentView.xib */; }; - B14084CA23BF89310010F692 /* KeyVerificationRequestStatusWithPaginationTitleBubbleCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B14084C923BF89310010F692 /* KeyVerificationRequestStatusWithPaginationTitleBubbleCell.swift */; }; - B14084CC23BF9DE90010F692 /* KeyVerificationConclusionWithPaginationTitleBubbleCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B14084CB23BF9DE90010F692 /* KeyVerificationConclusionWithPaginationTitleBubbleCell.swift */; }; - B14084CE23BFA0990010F692 /* KeyVerificationIncomingRequestApprovalWithPaginationTitleBubbleCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B14084CD23BFA0990010F692 /* KeyVerificationIncomingRequestApprovalWithPaginationTitleBubbleCell.swift */; }; - B140B4A221F87F7100E3F5FE /* OperationQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = B140B4A121F87F7100E3F5FE /* OperationQueue.swift */; }; - B140B4A621F89E7600E3F5FE /* KeyBackupSetupCoordinatorBridgePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B140B4A521F89E7600E3F5FE /* KeyBackupSetupCoordinatorBridgePresenter.swift */; }; - B140B4A821F8AB4600E3F5FE /* KeyBackupRecoverCoordinatorBridgePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B140B4A721F8AB4600E3F5FE /* KeyBackupRecoverCoordinatorBridgePresenter.swift */; }; - B142317A22CCFA2000FFA96A /* EditHistoryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B142317822CCFA2000FFA96A /* EditHistoryCell.swift */; }; - B142317B22CCFA2000FFA96A /* EditHistoryCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B142317922CCFA2000FFA96A /* EditHistoryCell.xib */; }; - B14EED19257992D700448735 /* SocialLoginListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B14EED18257992D600448735 /* SocialLoginListView.swift */; }; - B14EED1B2579933100448735 /* SocialLoginListView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B14EED1A2579933100448735 /* SocialLoginListView.xib */; }; - B14EED1D257D85E000448735 /* SocialLoginButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = B14EED1C257D85DF00448735 /* SocialLoginButton.swift */; }; - B14F142E22144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B14F142622144F6400FA0595 /* KeyBackupRecoverFromRecoveryKeyViewController.storyboard */; }; - B14F142F22144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B14F142722144F6400FA0595 /* KeyBackupRecoverFromRecoveryKeyViewModelType.swift */; }; - B14F143022144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B14F142822144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyCoordinatorType.swift */; }; - B14F143122144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B14F142922144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyViewState.swift */; }; - B14F143222144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B14F142A22144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyCoordinator.swift */; }; - B14F143322144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B14F142B22144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyViewModel.swift */; }; - B14F143422144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B14F142C22144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyViewAction.swift */; }; - B14F143522144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B14F142D22144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyViewController.swift */; }; - B152C73122DF561E0041315A /* EmojiServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B152C73022DF561E0041315A /* EmojiServiceTests.swift */; }; - B152C73522DF599C0041315A /* apple_emojis_data.json in Resources */ = {isa = PBXBuildFile; fileRef = B152C73422DF599B0041315A /* apple_emojis_data.json */; }; - B1550FCA2420E8F500CE097B /* QRCodeReaderViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B1550FC72420E8F400CE097B /* QRCodeReaderViewController.storyboard */; }; - B1550FCB2420E8F500CE097B /* QRCodeReaderViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1550FC82420E8F400CE097B /* QRCodeReaderViewController.swift */; }; - B1550FCC2420E8F500CE097B /* QRCodeGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1550FC92420E8F400CE097B /* QRCodeGenerator.swift */; }; - B1560DA224B65AFA00490F50 /* LaunchLoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1560DA124B65AFA00490F50 /* LaunchLoadingView.swift */; }; - B1560DA424B65B3700490F50 /* LaunchLoadingView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1560DA324B65B3700490F50 /* LaunchLoadingView.xib */; }; - B1562CE52541D113002F8436 /* JitsiWellKnownTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1562CE42541D113002F8436 /* JitsiWellKnownTests.swift */; }; - B1562CE72541DE25002F8436 /* JitsiAuthenticationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1562CE62541DE25002F8436 /* JitsiAuthenticationType.swift */; }; - B157FA9F23264AE900EBFBD4 /* SettingsDiscoveryThreePidDetailsCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B157FA9723264AE800EBFBD4 /* SettingsDiscoveryThreePidDetailsCoordinator.swift */; }; - B157FAA023264AE900EBFBD4 /* SettingsDiscoveryThreePidDetailsViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B157FA9823264AE800EBFBD4 /* SettingsDiscoveryThreePidDetailsViewModelType.swift */; }; - B157FAA123264AE900EBFBD4 /* SettingsDiscoveryThreePidDetailsCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B157FA9923264AE800EBFBD4 /* SettingsDiscoveryThreePidDetailsCoordinatorType.swift */; }; - B157FAA223264AE900EBFBD4 /* SettingsDiscoveryThreePidDetailsViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B157FA9A23264AE800EBFBD4 /* SettingsDiscoveryThreePidDetailsViewAction.swift */; }; - B157FAA323264AE900EBFBD4 /* SettingsDiscoveryThreePidDetailsViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B157FA9B23264AE800EBFBD4 /* SettingsDiscoveryThreePidDetailsViewState.swift */; }; - B157FAA423264AE900EBFBD4 /* SettingsDiscoveryThreePidDetailsViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B157FA9C23264AE800EBFBD4 /* SettingsDiscoveryThreePidDetailsViewController.storyboard */; }; - B157FAA523264AE900EBFBD4 /* SettingsDiscoveryThreePidDetailsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B157FA9D23264AE800EBFBD4 /* SettingsDiscoveryThreePidDetailsViewModel.swift */; }; - B157FAA623264AE900EBFBD4 /* SettingsDiscoveryThreePidDetailsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B157FA9E23264AE800EBFBD4 /* SettingsDiscoveryThreePidDetailsViewController.swift */; }; - B157FAA823264BED00EBFBD4 /* SettingsDiscoveryThreePidDetailsCoordinatorBridgePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B157FAA723264BED00EBFBD4 /* SettingsDiscoveryThreePidDetailsCoordinatorBridgePresenter.swift */; }; - B158253B2475350A00604D79 /* EventFormatter+DTCoreTextFix.m in Sources */ = {isa = PBXBuildFile; fileRef = B158253A2475350A00604D79 /* EventFormatter+DTCoreTextFix.m */; }; - B158E72125485B9E000A7F75 /* Base32Coder.swift in Sources */ = {isa = PBXBuildFile; fileRef = B158E72025485B9E000A7F75 /* Base32Coder.swift */; }; - B158E72325485EAB000A7F75 /* JitsiJWTTokenBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = B158E72225485EAB000A7F75 /* JitsiJWTTokenBuilder.swift */; }; - B1664BC520F4E67600808783 /* FallbackViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1664BAD20F4E67500808783 /* FallbackViewController.xib */; }; - B1664BC620F4E67600808783 /* FallbackViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1664BAE20F4E67500808783 /* FallbackViewController.m */; }; - B1664BC720F4E67600808783 /* SharePresentingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1664BB220F4E67500808783 /* SharePresentingViewController.m */; }; - B1664BC820F4E67600808783 /* ShareDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = B1664BB520F4E67500808783 /* ShareDataSource.m */; }; - B1664BC920F4E67600808783 /* ShareViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1664BB720F4E67500808783 /* ShareViewController.xib */; }; - B1664BCA20F4E67600808783 /* ShareViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1664BB820F4E67500808783 /* ShareViewController.m */; }; - B1664BCB20F4E67600808783 /* RoomsListViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1664BBA20F4E67500808783 /* RoomsListViewController.xib */; }; - B1664BCC20F4E67600808783 /* RoomsListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1664BBC20F4E67500808783 /* RoomsListViewController.m */; }; - B1664BCD20F4E67600808783 /* RecentRoomTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1664BBE20F4E67500808783 /* RecentRoomTableViewCell.m */; }; - B1664BCE20F4E67600808783 /* RecentRoomTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1664BBF20F4E67500808783 /* RecentRoomTableViewCell.xib */; }; - B1664BCF20F4E67600808783 /* ShareExtensionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B1664BC420F4E67600808783 /* ShareExtensionManager.m */; }; - B1664DA120F4F94F00808783 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = B1664D5720F4EBEC00808783 /* InfoPlist.strings */; }; - B1664DA220F4F95800808783 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = B1664D5920F4EBEC00808783 /* Localizable.strings */; }; - B1664DA320F4F96200808783 /* Vector.strings in Resources */ = {isa = PBXBuildFile; fileRef = B1664D5520F4EBEC00808783 /* Vector.strings */; }; - B1664DA420F4F96300808783 /* Vector.strings in Resources */ = {isa = PBXBuildFile; fileRef = B1664D5520F4EBEC00808783 /* Vector.strings */; }; - B169328320F38AE600746532 /* RiotSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B5597F20EFC3DF00210D55 /* RiotSettings.swift */; }; - B169328420F38BE300746532 /* SegmentedViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556D720EE6C4C00210D55 /* SegmentedViewController.m */; }; - B169328520F38BE800746532 /* SegmentedViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B556D620EE6C4C00210D55 /* SegmentedViewController.xib */; }; - B169328720F3954A00746532 /* SharedImages.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B169328620F3954A00746532 /* SharedImages.xcassets */; }; - B169328820F3954A00746532 /* SharedImages.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B169328620F3954A00746532 /* SharedImages.xcassets */; }; - B169329920F39E6300746532 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B169329320F39E6200746532 /* LaunchScreen.storyboard */; }; - B169329B20F39E6300746532 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B169329520F39E6300746532 /* Main.storyboard */; }; - B16932A520F3A21C00746532 /* empty.mm in Sources */ = {isa = PBXBuildFile; fileRef = B16932A220F3A21B00746532 /* empty.mm */; }; - B16932B120F3AC9200746532 /* RoomSearchDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = B16932AF20F3AC9200746532 /* RoomSearchDataSource.m */; }; - B16932E720F3C37100746532 /* HomeMessagesSearchDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = B16932E620F3C37100746532 /* HomeMessagesSearchDataSource.m */; }; - B16932EA20F3C39000746532 /* UnifiedSearchRecentsDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = B16932E920F3C39000746532 /* UnifiedSearchRecentsDataSource.m */; }; - B16932EE20F3C3C900746532 /* FilesSearchCellData.m in Sources */ = {isa = PBXBuildFile; fileRef = B16932EC20F3C3C800746532 /* FilesSearchCellData.m */; }; - B16932F220F3C49E00746532 /* GroupsDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = B16932F120F3C49E00746532 /* GroupsDataSource.m */; }; - B16932F720F3C50E00746532 /* RecentsDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = B16932F620F3C50E00746532 /* RecentsDataSource.m */; }; - B16932FA20F3C51A00746532 /* RecentCellData.m in Sources */ = {isa = PBXBuildFile; fileRef = B16932F920F3C51900746532 /* RecentCellData.m */; }; - B169330020F3C97D00746532 /* RoomDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = B16932FF20F3C97D00746532 /* RoomDataSource.m */; }; - B169330320F3C98900746532 /* RoomBubbleCellData.m in Sources */ = {isa = PBXBuildFile; fileRef = B169330120F3C98800746532 /* RoomBubbleCellData.m */; }; - B169330820F3CA0E00746532 /* ContactsDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = B169330620F3CA0D00746532 /* ContactsDataSource.m */; }; - B169330B20F3CA3A00746532 /* Contact.m in Sources */ = {isa = PBXBuildFile; fileRef = B169330A20F3CA3900746532 /* Contact.m */; }; - B169331420F3CAFC00746532 /* PublicRoomTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B169330E20F3CAFC00746532 /* PublicRoomTableViewCell.m */; }; - B169331520F3CAFC00746532 /* PublicRoomTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B169330F20F3CAFC00746532 /* PublicRoomTableViewCell.xib */; }; - B169331620F3CAFC00746532 /* PublicRoomsDirectoryDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = B169331220F3CAFC00746532 /* PublicRoomsDirectoryDataSource.m */; }; - B169331720F3CBE000746532 /* RecentCellData.m in Sources */ = {isa = PBXBuildFile; fileRef = B16932F920F3C51900746532 /* RecentCellData.m */; }; - B16C028D25A71CA3008CA7B1 /* CustomSchemeURLConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = B16C028C25A71CA3008CA7B1 /* CustomSchemeURLConstants.swift */; }; - B16D6354257D8FB0008BDC97 /* SocialLoginButtonFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = B16D6353257D8FB0008BDC97 /* SocialLoginButtonFactory.swift */; }; - B16DC22B2587DC35004DAB1A /* SSOAuthenticationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = B16DC22A2587DC35004DAB1A /* SSOAuthenticationService.swift */; }; - B16DC235258A723B004DAB1A /* SourceImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B16DC234258A723B004DAB1A /* SourceImage.swift */; }; - B16DC238258A7595004DAB1A /* SocialLoginButtonStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = B16DC237258A7595004DAB1A /* SocialLoginButtonStyle.swift */; }; - B16DC23A258A75B7004DAB1A /* SocialLoginButtonViewData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B16DC239258A75B7004DAB1A /* SocialLoginButtonViewData.swift */; }; - B16DC23C258A7D13004DAB1A /* ThemeService.swift in Sources */ = {isa = PBXBuildFile; fileRef = B16DC23B258A7D13004DAB1A /* ThemeService.swift */; }; - B16DC23E258A8025004DAB1A /* ThemeIdentifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = B16DC23D258A8025004DAB1A /* ThemeIdentifier.swift */; }; - B17982FF2119FED2001FD722 /* GDPRConsentViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B17982FE2119FED2001FD722 /* GDPRConsentViewController.swift */; }; - B1798302211B13B3001FD722 /* OnBoardingManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1798301211B13B3001FD722 /* OnBoardingManager.swift */; }; - B183226623F55D6B0035B2E8 /* CameraAccessManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B183226523F55D6B0035B2E8 /* CameraAccessManager.swift */; }; - B183226823F561380035B2E8 /* CameraAccessAlertPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B183226723F561380035B2E8 /* CameraAccessAlertPresenter.swift */; }; - B183226C23F59F810035B2E8 /* CloseButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = B183226B23F59F810035B2E8 /* CloseButton.swift */; }; - B185145524B7CFA700EE19EA /* AppVersion.swift in Sources */ = {isa = PBXBuildFile; fileRef = B185145424B7CFA700EE19EA /* AppVersion.swift */; }; - B185145B24B8C98200EE19EA /* MajorUpdateViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B185145A24B8C98200EE19EA /* MajorUpdateViewController.swift */; }; - B185145D24B8C9A400EE19EA /* MajorUpdateViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B185145C24B8C9A400EE19EA /* MajorUpdateViewController.storyboard */; }; - B18DEDD4243377C10075FEF7 /* KeyVerificationSelfVerifyWaitViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B18DEDCC243377C00075FEF7 /* KeyVerificationSelfVerifyWaitViewModelType.swift */; }; - B18DEDD5243377C10075FEF7 /* KeyVerificationSelfVerifyWaitViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B18DEDCD243377C00075FEF7 /* KeyVerificationSelfVerifyWaitViewModel.swift */; }; - B18DEDD6243377C10075FEF7 /* KeyVerificationSelfVerifyWaitCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B18DEDCE243377C00075FEF7 /* KeyVerificationSelfVerifyWaitCoordinator.swift */; }; - B18DEDD7243377C10075FEF7 /* KeyVerificationSelfVerifyWaitViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B18DEDCF243377C00075FEF7 /* KeyVerificationSelfVerifyWaitViewController.storyboard */; }; - B18DEDD8243377C10075FEF7 /* KeyVerificationSelfVerifyWaitCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B18DEDD0243377C00075FEF7 /* KeyVerificationSelfVerifyWaitCoordinatorType.swift */; }; - B18DEDD9243377C10075FEF7 /* KeyVerificationSelfVerifyWaitViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B18DEDD1243377C10075FEF7 /* KeyVerificationSelfVerifyWaitViewController.swift */; }; - B18DEDDA243377C10075FEF7 /* KeyVerificationSelfVerifyWaitViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B18DEDD2243377C10075FEF7 /* KeyVerificationSelfVerifyWaitViewState.swift */; }; - B18DEDDB243377C10075FEF7 /* KeyVerificationSelfVerifyWaitViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B18DEDD3243377C10075FEF7 /* KeyVerificationSelfVerifyWaitViewAction.swift */; }; - B18DEDDD2433967C0075FEF7 /* KeyVerificationFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = B18DEDDC2433967C0075FEF7 /* KeyVerificationFlow.swift */; }; - B190F55922CE356800AEB493 /* EditHistoryHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B190F55822CE356800AEB493 /* EditHistoryHeaderView.swift */; }; - B190F55B22CE35FD00AEB493 /* EditHistoryHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B190F55A22CE35FD00AEB493 /* EditHistoryHeaderView.xib */; }; - B190F55D22CE5A9700AEB493 /* EditHistorySection.swift in Sources */ = {isa = PBXBuildFile; fileRef = B190F55C22CE5A9600AEB493 /* EditHistorySection.swift */; }; - B1945CC4258A81FB0020D8D6 /* ThemeService.swift in Sources */ = {isa = PBXBuildFile; fileRef = B16DC23B258A7D13004DAB1A /* ThemeService.swift */; }; - B1945CC5258A81FE0020D8D6 /* ThemeIdentifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = B16DC23D258A8025004DAB1A /* ThemeIdentifier.swift */; }; - B1945CC9258C04F30020D8D6 /* SSOAuthenticationPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1945CC8258C04F20020D8D6 /* SSOAuthenticationPresenter.swift */; }; - B1945CCB258C24500020D8D6 /* SSOAuthentificationSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1945CCA258C244F0020D8D6 /* SSOAuthentificationSession.swift */; }; - B1963B2B228F1C4900CBA17F /* BubbleReactionsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1963B25228F1C4800CBA17F /* BubbleReactionsView.swift */; }; - B1963B2C228F1C4900CBA17F /* BubbleReactionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1963B26228F1C4800CBA17F /* BubbleReactionViewCell.xib */; }; - B1963B2D228F1C4900CBA17F /* BubbleReactionsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1963B27228F1C4800CBA17F /* BubbleReactionsViewModel.swift */; }; - B1963B2E228F1C4900CBA17F /* BubbleReactionViewData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1963B28228F1C4800CBA17F /* BubbleReactionViewData.swift */; }; - B1963B2F228F1C4900CBA17F /* BubbleReactionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1963B29228F1C4800CBA17F /* BubbleReactionViewCell.swift */; }; - B1963B30228F1C4900CBA17F /* BubbleReactionsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1963B2A228F1C4800CBA17F /* BubbleReactionsView.xib */; }; - B1963B32228F1C6B00CBA17F /* BubbleReactionsViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1963B31228F1C6B00CBA17F /* BubbleReactionsViewModelType.swift */; }; - B1963B3822933BC800CBA17F /* AutosizedCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1963B3722933BC800CBA17F /* AutosizedCollectionView.swift */; }; - B197B7C6243DE947005ABBF3 /* EncryptionTrustLevelBadgeImageHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = B197B7C5243DE947005ABBF3 /* EncryptionTrustLevelBadgeImageHelper.swift */; }; - B19EFA3921F8BB2C00FC070E /* KeyBackupRecoverCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B19EFA3821F8BB2C00FC070E /* KeyBackupRecoverCoordinatorType.swift */; }; - B19EFA3B21F8BB4100FC070E /* KeyBackupRecoverCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B19EFA3A21F8BB4100FC070E /* KeyBackupRecoverCoordinator.swift */; }; - B1A15BD425A4BAA800BDCA36 /* CustomSchemeURLParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1A15BD325A4BAA800BDCA36 /* CustomSchemeURLParser.swift */; }; - B1A15BD625A526A200BDCA36 /* URLComponents.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1A15BD525A526A200BDCA36 /* URLComponents.swift */; }; - B1A15BD925A6652800BDCA36 /* DeepLinkOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1A15BD825A6652800BDCA36 /* DeepLinkOption.swift */; }; - B1A15BDB25A6680E00BDCA36 /* SSOURLConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1A15BDA25A6680E00BDCA36 /* SSOURLConstants.swift */; }; - B1A5B33E227ADF2A004CBA85 /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1A5B33D227ADF2A004CBA85 /* UIImage.swift */; }; - B1A67946257559CF00BB0C69 /* RootTabEmptyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B11F4D2025681500009F1586 /* RootTabEmptyView.swift */; }; - B1A67947257559D500BB0C69 /* RootTabEmptyView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B11F4D1E256814E5009F1586 /* RootTabEmptyView.xib */; }; - B1A6805424B7C65200E312CC /* MajorUpdateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1A6805324B7C65200E312CC /* MajorUpdateManager.swift */; }; - B1A68593229E807A00D6C09A /* RoomBubbleCellLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1A68592229E807800D6C09A /* RoomBubbleCellLayout.swift */; }; - B1A6C10723881EF2002882FD /* SlidingModalPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1A6C10623881EF2002882FD /* SlidingModalPresenter.swift */; }; - B1A6C109238828A6002882FD /* SlidingModalPresentationDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1A6C108238828A6002882FD /* SlidingModalPresentationDelegate.swift */; }; - B1A6C10B23882B6C002882FD /* SlidingModalPresentationAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1A6C10A23882B6C002882FD /* SlidingModalPresentationAnimator.swift */; }; - B1A6C10D23882D1D002882FD /* SlidingModalPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1A6C10C23882D1D002882FD /* SlidingModalPresentationController.swift */; }; - B1A6C111238BD236002882FD /* SlidingModalContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1A6C110238BD236002882FD /* SlidingModalContainerView.swift */; }; - B1A6C113238BD245002882FD /* SlidingModalContainerView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1A6C112238BD245002882FD /* SlidingModalContainerView.xib */; }; - B1B12B2922942315002CB419 /* UITouch.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B12B2822942315002CB419 /* UITouch.swift */; }; - B1B336BE242B933700F95EC4 /* KeyVerificationSelfVerifyStartViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B336B6242B933300F95EC4 /* KeyVerificationSelfVerifyStartViewState.swift */; }; - B1B336BF242B933700F95EC4 /* KeyVerificationSelfVerifyStartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B336B7242B933300F95EC4 /* KeyVerificationSelfVerifyStartViewController.swift */; }; - B1B336C0242B933700F95EC4 /* KeyVerificationSelfVerifyStartViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B336B8242B933400F95EC4 /* KeyVerificationSelfVerifyStartViewModelType.swift */; }; - B1B336C1242B933700F95EC4 /* KeyVerificationSelfVerifyStartCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B336B9242B933500F95EC4 /* KeyVerificationSelfVerifyStartCoordinatorType.swift */; }; - B1B336C2242B933700F95EC4 /* KeyVerificationSelfVerifyStartViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B1B336BA242B933500F95EC4 /* KeyVerificationSelfVerifyStartViewController.storyboard */; }; - B1B336C3242B933700F95EC4 /* KeyVerificationSelfVerifyStartCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B336BB242B933500F95EC4 /* KeyVerificationSelfVerifyStartCoordinator.swift */; }; - B1B336C4242B933700F95EC4 /* KeyVerificationSelfVerifyStartViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B336BC242B933600F95EC4 /* KeyVerificationSelfVerifyStartViewAction.swift */; }; - B1B336C5242B933700F95EC4 /* KeyVerificationSelfVerifyStartViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B336BD242B933600F95EC4 /* KeyVerificationSelfVerifyStartViewModel.swift */; }; - B1B4E9B924D46EB3004D5C33 /* SizingViewHeight.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B4E9B624D46EB3004D5C33 /* SizingViewHeight.swift */; }; - B1B4E9BA24D46EB4004D5C33 /* SizableBubbleCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B4E9B724D46EB3004D5C33 /* SizableBubbleCell.swift */; }; - B1B4E9BB24D46EB4004D5C33 /* SizingViewHeightStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B4E9B824D46EB3004D5C33 /* SizingViewHeightStore.swift */; }; - B1B4E9BD24D4701F004D5C33 /* BubbleCellReactionsDisplayable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B4E9BC24D4701F004D5C33 /* BubbleCellReactionsDisplayable.swift */; }; - B1B4E9BF24D4703E004D5C33 /* BaseBubbleCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B4E9BE24D4703E004D5C33 /* BaseBubbleCell.swift */; }; - B1B4E9C224D471FD004D5C33 /* BubbleReactionsViewSizer.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B4E9C024D471FD004D5C33 /* BubbleReactionsViewSizer.m */; }; - B1B4E9C424D47207004D5C33 /* BubbleReactionsViewModelBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B4E9C324D47206004D5C33 /* BubbleReactionsViewModelBuilder.swift */; }; - B1B5571820EE6C4D00210D55 /* CountryPickerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5567A20EE6C4C00210D55 /* CountryPickerViewController.m */; }; - B1B5571920EE6C4D00210D55 /* LanguagePickerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5567C20EE6C4C00210D55 /* LanguagePickerViewController.m */; }; - B1B5571A20EE6C4D00210D55 /* SettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5567E20EE6C4C00210D55 /* SettingsViewController.m */; }; - B1B5571B20EE6C4D00210D55 /* DeactivateAccountViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5568120EE6C4C00210D55 /* DeactivateAccountViewController.m */; }; - B1B5571C20EE6C4D00210D55 /* DeactivateAccountViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B1B5568320EE6C4C00210D55 /* DeactivateAccountViewController.storyboard */; }; - B1B5571D20EE6C4D00210D55 /* HomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5568520EE6C4C00210D55 /* HomeViewController.m */; }; - B1B5571E20EE6C4D00210D55 /* ContactDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5568820EE6C4C00210D55 /* ContactDetailsViewController.m */; }; - B1B5571F20EE6C4D00210D55 /* ContactDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5568A20EE6C4C00210D55 /* ContactDetailsViewController.xib */; }; - B1B5572020EE6C4D00210D55 /* ContactsTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5568C20EE6C4C00210D55 /* ContactsTableViewController.m */; }; - B1B5572120EE6C4D00210D55 /* ContactsTableViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5568D20EE6C4C00210D55 /* ContactsTableViewController.xib */; }; - B1B5572220EE6C4D00210D55 /* RoomSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5569220EE6C4C00210D55 /* RoomSettingsViewController.m */; }; - B1B5572320EE6C4D00210D55 /* AttachmentsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5569520EE6C4C00210D55 /* AttachmentsViewController.m */; }; - B1B5572420EE6C4D00210D55 /* RoomViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5569620EE6C4C00210D55 /* RoomViewController.xib */; }; - B1B5572520EE6C4D00210D55 /* RoomMessagesSearchViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5569A20EE6C4C00210D55 /* RoomMessagesSearchViewController.m */; }; - B1B5572620EE6C4D00210D55 /* RoomFilesSearchViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5569E20EE6C4C00210D55 /* RoomFilesSearchViewController.m */; }; - B1B5572720EE6C4D00210D55 /* RoomSearchViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5569F20EE6C4C00210D55 /* RoomSearchViewController.m */; }; - B1B5572820EE6C4D00210D55 /* RoomViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556A020EE6C4C00210D55 /* RoomViewController.m */; }; - B1B5572920EE6C4D00210D55 /* RoomFilesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556A220EE6C4C00210D55 /* RoomFilesViewController.m */; }; - B1B5572A20EE6C4D00210D55 /* RoomMemberDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556A820EE6C4C00210D55 /* RoomMemberDetailsViewController.m */; }; - B1B5572B20EE6C4D00210D55 /* RoomMemberDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B556A920EE6C4C00210D55 /* RoomMemberDetailsViewController.xib */; }; - B1B5572C20EE6C4D00210D55 /* RoomParticipantsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556AA20EE6C4C00210D55 /* RoomParticipantsViewController.m */; }; - B1B5572D20EE6C4D00210D55 /* RoomParticipantsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B556AB20EE6C4C00210D55 /* RoomParticipantsViewController.xib */; }; - B1B5572E20EE6C4D00210D55 /* ReadReceiptsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B556AE20EE6C4C00210D55 /* ReadReceiptsViewController.xib */; }; - B1B5572F20EE6C4D00210D55 /* ReadReceiptsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556AF20EE6C4C00210D55 /* ReadReceiptsViewController.m */; }; - B1B5573020EE6C4D00210D55 /* BugReportViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B556B120EE6C4C00210D55 /* BugReportViewController.xib */; }; - B1B5573120EE6C4D00210D55 /* BugReportViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556B320EE6C4C00210D55 /* BugReportViewController.m */; }; - B1B5573220EE6C4D00210D55 /* GroupHomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556B720EE6C4C00210D55 /* GroupHomeViewController.m */; }; - B1B5573320EE6C4D00210D55 /* GroupHomeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B556B820EE6C4C00210D55 /* GroupHomeViewController.xib */; }; - B1B5573420EE6C4D00210D55 /* GroupDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B556BB20EE6C4C00210D55 /* GroupDetailsViewController.xib */; }; - B1B5573520EE6C4D00210D55 /* GroupDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556BD20EE6C4C00210D55 /* GroupDetailsViewController.m */; }; - B1B5573620EE6C4D00210D55 /* GroupsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556BE20EE6C4C00210D55 /* GroupsViewController.m */; }; - B1B5573720EE6C4D00210D55 /* GroupParticipantsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B556C020EE6C4C00210D55 /* GroupParticipantsViewController.xib */; }; - B1B5573820EE6C4D00210D55 /* GroupParticipantsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556C120EE6C4C00210D55 /* GroupParticipantsViewController.m */; }; - B1B5573920EE6C4D00210D55 /* GroupRoomsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B556C520EE6C4C00210D55 /* GroupRoomsViewController.xib */; }; - B1B5573A20EE6C4D00210D55 /* GroupRoomsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556C620EE6C4C00210D55 /* GroupRoomsViewController.m */; }; - B1B5573B20EE6C4D00210D55 /* FavouritesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556C920EE6C4C00210D55 /* FavouritesViewController.m */; }; - B1B5573C20EE6C4D00210D55 /* MasterTabBarController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556CC20EE6C4C00210D55 /* MasterTabBarController.m */; }; - B1B5573D20EE6C4D00210D55 /* WebViewViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556D020EE6C4C00210D55 /* WebViewViewController.m */; }; - B1B5573E20EE6C4D00210D55 /* RiotNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556D320EE6C4C00210D55 /* RiotNavigationController.m */; }; - B1B5573F20EE6C4D00210D55 /* SegmentedViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B556D620EE6C4C00210D55 /* SegmentedViewController.xib */; }; - B1B5574020EE6C4D00210D55 /* SegmentedViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556D720EE6C4C00210D55 /* SegmentedViewController.m */; }; - B1B5574120EE6C4D00210D55 /* RecentsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556D920EE6C4C00210D55 /* RecentsViewController.m */; }; - B1B5574220EE6C4D00210D55 /* RecentsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B556DA20EE6C4C00210D55 /* RecentsViewController.xib */; }; - B1B5574320EE6C4D00210D55 /* CallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B556DE20EE6C4C00210D55 /* CallViewController.xib */; }; - B1B5574420EE6C4D00210D55 /* CallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556DF20EE6C4C00210D55 /* CallViewController.m */; }; - B1B5574520EE6C4D00210D55 /* StartChatViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556E220EE6C4C00210D55 /* StartChatViewController.m */; }; - B1B5574620EE6C4D00210D55 /* StartChatViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B556E320EE6C4C00210D55 /* StartChatViewController.xib */; }; - B1B5574720EE6C4D00210D55 /* UsersDevicesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556E520EE6C4C00210D55 /* UsersDevicesViewController.m */; }; - B1B5574820EE6C4D00210D55 /* PeopleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556E820EE6C4C00210D55 /* PeopleViewController.m */; }; - B1B5574920EE6C4D00210D55 /* RiotSplitViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556EB20EE6C4C00210D55 /* RiotSplitViewController.m */; }; - B1B5574A20EE6C4D00210D55 /* MediaPickerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556EF20EE6C4C00210D55 /* MediaPickerViewController.m */; }; - B1B5574B20EE6C4D00210D55 /* MediaAlbumContentViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556F020EE6C4C00210D55 /* MediaAlbumContentViewController.m */; }; - B1B5574C20EE6C4D00210D55 /* MediaAlbumContentViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B556F120EE6C4C00210D55 /* MediaAlbumContentViewController.xib */; }; - B1B5574D20EE6C4D00210D55 /* MediaPickerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B556F220EE6C4C00210D55 /* MediaPickerViewController.xib */; }; - B1B5574E20EE6C4D00210D55 /* DirectoryServerPickerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556F720EE6C4C00210D55 /* DirectoryServerPickerViewController.m */; }; - B1B5574F20EE6C4D00210D55 /* RoomsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556F820EE6C4C00210D55 /* RoomsViewController.m */; }; - B1B5575020EE6C4D00210D55 /* AuthenticationViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B556FB20EE6C4C00210D55 /* AuthenticationViewController.xib */; }; - B1B5575120EE6C4D00210D55 /* AuthenticationViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556FC20EE6C4C00210D55 /* AuthenticationViewController.m */; }; - B1B5575220EE6C4D00210D55 /* RoomKeyRequestViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B556FE20EE6C4C00210D55 /* RoomKeyRequestViewController.m */; }; - B1B5575920EE6C4D00210D55 /* HomeMessagesSearchViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5570F20EE6C4C00210D55 /* HomeMessagesSearchViewController.m */; }; - B1B5575A20EE6C4D00210D55 /* UnifiedSearchViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5571120EE6C4C00210D55 /* UnifiedSearchViewController.m */; }; - B1B5575B20EE6C4D00210D55 /* HomeFilesSearchViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5571420EE6C4C00210D55 /* HomeFilesSearchViewController.m */; }; - B1B5575C20EE6C4D00210D55 /* DirectoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5571620EE6C4C00210D55 /* DirectoryViewController.m */; }; - B1B5576F20EE702800210D55 /* IntegrationManagerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5576020EE702800210D55 /* IntegrationManagerViewController.m */; }; - B1B5577020EE702800210D55 /* WidgetPickerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5576220EE702800210D55 /* WidgetPickerViewController.m */; }; - B1B5577120EE702800210D55 /* StickerPickerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5576820EE702800210D55 /* StickerPickerViewController.m */; }; - B1B5577220EE702800210D55 /* JitsiViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5576B20EE702800210D55 /* JitsiViewController.xib */; }; - B1B5577320EE702800210D55 /* JitsiViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5576C20EE702800210D55 /* JitsiViewController.m */; }; - B1B5577420EE702900210D55 /* WidgetViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5576D20EE702800210D55 /* WidgetViewController.m */; }; - B1B5577D20EE84BF00210D55 /* CircleButton.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5577B20EE84BE00210D55 /* CircleButton.m */; }; - B1B5577E20EE84BF00210D55 /* IncomingCallView.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5577C20EE84BF00210D55 /* IncomingCallView.m */; }; - B1B5578520EF564900210D55 /* GroupTableViewCellWithSwitch.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5578320EF564900210D55 /* GroupTableViewCellWithSwitch.xib */; }; - B1B5578620EF564900210D55 /* GroupTableViewCellWithSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5578420EF564900210D55 /* GroupTableViewCellWithSwitch.m */; }; - B1B5578E20EF568D00210D55 /* GroupInviteTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5578820EF568D00210D55 /* GroupInviteTableViewCell.xib */; }; - B1B5578F20EF568D00210D55 /* GroupTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5578920EF568D00210D55 /* GroupTableViewCell.m */; }; - B1B5579020EF568D00210D55 /* GroupTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5578A20EF568D00210D55 /* GroupTableViewCell.xib */; }; - B1B5579120EF568D00210D55 /* GroupInviteTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5578B20EF568D00210D55 /* GroupInviteTableViewCell.m */; }; - B1B5579920EF575B00210D55 /* AuthInputsView.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5579320EF575A00210D55 /* AuthInputsView.m */; }; - B1B5579A20EF575B00210D55 /* ForgotPasswordInputsView.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5579420EF575A00210D55 /* ForgotPasswordInputsView.m */; }; - B1B5579B20EF575B00210D55 /* AuthInputsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5579620EF575A00210D55 /* AuthInputsView.xib */; }; - B1B5579C20EF575B00210D55 /* ForgotPasswordInputsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5579820EF575A00210D55 /* ForgotPasswordInputsView.xib */; }; - B1B557A120EF58AD00210D55 /* ContactTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5579E20EF58AC00210D55 /* ContactTableViewCell.m */; }; - B1B557A220EF58AD00210D55 /* ContactTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5579F20EF58AC00210D55 /* ContactTableViewCell.xib */; }; - B1B557A720EF5A1B00210D55 /* DeviceTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B557A520EF5A1B00210D55 /* DeviceTableViewCell.xib */; }; - B1B557A820EF5A1B00210D55 /* DeviceTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B557A620EF5A1B00210D55 /* DeviceTableViewCell.m */; }; - B1B557AC20EF5A6D00210D55 /* DeviceView.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B557AA20EF5A6C00210D55 /* DeviceView.m */; }; - B1B557AD20EF5A6D00210D55 /* DeviceView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B557AB20EF5A6C00210D55 /* DeviceView.xib */; }; - B1B557B320EF5AEF00210D55 /* EventDetailsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B557B120EF5AEF00210D55 /* EventDetailsView.xib */; }; - B1B557B420EF5AEF00210D55 /* EventDetailsView.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B557B220EF5AEF00210D55 /* EventDetailsView.m */; }; - B1B557BD20EF5B4500210D55 /* KeyboardGrowingTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B557B620EF5B4400210D55 /* KeyboardGrowingTextView.m */; }; - B1B557BE20EF5B4500210D55 /* RoomInputToolbarView.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B557B720EF5B4400210D55 /* RoomInputToolbarView.m */; }; - B1B557BF20EF5B4500210D55 /* DisabledRoomInputToolbarView.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B557B820EF5B4400210D55 /* DisabledRoomInputToolbarView.m */; }; - B1B557C020EF5B4500210D55 /* RoomInputToolbarView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B557B920EF5B4400210D55 /* RoomInputToolbarView.xib */; }; - B1B557C120EF5B4500210D55 /* DisabledRoomInputToolbarView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B557BA20EF5B4400210D55 /* DisabledRoomInputToolbarView.xib */; }; - B1B557C620EF5CD400210D55 /* DirectoryServerDetailTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B557C420EF5CD400210D55 /* DirectoryServerDetailTableViewCell.m */; }; - B1B557C720EF5CD400210D55 /* DirectoryServerDetailTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B557C520EF5CD400210D55 /* DirectoryServerDetailTableViewCell.xib */; }; - B1B557CB20EF5D8000210D55 /* DirectoryServerTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B557C920EF5D7F00210D55 /* DirectoryServerTableViewCell.xib */; }; - B1B557CC20EF5D8000210D55 /* DirectoryServerTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B557CA20EF5D7F00210D55 /* DirectoryServerTableViewCell.m */; }; - B1B557D120EF5E3500210D55 /* MediaAlbumTableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B557CE20EF5E3500210D55 /* MediaAlbumTableCell.m */; }; - B1B557D220EF5E3500210D55 /* MediaAlbumTableCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B557D020EF5E3500210D55 /* MediaAlbumTableCell.xib */; }; - B1B557D720EF5EA900210D55 /* RoomActivitiesView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B557D520EF5EA900210D55 /* RoomActivitiesView.xib */; }; - B1B557D820EF5EA900210D55 /* RoomActivitiesView.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B557D620EF5EA900210D55 /* RoomActivitiesView.m */; }; - B1B557DD20EF5FBB00210D55 /* FilesSearchTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B557DA20EF5FBA00210D55 /* FilesSearchTableViewCell.xib */; }; - B1B557DE20EF5FBB00210D55 /* FilesSearchTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B557DC20EF5FBA00210D55 /* FilesSearchTableViewCell.m */; }; - B1B557E320EF60B900210D55 /* MessagesSearchResultAttachmentBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B557E020EF60B900210D55 /* MessagesSearchResultAttachmentBubbleCell.m */; }; - B1B557E420EF60B900210D55 /* MessagesSearchResultAttachmentBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B557E120EF60B900210D55 /* MessagesSearchResultAttachmentBubbleCell.xib */; }; - B1B557E820EF60F500210D55 /* MessagesSearchResultTextMsgBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B557E520EF60F400210D55 /* MessagesSearchResultTextMsgBubbleCell.xib */; }; - B1B557E920EF60F500210D55 /* MessagesSearchResultTextMsgBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B557E620EF60F400210D55 /* MessagesSearchResultTextMsgBubbleCell.m */; }; - B1B5581720EF625800210D55 /* PreviewRoomTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5580620EF625600210D55 /* PreviewRoomTitleView.m */; }; - B1B5581820EF625800210D55 /* PreviewRoomTitleView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5580720EF625600210D55 /* PreviewRoomTitleView.xib */; }; - B1B5581920EF625800210D55 /* RoomTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5580820EF625600210D55 /* RoomTitleView.m */; }; - B1B5581A20EF625800210D55 /* ExpandedRoomTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5580A20EF625600210D55 /* ExpandedRoomTitleView.m */; }; - B1B5581B20EF625800210D55 /* ExpandedRoomTitleView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5580B20EF625600210D55 /* ExpandedRoomTitleView.xib */; }; - B1B5581C20EF625800210D55 /* RoomAvatarTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5580F20EF625700210D55 /* RoomAvatarTitleView.m */; }; - B1B5581D20EF625800210D55 /* RoomAvatarTitleView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5581020EF625700210D55 /* RoomAvatarTitleView.xib */; }; - B1B5581E20EF625800210D55 /* RoomTitleView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5581120EF625700210D55 /* RoomTitleView.xib */; }; - B1B5581F20EF625800210D55 /* SimpleRoomTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5581320EF625700210D55 /* SimpleRoomTitleView.m */; }; - B1B5582020EF625800210D55 /* SimpleRoomTitleView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5581420EF625700210D55 /* SimpleRoomTitleView.xib */; }; - B1B5582520EF638A00210D55 /* RoomMemberTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5582220EF638A00210D55 /* RoomMemberTitleView.m */; }; - B1B5582620EF638A00210D55 /* RoomMemberTitleView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5582320EF638A00210D55 /* RoomMemberTitleView.xib */; }; - B1B5582B20EF666100210D55 /* DirectoryRecentTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5582820EF666100210D55 /* DirectoryRecentTableViewCell.xib */; }; - B1B5582C20EF666100210D55 /* DirectoryRecentTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5582A20EF666100210D55 /* DirectoryRecentTableViewCell.m */; }; - B1B5583020EF66BA00210D55 /* RoomIdOrAliasTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5582E20EF66BA00210D55 /* RoomIdOrAliasTableViewCell.xib */; }; - B1B5583120EF66BA00210D55 /* RoomIdOrAliasTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5582F20EF66BA00210D55 /* RoomIdOrAliasTableViewCell.m */; }; - B1B5583D20EF6E7F00210D55 /* GroupRoomTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5583A20EF6E7F00210D55 /* GroupRoomTableViewCell.xib */; }; - B1B5583E20EF6E7F00210D55 /* GroupRoomTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5583B20EF6E7F00210D55 /* GroupRoomTableViewCell.m */; }; - B1B558BB20EF768F00210D55 /* RoomOutgoingTextMsgWithoutSenderInfoBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5584020EF768E00210D55 /* RoomOutgoingTextMsgWithoutSenderInfoBubbleCell.xib */; }; - B1B558BC20EF768F00210D55 /* RoomMembershipBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5584120EF768E00210D55 /* RoomMembershipBubbleCell.xib */; }; - B1B558BD20EF768F00210D55 /* RoomOutgoingEncryptedTextMsgWithoutSenderNameBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5584620EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithoutSenderNameBubbleCell.m */; }; - B1B558BE20EF768F00210D55 /* RoomOutgoingEncryptedAttachmentWithPaginationTitleBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5584720EF768E00210D55 /* RoomOutgoingEncryptedAttachmentWithPaginationTitleBubbleCell.m */; }; - B1B558BF20EF768F00210D55 /* RoomOutgoingEncryptedTextMsgWithoutSenderNameBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5584820EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithoutSenderNameBubbleCell.xib */; }; - B1B558C020EF768F00210D55 /* RoomIncomingEncryptedTextMsgWithoutSenderInfoBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5584920EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithoutSenderInfoBubbleCell.xib */; }; - B1B558C120EF768F00210D55 /* RoomIncomingEncryptedAttachmentWithPaginationTitleBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5584C20EF768E00210D55 /* RoomIncomingEncryptedAttachmentWithPaginationTitleBubbleCell.m */; }; - B1B558C220EF768F00210D55 /* RoomIncomingEncryptedTextMsgBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5584F20EF768E00210D55 /* RoomIncomingEncryptedTextMsgBubbleCell.xib */; }; - B1B558C320EF768F00210D55 /* RoomIncomingEncryptedTextMsgWithoutSenderNameBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5585020EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithoutSenderNameBubbleCell.m */; }; - B1B558C420EF768F00210D55 /* RoomIncomingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5585220EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m */; }; - B1B558C520EF768F00210D55 /* RoomOutgoingEncryptedTextMsgBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5585320EF768E00210D55 /* RoomOutgoingEncryptedTextMsgBubbleCell.xib */; }; - B1B558C620EF768F00210D55 /* RoomIncomingEncryptedAttachmentBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5585420EF768E00210D55 /* RoomIncomingEncryptedAttachmentBubbleCell.xib */; }; - B1B558C720EF768F00210D55 /* RoomOutgoingEncryptedTextMsgWithPaginationTitleBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5585520EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithPaginationTitleBubbleCell.m */; }; - B1B558C820EF768F00210D55 /* RoomIncomingEncryptedAttachmentBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5585620EF768E00210D55 /* RoomIncomingEncryptedAttachmentBubbleCell.m */; }; - B1B558C920EF768F00210D55 /* RoomIncomingEncryptedAttachmentWithoutSenderInfoBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5585820EF768E00210D55 /* RoomIncomingEncryptedAttachmentWithoutSenderInfoBubbleCell.m */; }; - B1B558CA20EF768F00210D55 /* RoomOutgoingEncryptedAttachmentWithoutSenderInfoBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5585920EF768E00210D55 /* RoomOutgoingEncryptedAttachmentWithoutSenderInfoBubbleCell.xib */; }; - B1B558CB20EF768F00210D55 /* RoomIncomingEncryptedTextMsgWithoutSenderInfoBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5585A20EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithoutSenderInfoBubbleCell.m */; }; - B1B558CC20EF768F00210D55 /* RoomOutgoingEncryptedAttachmentWithoutSenderInfoBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5585B20EF768E00210D55 /* RoomOutgoingEncryptedAttachmentWithoutSenderInfoBubbleCell.m */; }; - B1B558CD20EF768F00210D55 /* RoomOutgoingEncryptedAttachmentWithPaginationTitleBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5585C20EF768E00210D55 /* RoomOutgoingEncryptedAttachmentWithPaginationTitleBubbleCell.xib */; }; - B1B558CE20EF768F00210D55 /* RoomOutgoingEncryptedAttachmentBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5585F20EF768E00210D55 /* RoomOutgoingEncryptedAttachmentBubbleCell.m */; }; - B1B558CF20EF768F00210D55 /* RoomIncomingEncryptedTextMsgWithPaginationTitleBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5586020EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithPaginationTitleBubbleCell.m */; }; - B1B558D020EF768F00210D55 /* RoomOutgoingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5586120EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m */; }; - B1B558D120EF768F00210D55 /* RoomIncomingEncryptedAttachmentWithoutSenderInfoBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5586220EF768E00210D55 /* RoomIncomingEncryptedAttachmentWithoutSenderInfoBubbleCell.xib */; }; - B1B558D220EF768F00210D55 /* RoomEncryptedDataBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5586420EF768E00210D55 /* RoomEncryptedDataBubbleCell.m */; }; - B1B558D320EF768F00210D55 /* RoomOutgoingEncryptedTextMsgBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5586620EF768E00210D55 /* RoomOutgoingEncryptedTextMsgBubbleCell.m */; }; - B1B558D420EF768F00210D55 /* RoomOutgoingEncryptedTextMsgWithoutSenderInfoBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5586720EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithoutSenderInfoBubbleCell.m */; }; - B1B558D520EF768F00210D55 /* RoomIncomingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5586920EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib */; }; - B1B558D620EF768F00210D55 /* RoomOutgoingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5586A20EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib */; }; - B1B558D720EF768F00210D55 /* RoomOutgoingEncryptedTextMsgWithPaginationTitleBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5586B20EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithPaginationTitleBubbleCell.xib */; }; - B1B558D820EF768F00210D55 /* RoomIncomingEncryptedAttachmentWithPaginationTitleBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5586C20EF768E00210D55 /* RoomIncomingEncryptedAttachmentWithPaginationTitleBubbleCell.xib */; }; - B1B558D920EF768F00210D55 /* RoomOutgoingEncryptedAttachmentBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5586D20EF768E00210D55 /* RoomOutgoingEncryptedAttachmentBubbleCell.xib */; }; - B1B558DA20EF768F00210D55 /* RoomOutgoingEncryptedTextMsgWithoutSenderInfoBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5586F20EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithoutSenderInfoBubbleCell.xib */; }; - B1B558DB20EF768F00210D55 /* RoomIncomingEncryptedTextMsgWithoutSenderNameBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5587020EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithoutSenderNameBubbleCell.xib */; }; - B1B558DC20EF768F00210D55 /* RoomIncomingEncryptedTextMsgWithPaginationTitleBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5587220EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithPaginationTitleBubbleCell.xib */; }; - B1B558DD20EF768F00210D55 /* RoomIncomingEncryptedTextMsgBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5587320EF768E00210D55 /* RoomIncomingEncryptedTextMsgBubbleCell.m */; }; - B1B558DE20EF768F00210D55 /* RoomIncomingAttachmentBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5587720EF768E00210D55 /* RoomIncomingAttachmentBubbleCell.m */; }; - B1B558DF20EF768F00210D55 /* RoomOutgoingTextMsgWithoutSenderInfoBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5587820EF768E00210D55 /* RoomOutgoingTextMsgWithoutSenderInfoBubbleCell.m */; }; - B1B558E020EF768F00210D55 /* RoomOutgoingTextMsgBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5587920EF768E00210D55 /* RoomOutgoingTextMsgBubbleCell.m */; }; - B1B558E120EF768F00210D55 /* RoomMembershipCollapsedBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5587B20EF768E00210D55 /* RoomMembershipCollapsedBubbleCell.m */; }; - B1B558E220EF768F00210D55 /* RoomIncomingTextMsgBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5587D20EF768E00210D55 /* RoomIncomingTextMsgBubbleCell.xib */; }; - B1B558E320EF768F00210D55 /* RoomEmptyBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5587F20EF768E00210D55 /* RoomEmptyBubbleCell.xib */; }; - B1B558E420EF768F00210D55 /* RoomMembershipWithPaginationTitleBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5588020EF768E00210D55 /* RoomMembershipWithPaginationTitleBubbleCell.m */; }; - B1B558E520EF768F00210D55 /* RoomMembershipExpandedBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5588220EF768E00210D55 /* RoomMembershipExpandedBubbleCell.m */; }; - B1B558E620EF768F00210D55 /* RoomIncomingAttachmentWithoutSenderInfoBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5588320EF768E00210D55 /* RoomIncomingAttachmentWithoutSenderInfoBubbleCell.m */; }; - B1B558E720EF768F00210D55 /* RoomIncomingTextMsgWithoutSenderInfoBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5588520EF768E00210D55 /* RoomIncomingTextMsgWithoutSenderInfoBubbleCell.xib */; }; - B1B558E820EF768F00210D55 /* RoomIncomingAttachmentWithPaginationTitleBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5588720EF768E00210D55 /* RoomIncomingAttachmentWithPaginationTitleBubbleCell.m */; }; - B1B558E920EF768F00210D55 /* RoomSelectedStickerBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5588820EF768E00210D55 /* RoomSelectedStickerBubbleCell.m */; }; - B1B558EA20EF768F00210D55 /* RoomOutgoingTextMsgWithPaginationTitleBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5588920EF768E00210D55 /* RoomOutgoingTextMsgWithPaginationTitleBubbleCell.xib */; }; - B1B558EB20EF768F00210D55 /* RoomIncomingTextMsgWithPaginationTitleBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5588C20EF768E00210D55 /* RoomIncomingTextMsgWithPaginationTitleBubbleCell.xib */; }; - B1B558EC20EF768F00210D55 /* RoomMembershipCollapsedBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5588E20EF768E00210D55 /* RoomMembershipCollapsedBubbleCell.xib */; }; - B1B558ED20EF768F00210D55 /* RoomIncomingTextMsgWithoutSenderNameBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5588F20EF768E00210D55 /* RoomIncomingTextMsgWithoutSenderNameBubbleCell.m */; }; - B1B558EE20EF768F00210D55 /* RoomOutgoingAttachmentBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5589020EF768E00210D55 /* RoomOutgoingAttachmentBubbleCell.m */; }; - B1B558EF20EF768F00210D55 /* RoomMembershipCollapsedWithPaginationTitleBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5589120EF768E00210D55 /* RoomMembershipCollapsedWithPaginationTitleBubbleCell.xib */; }; - B1B558F020EF768F00210D55 /* RoomOutgoingAttachmentWithPaginationTitleBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5589320EF768E00210D55 /* RoomOutgoingAttachmentWithPaginationTitleBubbleCell.m */; }; - B1B558F120EF768F00210D55 /* RoomIncomingAttachmentWithPaginationTitleBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5589420EF768E00210D55 /* RoomIncomingAttachmentWithPaginationTitleBubbleCell.xib */; }; - B1B558F220EF768F00210D55 /* RoomIncomingTextMsgWithoutSenderNameBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5589520EF768E00210D55 /* RoomIncomingTextMsgWithoutSenderNameBubbleCell.xib */; }; - B1B558F320EF768F00210D55 /* RoomOutgoingAttachmentWithoutSenderInfoBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5589620EF768E00210D55 /* RoomOutgoingAttachmentWithoutSenderInfoBubbleCell.m */; }; - B1B558F420EF768F00210D55 /* RoomOutgoingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5589B20EF768E00210D55 /* RoomOutgoingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m */; }; - B1B558F520EF768F00210D55 /* RoomOutgoingTextMsgWithPaginationTitleBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5589C20EF768E00210D55 /* RoomOutgoingTextMsgWithPaginationTitleBubbleCell.m */; }; - B1B558F620EF768F00210D55 /* RoomOutgoingTextMsgBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5589D20EF768E00210D55 /* RoomOutgoingTextMsgBubbleCell.xib */; }; - B1B558F720EF768F00210D55 /* RoomIncomingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5589F20EF768E00210D55 /* RoomIncomingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib */; }; - B1B558F820EF768F00210D55 /* RoomIncomingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B558A120EF768E00210D55 /* RoomIncomingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m */; }; - B1B558F920EF768F00210D55 /* RoomOutgoingTextMsgWithoutSenderNameBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B558A320EF768E00210D55 /* RoomOutgoingTextMsgWithoutSenderNameBubbleCell.m */; }; - B1B558FA20EF768F00210D55 /* RoomMembershipBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B558A420EF768E00210D55 /* RoomMembershipBubbleCell.m */; }; - B1B558FB20EF768F00210D55 /* RoomIncomingAttachmentWithoutSenderInfoBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B558A520EF768E00210D55 /* RoomIncomingAttachmentWithoutSenderInfoBubbleCell.xib */; }; - B1B558FC20EF768F00210D55 /* RoomIncomingTextMsgWithPaginationTitleBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B558A620EF768E00210D55 /* RoomIncomingTextMsgWithPaginationTitleBubbleCell.m */; }; - B1B558FD20EF768F00210D55 /* RoomIncomingAttachmentBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B558A720EF768E00210D55 /* RoomIncomingAttachmentBubbleCell.xib */; }; - B1B558FE20EF768F00210D55 /* RoomMembershipExpandedWithPaginationTitleBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B558A820EF768E00210D55 /* RoomMembershipExpandedWithPaginationTitleBubbleCell.xib */; }; - B1B558FF20EF768F00210D55 /* RoomIncomingTextMsgBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B558A920EF768E00210D55 /* RoomIncomingTextMsgBubbleCell.m */; }; - B1B5590020EF768F00210D55 /* RoomOutgoingTextMsgWithoutSenderNameBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B558AA20EF768E00210D55 /* RoomOutgoingTextMsgWithoutSenderNameBubbleCell.xib */; }; - B1B5590120EF768F00210D55 /* RoomMembershipExpandedWithPaginationTitleBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B558AB20EF768E00210D55 /* RoomMembershipExpandedWithPaginationTitleBubbleCell.m */; }; - B1B5590220EF768F00210D55 /* RoomOutgoingAttachmentWithPaginationTitleBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B558AD20EF768E00210D55 /* RoomOutgoingAttachmentWithPaginationTitleBubbleCell.xib */; }; - B1B5590320EF768F00210D55 /* RoomSelectedStickerBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B558AE20EF768E00210D55 /* RoomSelectedStickerBubbleCell.xib */; }; - B1B5590420EF768F00210D55 /* RoomOutgoingAttachmentBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B558B020EF768E00210D55 /* RoomOutgoingAttachmentBubbleCell.xib */; }; - B1B5590520EF768F00210D55 /* RoomIncomingTextMsgWithoutSenderInfoBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B558B120EF768E00210D55 /* RoomIncomingTextMsgWithoutSenderInfoBubbleCell.m */; }; - B1B5590620EF768F00210D55 /* RoomMembershipCollapsedWithPaginationTitleBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B558B220EF768E00210D55 /* RoomMembershipCollapsedWithPaginationTitleBubbleCell.m */; }; - B1B5590720EF768F00210D55 /* RoomOutgoingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B558B320EF768E00210D55 /* RoomOutgoingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib */; }; - B1B5590820EF768F00210D55 /* RoomMembershipWithPaginationTitleBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B558B420EF768E00210D55 /* RoomMembershipWithPaginationTitleBubbleCell.xib */; }; - B1B5590920EF768F00210D55 /* RoomEmptyBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B558B620EF768E00210D55 /* RoomEmptyBubbleCell.m */; }; - B1B5590A20EF768F00210D55 /* RoomOutgoingAttachmentWithoutSenderInfoBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B558B920EF768E00210D55 /* RoomOutgoingAttachmentWithoutSenderInfoBubbleCell.xib */; }; - B1B5590B20EF768F00210D55 /* RoomMembershipExpandedBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B558BA20EF768E00210D55 /* RoomMembershipExpandedBubbleCell.xib */; }; - B1B5590F20EF782800210D55 /* TableViewCellWithPhoneNumberTextField.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5590D20EF782800210D55 /* TableViewCellWithPhoneNumberTextField.xib */; }; - B1B5591020EF782800210D55 /* TableViewCellWithPhoneNumberTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5590E20EF782800210D55 /* TableViewCellWithPhoneNumberTextField.m */; }; - B1B5592B20EF7A5D00210D55 /* TableViewCellWithButton.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5592920EF7A5D00210D55 /* TableViewCellWithButton.xib */; }; - B1B5592C20EF7A5D00210D55 /* TableViewCellWithButton.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5592A20EF7A5D00210D55 /* TableViewCellWithButton.m */; }; - B1B5593720EF7BAC00210D55 /* TableViewCellWithCheckBoxAndLabel.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5592E20EF7BAC00210D55 /* TableViewCellWithCheckBoxAndLabel.xib */; }; - B1B5593820EF7BAC00210D55 /* TableViewCellWithLabelAndLargeTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5592F20EF7BAC00210D55 /* TableViewCellWithLabelAndLargeTextView.m */; }; - B1B5593920EF7BAC00210D55 /* TableViewCellWithCheckBoxes.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5593220EF7BAC00210D55 /* TableViewCellWithCheckBoxes.xib */; }; - B1B5593A20EF7BAC00210D55 /* TableViewCellWithLabelAndLargeTextView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5593320EF7BAC00210D55 /* TableViewCellWithLabelAndLargeTextView.xib */; }; - B1B5593B20EF7BAC00210D55 /* TableViewCellWithCheckBoxAndLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5593420EF7BAC00210D55 /* TableViewCellWithCheckBoxAndLabel.m */; }; - B1B5593C20EF7BAC00210D55 /* TableViewCellWithCheckBoxes.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5593520EF7BAC00210D55 /* TableViewCellWithCheckBoxes.m */; }; - B1B5594420EF7BD000210D55 /* TableViewCellWithCollectionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5593F20EF7BD000210D55 /* TableViewCellWithCollectionView.xib */; }; - B1B5594520EF7BD000210D55 /* TableViewCellWithCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5594020EF7BD000210D55 /* TableViewCellWithCollectionView.m */; }; - B1B5594620EF7BD000210D55 /* RoomCollectionViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5594120EF7BD000210D55 /* RoomCollectionViewCell.xib */; }; - B1B5594720EF7BD000210D55 /* RoomCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5594220EF7BD000210D55 /* RoomCollectionViewCell.m */; }; - B1B5595220EF9A8700210D55 /* RecentTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5595020EF9A8600210D55 /* RecentTableViewCell.m */; }; - B1B5595320EF9A8700210D55 /* RecentTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5595120EF9A8600210D55 /* RecentTableViewCell.xib */; }; - B1B5596520EF9E9B00210D55 /* RoomTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5596320EF9E9A00210D55 /* RoomTableViewCell.xib */; }; - B1B5596620EF9E9B00210D55 /* RoomTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5596420EF9E9A00210D55 /* RoomTableViewCell.m */; }; - B1B5596F20EFA85D00210D55 /* EncryptionInfoView.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5596C20EFA85C00210D55 /* EncryptionInfoView.m */; }; - B1B5597020EFA85D00210D55 /* EncryptionInfoView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5596E20EFA85C00210D55 /* EncryptionInfoView.xib */; }; - B1B5597520EFB02A00210D55 /* InviteRecentTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5597220EFB02900210D55 /* InviteRecentTableViewCell.m */; }; - B1B5597620EFB02A00210D55 /* InviteRecentTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B5597320EFB02900210D55 /* InviteRecentTableViewCell.xib */; }; - B1B5598520EFC3E000210D55 /* RageShakeManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5597E20EFC3DF00210D55 /* RageShakeManager.m */; }; - B1B5598620EFC3E000210D55 /* RiotSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B5597F20EFC3DF00210D55 /* RiotSettings.swift */; }; - B1B5598720EFC3E000210D55 /* Widget.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5598320EFC3DF00210D55 /* Widget.m */; }; - B1B5598820EFC3E000210D55 /* WidgetManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5598420EFC3DF00210D55 /* WidgetManager.m */; }; - B1B5599220EFC5E400210D55 /* Analytics.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5598C20EFC5E400210D55 /* Analytics.m */; }; - B1B5599320EFC5E400210D55 /* DecryptionFailure.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5598D20EFC5E400210D55 /* DecryptionFailure.m */; }; - B1B5599420EFC5E400210D55 /* DecryptionFailureTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = B1B5599120EFC5E400210D55 /* DecryptionFailureTracker.m */; }; - B1B9194C2118984300FE25B5 /* RoomPredecessorBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B9194A2118984300FE25B5 /* RoomPredecessorBubbleCell.xib */; }; - B1B9DEDA22E9B7350065E677 /* SerializationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B9DED922E9B7350065E677 /* SerializationService.swift */; }; - B1B9DEDC22E9B7440065E677 /* SerializationServiceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B9DEDB22E9B7440065E677 /* SerializationServiceType.swift */; }; - B1B9DEDE22E9D9890065E677 /* EmojiServiceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B9DEDD22E9D9890065E677 /* EmojiServiceType.swift */; }; - B1B9DEE822EB34EF0065E677 /* ReactionHistoryCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B9DEE022EB34ED0065E677 /* ReactionHistoryCoordinatorType.swift */; }; - B1B9DEE922EB34EF0065E677 /* ReactionHistoryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B9DEE122EB34EE0065E677 /* ReactionHistoryViewController.swift */; }; - B1B9DEEA22EB34EF0065E677 /* ReactionHistoryViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B1B9DEE222EB34EE0065E677 /* ReactionHistoryViewController.storyboard */; }; - B1B9DEEB22EB34EF0065E677 /* ReactionHistoryViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B9DEE322EB34EE0065E677 /* ReactionHistoryViewModel.swift */; }; - B1B9DEEC22EB34EF0065E677 /* ReactionHistoryViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B9DEE422EB34EE0065E677 /* ReactionHistoryViewModelType.swift */; }; - B1B9DEED22EB34EF0065E677 /* ReactionHistoryCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B9DEE522EB34EE0065E677 /* ReactionHistoryCoordinator.swift */; }; - B1B9DEEE22EB34EF0065E677 /* ReactionHistoryViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B9DEE622EB34EE0065E677 /* ReactionHistoryViewAction.swift */; }; - B1B9DEEF22EB34EF0065E677 /* ReactionHistoryViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B9DEE722EB34EE0065E677 /* ReactionHistoryViewState.swift */; }; - B1B9DEF122EB396B0065E677 /* ReactionHistoryViewData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B9DEF022EB396B0065E677 /* ReactionHistoryViewData.swift */; }; - B1B9DEF422EB426D0065E677 /* ReactionHistoryViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B9DEF222EB426D0065E677 /* ReactionHistoryViewCell.swift */; }; - B1B9DEF522EB426D0065E677 /* ReactionHistoryViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1B9DEF322EB426D0065E677 /* ReactionHistoryViewCell.xib */; }; - B1BB649324FD428A008238AE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1BB649224FD428A008238AE /* AppDelegate.swift */; }; - B1BD71B5238DCBF700BA92E2 /* SlidingModalEmptyViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1BD71B4238DCBF700BA92E2 /* SlidingModalEmptyViewController.swift */; }; - B1BD71BC238E8F9600BA92E2 /* WidgetPermissionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1BD71BA238E8F9600BA92E2 /* WidgetPermissionViewController.swift */; }; - B1BD71BF238EA56700BA92E2 /* WidgetPermissionViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B1BD71BE238EA56700BA92E2 /* WidgetPermissionViewController.storyboard */; }; - B1BD71C1238EA92100BA92E2 /* WidgetPermissionViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1BD71C0238EA92000BA92E2 /* WidgetPermissionViewModel.swift */; }; - B1BEE71423DF2ACF0003A4CB /* UserVerificationCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1BEE71123DF2ACF0003A4CB /* UserVerificationCoordinatorType.swift */; }; - B1BEE71523DF2ACF0003A4CB /* UserVerificationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1BEE71223DF2ACF0003A4CB /* UserVerificationCoordinator.swift */; }; - B1BEE71623DF2ACF0003A4CB /* UserVerificationCoordinatorBridgePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1BEE71323DF2ACF0003A4CB /* UserVerificationCoordinatorBridgePresenter.swift */; }; - B1BEE72A23DF38B20003A4CB /* UserVerificationSessionStatusCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1BEE72823DF38B10003A4CB /* UserVerificationSessionStatusCell.swift */; }; - B1BEE72B23DF38B20003A4CB /* UserVerificationSessionStatusCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1BEE72923DF38B20003A4CB /* UserVerificationSessionStatusCell.xib */; }; - B1BEE73423DF44A60003A4CB /* UserVerificationSessionsStatusViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1BEE72C23DF44A20003A4CB /* UserVerificationSessionsStatusViewModelType.swift */; }; - B1BEE73523DF44A60003A4CB /* UserVerificationSessionsStatusViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1BEE72D23DF44A30003A4CB /* UserVerificationSessionsStatusViewModel.swift */; }; - B1BEE73623DF44A60003A4CB /* UserVerificationSessionsStatusCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1BEE72E23DF44A30003A4CB /* UserVerificationSessionsStatusCoordinatorType.swift */; }; - B1BEE73723DF44A60003A4CB /* UserVerificationSessionsStatusViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1BEE72F23DF44A40003A4CB /* UserVerificationSessionsStatusViewState.swift */; }; - B1BEE73823DF44A60003A4CB /* UserVerificationSessionsStatusViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1BEE73023DF44A40003A4CB /* UserVerificationSessionsStatusViewAction.swift */; }; - B1BEE73923DF44A60003A4CB /* UserVerificationSessionsStatusViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1BEE73123DF44A50003A4CB /* UserVerificationSessionsStatusViewController.swift */; }; - B1BEE73A23DF44A60003A4CB /* UserVerificationSessionsStatusViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B1BEE73223DF44A50003A4CB /* UserVerificationSessionsStatusViewController.storyboard */; }; - B1BEE73B23DF44A60003A4CB /* UserVerificationSessionsStatusCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1BEE73323DF44A60003A4CB /* UserVerificationSessionsStatusCoordinator.swift */; }; - B1BEE74623E093260003A4CB /* UserVerificationSessionStatusViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1BEE73E23E093220003A4CB /* UserVerificationSessionStatusViewState.swift */; }; - B1BEE74723E093260003A4CB /* UserVerificationSessionStatusViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1BEE73F23E093230003A4CB /* UserVerificationSessionStatusViewModelType.swift */; }; - B1BEE74823E093260003A4CB /* UserVerificationSessionStatusViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1BEE74023E093230003A4CB /* UserVerificationSessionStatusViewModel.swift */; }; - B1BEE74923E093260003A4CB /* UserVerificationSessionStatusViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B1BEE74123E093230003A4CB /* UserVerificationSessionStatusViewController.storyboard */; }; - B1BEE74A23E093260003A4CB /* UserVerificationSessionStatusCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1BEE74223E093240003A4CB /* UserVerificationSessionStatusCoordinatorType.swift */; }; - B1BEE74B23E093260003A4CB /* UserVerificationSessionStatusViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1BEE74323E093250003A4CB /* UserVerificationSessionStatusViewAction.swift */; }; - B1BEE74C23E093260003A4CB /* UserVerificationSessionStatusViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1BEE74423E093250003A4CB /* UserVerificationSessionStatusViewController.swift */; }; - B1BEE74D23E093260003A4CB /* UserVerificationSessionStatusCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1BEE74523E093260003A4CB /* UserVerificationSessionStatusCoordinator.swift */; }; - B1C335CD22F1C1320021BA8D /* CameraPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C335CC22F1C1320021BA8D /* CameraPresenter.swift */; }; - B1C3360122F1ED600021BA8D /* MediaPickerCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C335FE22F1ED5F0021BA8D /* MediaPickerCoordinatorType.swift */; }; - B1C3360222F1ED600021BA8D /* MediaPickerCoordinatorBridgePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C335FF22F1ED5F0021BA8D /* MediaPickerCoordinatorBridgePresenter.swift */; }; - B1C3360322F1ED600021BA8D /* MediaPickerCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C3360022F1ED600021BA8D /* MediaPickerCoordinator.swift */; }; - B1C3361C22F32B4A0021BA8D /* SingleImagePickerPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C3361B22F32B4A0021BA8D /* SingleImagePickerPresenter.swift */; }; - B1C456C92548CF09002E5734 /* JitsiJWTPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C456C82548CF09002E5734 /* JitsiJWTPayload.swift */; }; - B1C45A84232A8C2600165425 /* SettingsIdentityServerCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C45A7B232A8C2600165425 /* SettingsIdentityServerCoordinatorType.swift */; }; - B1C45A85232A8C2600165425 /* SettingsIdentityServerViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B1C45A7C232A8C2600165425 /* SettingsIdentityServerViewController.storyboard */; }; - B1C45A86232A8C2600165425 /* SettingsIdentityServerViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C45A7D232A8C2600165425 /* SettingsIdentityServerViewModelType.swift */; }; - B1C45A87232A8C2600165425 /* SettingsIdentityServerCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C45A7E232A8C2600165425 /* SettingsIdentityServerCoordinator.swift */; }; - B1C45A88232A8C2600165425 /* SettingsIdentityServerViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C45A7F232A8C2600165425 /* SettingsIdentityServerViewState.swift */; }; - B1C45A89232A8C2600165425 /* SettingsIdentityServerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C45A80232A8C2600165425 /* SettingsIdentityServerViewController.swift */; }; - B1C45A8A232A8C2600165425 /* SettingsIdentityServerCoordinatorBridgePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C45A81232A8C2600165425 /* SettingsIdentityServerCoordinatorBridgePresenter.swift */; }; - B1C45A8B232A8C2600165425 /* SettingsIdentityServerViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C45A82232A8C2600165425 /* SettingsIdentityServerViewModel.swift */; }; - B1C45A8C232A8C2600165425 /* SettingsIdentityServerViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C45A83232A8C2600165425 /* SettingsIdentityServerViewAction.swift */; }; - B1C543A4239E98E400DCA1FA /* KeyVerificationCellInnerContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C543A3239E98E400DCA1FA /* KeyVerificationCellInnerContentView.swift */; }; - B1C543A6239E999700DCA1FA /* KeyVerificationCellInnerContentView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1C543A5239E999700DCA1FA /* KeyVerificationCellInnerContentView.xib */; }; - B1C543AE23A286A000DCA1FA /* KeyVerificationRequestStatusBubbleCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C543AD23A286A000DCA1FA /* KeyVerificationRequestStatusBubbleCell.swift */; }; - B1C543B023A2871300DCA1FA /* KeyVerificationBaseBubbleCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C543AF23A2871300DCA1FA /* KeyVerificationBaseBubbleCell.swift */; }; - B1C543B223A2913F00DCA1FA /* KeyVerificationConclusionBubbleCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C543B123A2913F00DCA1FA /* KeyVerificationConclusionBubbleCell.swift */; }; - B1C562CA2289C2690037F12A /* UIGestureRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C562C92289C2690037F12A /* UIGestureRecognizer.swift */; }; - B1C562CC228AB3510037F12A /* UIStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C562CB228AB3510037F12A /* UIStackView.swift */; }; - B1C562D9228C0B760037F12A /* RoomContextualMenuItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C562D8228C0B760037F12A /* RoomContextualMenuItem.swift */; }; - B1C562DB228C0BB00037F12A /* RoomContextualMenuAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C562DA228C0BB00037F12A /* RoomContextualMenuAction.swift */; }; - B1C562E1228C7C8C0037F12A /* RoomContextualMenuToolbarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C562DC228C7C890037F12A /* RoomContextualMenuToolbarView.swift */; }; - B1C562E2228C7C8D0037F12A /* RoomContextualMenuViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C562DD228C7C8A0037F12A /* RoomContextualMenuViewController.swift */; }; - B1C562E3228C7C8D0037F12A /* RoomContextualMenuPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C562DE228C7C8B0037F12A /* RoomContextualMenuPresenter.swift */; }; - B1C562E4228C7C8D0037F12A /* RoomContextualMenuToolbarView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1C562DF228C7C8C0037F12A /* RoomContextualMenuToolbarView.xib */; }; - B1C562E5228C7C8D0037F12A /* RoomContextualMenuViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B1C562E0228C7C8C0037F12A /* RoomContextualMenuViewController.storyboard */; }; - B1C562E8228C7CF20037F12A /* ContextualMenuItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C562E6228C7CF10037F12A /* ContextualMenuItemView.swift */; }; - B1C562E9228C7CF20037F12A /* ContextualMenuItemView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1C562E7228C7CF20037F12A /* ContextualMenuItemView.xib */; }; - B1C7822F2500EAF500337EB9 /* TabBarCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C7822D2500EAF400337EB9 /* TabBarCoordinator.swift */; }; - B1C782302500EAF500337EB9 /* TabBarCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C7822E2500EAF500337EB9 /* TabBarCoordinatorType.swift */; }; - B1C782322500F96700337EB9 /* SplitViewPresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C782312500F96600337EB9 /* SplitViewPresentable.swift */; }; - B1CA3A2721EF6914000D1D89 /* UIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1CA3A2621EF6913000D1D89 /* UIViewController.swift */; }; - B1CA3A2921EF692B000D1D89 /* UIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1CA3A2821EF692B000D1D89 /* UIView.swift */; }; - B1CE83B62422812100D07506 /* KeyVerificationCoordinatorBridgePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1CE83B52422812000D07506 /* KeyVerificationCoordinatorBridgePresenter.swift */; }; - B1CE83B92422815C00D07506 /* KeyVerificationKind.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1CE83B72422815900D07506 /* KeyVerificationKind.swift */; }; - B1CE83BA2422815C00D07506 /* KeyVerificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1CE83B82422815A00D07506 /* KeyVerificationService.swift */; }; - B1CE83D32422817200D07506 /* KeyVerificationVerifiedViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B1CE83BC2422817000D07506 /* KeyVerificationVerifiedViewController.storyboard */; }; - B1CE83D42422817200D07506 /* KeyVerificationVerifiedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1CE83BD2422817000D07506 /* KeyVerificationVerifiedViewController.swift */; }; - B1CE83D52422817200D07506 /* KeyVerificationVerifyByScanningViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1CE83C02422817100D07506 /* KeyVerificationVerifyByScanningViewController.swift */; }; - B1CE83D62422817200D07506 /* KeyVerificationVerifyByScanningCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1CE83C12422817100D07506 /* KeyVerificationVerifyByScanningCoordinator.swift */; }; - B1CE83D72422817200D07506 /* KeyVerificationVerifyByScanningViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1CE83C22422817100D07506 /* KeyVerificationVerifyByScanningViewModelType.swift */; }; - B1CE83D82422817200D07506 /* KeyVerificationVerifyByScanningCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1CE83C32422817100D07506 /* KeyVerificationVerifyByScanningCoordinatorType.swift */; }; - B1CE83D92422817200D07506 /* KeyVerificationVerifyByScanningViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1CE83C42422817100D07506 /* KeyVerificationVerifyByScanningViewAction.swift */; }; - B1CE83DA2422817200D07506 /* KeyVerificationVerifyByScanningViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1CE83C52422817100D07506 /* KeyVerificationVerifyByScanningViewModel.swift */; }; - B1CE83DB2422817200D07506 /* KeyVerificationVerifyByScanningViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B1CE83C62422817100D07506 /* KeyVerificationVerifyByScanningViewController.storyboard */; }; - B1CE83DC2422817200D07506 /* KeyVerificationVerifyByScanningViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1CE83C72422817100D07506 /* KeyVerificationVerifyByScanningViewState.swift */; }; - B1CE83DD2422817200D07506 /* KeyVerificationVerifyBySASViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1CE83C92422817100D07506 /* KeyVerificationVerifyBySASViewAction.swift */; }; - B1CE83DE2422817200D07506 /* KeyVerificationVerifyBySASViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1CE83CA2422817100D07506 /* KeyVerificationVerifyBySASViewModelType.swift */; }; - B1CE83DF2422817200D07506 /* KeyVerificationVerifyBySASCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1CE83CB2422817100D07506 /* KeyVerificationVerifyBySASCoordinatorType.swift */; }; - B1CE83E02422817200D07506 /* KeyVerificationVerifyBySASViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1CE83CC2422817100D07506 /* KeyVerificationVerifyBySASViewController.swift */; }; - B1CE83E12422817200D07506 /* KeyVerificationVerifyBySASCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1CE83CD2422817100D07506 /* KeyVerificationVerifyBySASCoordinator.swift */; }; - B1CE83E22422817200D07506 /* KeyVerificationVerifyBySASViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1CE83CE2422817100D07506 /* KeyVerificationVerifyBySASViewState.swift */; }; - B1CE83E32422817200D07506 /* VerifyEmojiCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1CE83D02422817100D07506 /* VerifyEmojiCollectionViewCell.swift */; }; - B1CE83E42422817200D07506 /* KeyVerificationVerifyBySASViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B1CE83D12422817100D07506 /* KeyVerificationVerifyBySASViewController.storyboard */; }; - B1CE83E52422817200D07506 /* KeyVerificationVerifyBySASViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1CE83D22422817100D07506 /* KeyVerificationVerifyBySASViewModel.swift */; }; - B1CE9EFD22148703000FAE6A /* SignOutAlertPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1CE9EFC22148703000FAE6A /* SignOutAlertPresenter.swift */; }; - B1CE9F062216FB09000FAE6A /* EncryptionKeysExportPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1CE9F052216FB09000FAE6A /* EncryptionKeysExportPresenter.swift */; }; - B1D1BDA622BBAFB500831367 /* ReactionsMenuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1D1BDA522BBAFB500831367 /* ReactionsMenuView.swift */; }; - B1D1BDA822BBAFC900831367 /* ReactionsMenuView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1D1BDA722BBAFC900831367 /* ReactionsMenuView.xib */; }; - B1D211E222BD193C00D939BD /* ReactionsMenuViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1D211E122BD193C00D939BD /* ReactionsMenuViewModel.swift */; }; - B1D211E422C18E3800D939BD /* ReactionsMenuViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1D211E322C18E3800D939BD /* ReactionsMenuViewModelType.swift */; }; - B1D211E622C194A200D939BD /* ReactionsMenuViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1D211E522C194A200D939BD /* ReactionsMenuViewState.swift */; }; - B1D211E822C195B400D939BD /* ReactionMenuItemViewData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1D211E722C195B400D939BD /* ReactionMenuItemViewData.swift */; }; - B1D250D82118AA0A000F4E93 /* RoomPredecessorBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B1D250D72118AA0A000F4E93 /* RoomPredecessorBubbleCell.m */; }; - B1D44999243CD73700959523 /* RoomPowerLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1D44998243CD73700959523 /* RoomPowerLevel.swift */; }; - B1D4752721EE4E630067973F /* KeyboardAvoider.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1D4752521EE4E620067973F /* KeyboardAvoider.swift */; }; - B1D4752821EE4E630067973F /* KeyboardNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1D4752621EE4E620067973F /* KeyboardNotification.swift */; }; - B1D4752A21EE52B10067973F /* KeyBackupSetupIntroViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1D4752921EE52B10067973F /* KeyBackupSetupIntroViewController.swift */; }; - B1D4752C21EE52C30067973F /* KeyBackupSetupIntroViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B1D4752B21EE52C30067973F /* KeyBackupSetupIntroViewController.storyboard */; }; - B1DB4F06223015080065DBFA /* Character.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DB4F05223015080065DBFA /* Character.swift */; }; - B1DB4F0722301AF20065DBFA /* Character.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DB4F05223015080065DBFA /* Character.swift */; }; - B1DB4F0B223131600065DBFA /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DB4F0A223131600065DBFA /* String.swift */; }; - B1DB4F0C2231494F0065DBFA /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DB4F0A223131600065DBFA /* String.swift */; }; - B1DB4F0E22316FFF0065DBFA /* UserNameColorGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DB4F0D22316FFF0065DBFA /* UserNameColorGenerator.swift */; }; - B1DB4F0F223170000065DBFA /* UserNameColorGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DB4F0D22316FFF0065DBFA /* UserNameColorGenerator.swift */; }; - B1DCC61722E5E17100625807 /* EmojiPickerViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B1DCC60F22E5E16900625807 /* EmojiPickerViewController.storyboard */; }; - B1DCC61822E5E17100625807 /* EmojiPickerViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DCC61022E5E16900625807 /* EmojiPickerViewState.swift */; }; - B1DCC61922E5E17100625807 /* EmojiPickerCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DCC61122E5E16A00625807 /* EmojiPickerCoordinatorType.swift */; }; - B1DCC61A22E5E17100625807 /* EmojiPickerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DCC61222E5E16C00625807 /* EmojiPickerViewController.swift */; }; - B1DCC61B22E5E17100625807 /* EmojiPickerCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DCC61322E5E16D00625807 /* EmojiPickerCoordinator.swift */; }; - B1DCC61C22E5E17100625807 /* EmojiPickerViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DCC61422E5E16E00625807 /* EmojiPickerViewAction.swift */; }; - B1DCC61D22E5E17100625807 /* EmojiPickerViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DCC61522E5E16F00625807 /* EmojiPickerViewModelType.swift */; }; - B1DCC61E22E5E17100625807 /* EmojiPickerViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DCC61622E5E17000625807 /* EmojiPickerViewModel.swift */; }; - B1DCC62022E5EDA400625807 /* EmojiPickerCoordinatorBridgePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DCC61F22E5EDA400625807 /* EmojiPickerCoordinatorBridgePresenter.swift */; }; - B1DCC62222E60BE000625807 /* EmojiPickerItemViewData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DCC62122E60BE000625807 /* EmojiPickerItemViewData.swift */; }; - B1DCC62422E60CA900625807 /* EmojiPickerCategoryViewData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DCC62322E60CA800625807 /* EmojiPickerCategoryViewData.swift */; }; - B1DCC62622E60CC600625807 /* EmojiItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DCC62522E60CC600625807 /* EmojiItem.swift */; }; - B1DCC62822E60CE300625807 /* EmojiCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DCC62722E60CE300625807 /* EmojiCategory.swift */; }; - B1DCC62A22E60D1000625807 /* EmojiMartService.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DCC62922E60D1000625807 /* EmojiMartService.swift */; }; - B1DCC62D22E61EAF00625807 /* EmojiPickerViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DCC62B22E61EAF00625807 /* EmojiPickerViewCell.swift */; }; - B1DCC62E22E61EAF00625807 /* EmojiPickerViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1DCC62C22E61EAF00625807 /* EmojiPickerViewCell.xib */; }; - B1DCC63122E7026F00625807 /* EmojiPickerHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DCC62F22E7026F00625807 /* EmojiPickerHeaderView.swift */; }; - B1DCC63222E7026F00625807 /* EmojiPickerHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1DCC63022E7026F00625807 /* EmojiPickerHeaderView.xib */; }; - B1DCC63422E72C1B00625807 /* UISearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DCC63322E72C1B00625807 /* UISearchBar.swift */; }; - B1DCC63522E72D2200625807 /* UISearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DCC63322E72C1B00625807 /* UISearchBar.swift */; }; - B1DCC63722E8541700625807 /* EmojiStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DCC63622E8541700625807 /* EmojiStore.swift */; }; - B1DCC63922E85E9A00625807 /* EmojiMartStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DCC63822E85E9A00625807 /* EmojiMartStore.swift */; }; - B1DCC63B22E85EF800625807 /* EmojiMartCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DCC63A22E85EF800625807 /* EmojiMartCategory.swift */; }; - B1DCC63F22E9A3AE00625807 /* EmojiItem+EmojiMart.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1DCC63E22E9A3AE00625807 /* EmojiItem+EmojiMart.swift */; }; - B1E5368921FB1E20001F3AFF /* UIButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1E5368821FB1E20001F3AFF /* UIButton.swift */; }; - B1E5368D21FB7245001F3AFF /* KeyBackupRecoverFromPassphraseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1E5368C21FB7245001F3AFF /* KeyBackupRecoverFromPassphraseViewController.swift */; }; - B1E5368F21FB7258001F3AFF /* KeyBackupRecoverFromPassphraseViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B1E5368E21FB7258001F3AFF /* KeyBackupRecoverFromPassphraseViewController.storyboard */; }; - B1F9072D255CDA1200DD14E5 /* RecentsViewController+RoomInvite.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1F9072C255CDA1200DD14E5 /* RecentsViewController+RoomInvite.swift */; }; - B1F9072F255CE06000DD14E5 /* InviteRecentTableViewCell+ButtonViewsUpdate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1F9072E255CE06000DD14E5 /* InviteRecentTableViewCell+ButtonViewsUpdate.swift */; }; - B1FDF56021F5FE5500BA3834 /* KeyBackupSetupPassphraseViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1FDF55F21F5FE5500BA3834 /* KeyBackupSetupPassphraseViewAction.swift */; }; - DB1392A2332C3CAF6C9962EF /* Pods_RiotPods_RiotNSE.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E4D418D054E4032F2CFA8B51 /* Pods_RiotPods_RiotNSE.framework */; }; - EC1CA85F24C1DEC400DE9EBF /* EnterPinCodeViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA85124C1DEC400DE9EBF /* EnterPinCodeViewModelType.swift */; }; - EC1CA86024C1DEC400DE9EBF /* EnterPinCodeViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA85224C1DEC400DE9EBF /* EnterPinCodeViewAction.swift */; }; - EC1CA86124C1DEC400DE9EBF /* EnterPinCodeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA85324C1DEC400DE9EBF /* EnterPinCodeViewModel.swift */; }; - EC1CA86224C1DEC400DE9EBF /* EnterPinCodeViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA85424C1DEC400DE9EBF /* EnterPinCodeViewState.swift */; }; - EC1CA86324C1DEC400DE9EBF /* EnterPinCodeCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA85524C1DEC400DE9EBF /* EnterPinCodeCoordinatorType.swift */; }; - EC1CA86424C1DEC400DE9EBF /* EnterPinCodeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA85624C1DEC400DE9EBF /* EnterPinCodeCoordinator.swift */; }; - EC1CA86524C1DEC400DE9EBF /* EnterPinCodeViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EC1CA85724C1DEC400DE9EBF /* EnterPinCodeViewController.storyboard */; }; - EC1CA86624C1DEC400DE9EBF /* EnterPinCodeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA85824C1DEC400DE9EBF /* EnterPinCodeViewController.swift */; }; - EC1CA86824C1DEC400DE9EBF /* SetPinCoordinatorBridgePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA85A24C1DEC400DE9EBF /* SetPinCoordinatorBridgePresenter.swift */; }; - EC1CA86924C1DEC400DE9EBF /* SetPinCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA85B24C1DEC400DE9EBF /* SetPinCoordinator.swift */; }; - EC1CA86C24C1DEC400DE9EBF /* SetPinCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA85E24C1DEC400DE9EBF /* SetPinCoordinatorType.swift */; }; - EC1CA86E24C5BA4500DE9EBF /* PinCodePreferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA86D24C5BA4500DE9EBF /* PinCodePreferences.swift */; }; - EC1CA87224C823E700DE9EBF /* KeyValueStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA87124C823E700DE9EBF /* KeyValueStore.swift */; }; - EC1CA87524C8259700DE9EBF /* KeychainStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA87424C8259700DE9EBF /* KeychainStore.swift */; }; - EC1CA87724C82D0E00DE9EBF /* MemoryStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA87624C82D0E00DE9EBF /* MemoryStore.swift */; }; - EC1CA87A24C8841C00DE9EBF /* LocalAuthenticationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA87924C8841C00DE9EBF /* LocalAuthenticationService.swift */; }; - EC1CA89524C9C9A200DE9EBF /* SetupBiometricsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA88D24C9C9A200DE9EBF /* SetupBiometricsViewController.swift */; }; - EC1CA89624C9C9A200DE9EBF /* SetupBiometricsCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA88E24C9C9A200DE9EBF /* SetupBiometricsCoordinator.swift */; }; - EC1CA89724C9C9A200DE9EBF /* SetupBiometricsViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA88F24C9C9A200DE9EBF /* SetupBiometricsViewModelType.swift */; }; - EC1CA89824C9C9A200DE9EBF /* SetupBiometricsViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA89024C9C9A200DE9EBF /* SetupBiometricsViewAction.swift */; }; - EC1CA89924C9C9A200DE9EBF /* SetupBiometricsViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EC1CA89124C9C9A200DE9EBF /* SetupBiometricsViewController.storyboard */; }; - EC1CA89A24C9C9A200DE9EBF /* SetupBiometricsCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA89224C9C9A200DE9EBF /* SetupBiometricsCoordinatorType.swift */; }; - EC1CA89B24C9C9A200DE9EBF /* SetupBiometricsViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA89324C9C9A200DE9EBF /* SetupBiometricsViewState.swift */; }; - EC1CA89C24C9C9A200DE9EBF /* SetupBiometricsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA89424C9C9A200DE9EBF /* SetupBiometricsViewModel.swift */; }; - EC1CA8D424D8103400DE9EBF /* App-Common.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = EC1CA8D324D8103400DE9EBF /* App-Common.xcconfig */; }; - EC1CA8D624D8108700DE9EBF /* ShareExtension-Common.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = EC1CA8D524D8108700DE9EBF /* ShareExtension-Common.xcconfig */; }; - EC1CA8D824D8118400DE9EBF /* SiriIntents-Common.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = EC1CA8D724D8118400DE9EBF /* SiriIntents-Common.xcconfig */; }; - EC1CA8DA24D811B400DE9EBF /* NSE-Common.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = EC1CA8D924D811B400DE9EBF /* NSE-Common.xcconfig */; }; - EC2B4EF124A1EEBD005EB739 /* DataProtectionHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC2B4EF024A1EEBD005EB739 /* DataProtectionHelper.swift */; }; - EC2B4EF224A1EF34005EB739 /* DataProtectionHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC2B4EF024A1EEBD005EB739 /* DataProtectionHelper.swift */; }; - EC31F012251B4DBD00D407DA /* RoomInfoListViewData.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC31F011251B4DBD00D407DA /* RoomInfoListViewData.swift */; }; - EC31F014251B53AD00D407DA /* RoomInfoBasicView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC31F013251B53AD00D407DA /* RoomInfoBasicView.swift */; }; - EC31F016251B53BC00D407DA /* RoomInfoBasicView.xib in Resources */ = {isa = PBXBuildFile; fileRef = EC31F015251B53BC00D407DA /* RoomInfoBasicView.xib */; }; - EC31F0942521FC3700D407DA /* LocalAuthenticationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA87924C8841C00DE9EBF /* LocalAuthenticationService.swift */; }; - EC31F0952521FC4600D407DA /* PinCodePreferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA86D24C5BA4500DE9EBF /* PinCodePreferences.swift */; }; - EC31F0962521FC5300D407DA /* Strings.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1098BDA21ECE09E000DDA48 /* Strings.swift */; }; - EC31F0972521FC6300D407DA /* Images.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1098BDC21ECE09E000DDA48 /* Images.swift */; }; - EC31F09A2524A60E00D407DA /* BiometricsAuthenticationPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC31F0992524A60E00D407DA /* BiometricsAuthenticationPresenter.swift */; }; - EC31F09C2524AE1400D407DA /* BiometricsAuthenticationPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC31F0992524A60E00D407DA /* BiometricsAuthenticationPresenter.swift */; }; - EC3B066924AC6ADE000DF9BF /* CrossSigningService.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC3B066424AC6ADD000DF9BF /* CrossSigningService.swift */; }; - EC3B066A24AC6ADE000DF9BF /* CrossSigningSetupBannerCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = EC3B066624AC6ADD000DF9BF /* CrossSigningSetupBannerCell.xib */; }; - EC3B066B24AC6ADE000DF9BF /* CrossSigningBannerPreferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC3B066724AC6ADD000DF9BF /* CrossSigningBannerPreferences.swift */; }; - EC3B066C24AC6ADE000DF9BF /* CrossSigningSetupBannerCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC3B066824AC6ADD000DF9BF /* CrossSigningSetupBannerCell.swift */; }; - EC49F5F92515016F003894A6 /* RoomInfoBasicViewData.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC49F5F82515016F003894A6 /* RoomInfoBasicViewData.swift */; }; - EC51E78D250FC15000AAE7DB /* RoomCreationEventRowViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC51E78C250FC15000AAE7DB /* RoomCreationEventRowViewModel.swift */; }; - EC51E7902510B7C700AAE7DB /* AutosizedTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC51E78F2510B7C700AAE7DB /* AutosizedTableView.swift */; }; - EC51E7922510C0A500AAE7DB /* SpanningSlidingModalContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC51E7912510C0A500AAE7DB /* SpanningSlidingModalContainerView.swift */; }; - EC51E7942510C0D000AAE7DB /* SpanningSlidingModalContainerView.xib in Resources */ = {isa = PBXBuildFile; fileRef = EC51E7932510C0D000AAE7DB /* SpanningSlidingModalContainerView.xib */; }; - EC51E7A62514D2E100AAE7DB /* RoomInfoCoordinatorBridgePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC51E79A2514D2E000AAE7DB /* RoomInfoCoordinatorBridgePresenter.swift */; }; - EC51E7A72514D2E100AAE7DB /* RoomInfoCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC51E79B2514D2E000AAE7DB /* RoomInfoCoordinator.swift */; }; - EC51E7A82514D2E100AAE7DB /* RoomInfoListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC51E79D2514D2E100AAE7DB /* RoomInfoListViewController.swift */; }; - EC51E7A92514D2E100AAE7DB /* RoomInfoListViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC51E79E2514D2E100AAE7DB /* RoomInfoListViewModelType.swift */; }; - EC51E7AA2514D2E100AAE7DB /* RoomInfoListViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EC51E79F2514D2E100AAE7DB /* RoomInfoListViewController.storyboard */; }; - EC51E7AB2514D2E100AAE7DB /* RoomInfoListViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC51E7A02514D2E100AAE7DB /* RoomInfoListViewState.swift */; }; - EC51E7AC2514D2E100AAE7DB /* RoomInfoListCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC51E7A12514D2E100AAE7DB /* RoomInfoListCoordinatorType.swift */; }; - EC51E7AD2514D2E100AAE7DB /* RoomInfoListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC51E7A22514D2E100AAE7DB /* RoomInfoListCoordinator.swift */; }; - EC51E7AE2514D2E100AAE7DB /* RoomInfoListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC51E7A32514D2E100AAE7DB /* RoomInfoListViewModel.swift */; }; - EC51E7AF2514D2E100AAE7DB /* RoomInfoListViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC51E7A42514D2E100AAE7DB /* RoomInfoListViewAction.swift */; }; - EC51E7B02514D2E100AAE7DB /* RoomInfoCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC51E7A52514D2E100AAE7DB /* RoomInfoCoordinatorType.swift */; }; - EC619C1924DAD96000663A80 /* UIScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC619C1824DAD96000663A80 /* UIScrollView.swift */; }; - EC711B4624A63B13008F830C /* MXRecoveryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B4524A63B13008F830C /* MXRecoveryService.swift */; }; - EC711B7424A63B37008F830C /* SecretsSetupRecoveryKeyViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B4A24A63B36008F830C /* SecretsSetupRecoveryKeyViewModelType.swift */; }; - EC711B7524A63B37008F830C /* SecretsSetupRecoveryKeyCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B4B24A63B36008F830C /* SecretsSetupRecoveryKeyCoordinatorType.swift */; }; - EC711B7624A63B37008F830C /* SecretsSetupRecoveryKeyViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B4C24A63B36008F830C /* SecretsSetupRecoveryKeyViewState.swift */; }; - EC711B7724A63B37008F830C /* SecretsSetupRecoveryKeyViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EC711B4D24A63B36008F830C /* SecretsSetupRecoveryKeyViewController.storyboard */; }; - EC711B7824A63B37008F830C /* SecretsSetupRecoveryKeyViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B4E24A63B36008F830C /* SecretsSetupRecoveryKeyViewModel.swift */; }; - EC711B7924A63B37008F830C /* SecretsSetupRecoveryKeyViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B4F24A63B36008F830C /* SecretsSetupRecoveryKeyViewController.swift */; }; - EC711B7A24A63B37008F830C /* SecretsSetupRecoveryKeyViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B5024A63B36008F830C /* SecretsSetupRecoveryKeyViewAction.swift */; }; - EC711B7B24A63B37008F830C /* SecretsSetupRecoveryKeyCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B5124A63B36008F830C /* SecretsSetupRecoveryKeyCoordinator.swift */; }; - EC711B7C24A63B37008F830C /* SecretsSetupRecoveryPassphraseViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EC711B5324A63B36008F830C /* SecretsSetupRecoveryPassphraseViewController.storyboard */; }; - EC711B7D24A63B37008F830C /* SecretsSetupRecoveryPassphraseViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B5424A63B36008F830C /* SecretsSetupRecoveryPassphraseViewModel.swift */; }; - EC711B7E24A63B37008F830C /* SecretsSetupRecoveryPassphraseCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B5524A63B36008F830C /* SecretsSetupRecoveryPassphraseCoordinatorType.swift */; }; - EC711B7F24A63B37008F830C /* SecretsSetupRecoveryPassphraseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B5624A63B36008F830C /* SecretsSetupRecoveryPassphraseViewController.swift */; }; - EC711B8024A63B37008F830C /* SecretsSetupRecoveryPassphraseViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B5724A63B36008F830C /* SecretsSetupRecoveryPassphraseViewState.swift */; }; - EC711B8124A63B37008F830C /* SecretsSetupRecoveryPassphraseViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B5824A63B36008F830C /* SecretsSetupRecoveryPassphraseViewAction.swift */; }; - EC711B8224A63B37008F830C /* SecretsSetupRecoveryPassphraseViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B5924A63B36008F830C /* SecretsSetupRecoveryPassphraseViewModelType.swift */; }; - EC711B8324A63B37008F830C /* SecretsSetupRecoveryPassphraseCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B5A24A63B36008F830C /* SecretsSetupRecoveryPassphraseCoordinator.swift */; }; - EC711B8424A63B37008F830C /* SecretsSetupRecoveryPassphraseInputMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B5B24A63B36008F830C /* SecretsSetupRecoveryPassphraseInputMode.swift */; }; - EC711B8524A63B37008F830C /* SecretsRecoveryWithPassphraseCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B5E24A63B36008F830C /* SecretsRecoveryWithPassphraseCoordinator.swift */; }; - EC711B8624A63B37008F830C /* SecretsRecoveryWithPassphraseCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B5F24A63B36008F830C /* SecretsRecoveryWithPassphraseCoordinatorType.swift */; }; - EC711B8724A63B37008F830C /* SecretsRecoveryWithPassphraseViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B6024A63B36008F830C /* SecretsRecoveryWithPassphraseViewModelType.swift */; }; - EC711B8824A63B37008F830C /* SecretsRecoveryWithPassphraseViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B6124A63B36008F830C /* SecretsRecoveryWithPassphraseViewAction.swift */; }; - EC711B8924A63B37008F830C /* SecretsRecoveryWithPassphraseViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B6224A63B36008F830C /* SecretsRecoveryWithPassphraseViewModel.swift */; }; - EC711B8A24A63B37008F830C /* SecretsRecoveryWithPassphraseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B6324A63B36008F830C /* SecretsRecoveryWithPassphraseViewController.swift */; }; - EC711B8B24A63B37008F830C /* SecretsRecoveryWithPassphraseViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B6424A63B36008F830C /* SecretsRecoveryWithPassphraseViewState.swift */; }; - EC711B8C24A63B37008F830C /* SecretsRecoveryWithPassphraseViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EC711B6524A63B36008F830C /* SecretsRecoveryWithPassphraseViewController.storyboard */; }; - EC711B8D24A63B37008F830C /* SecretsRecoveryGoal.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B6624A63B36008F830C /* SecretsRecoveryGoal.swift */; }; - EC711B8E24A63B37008F830C /* SecretsRecoveryMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B6724A63B36008F830C /* SecretsRecoveryMode.swift */; }; - EC711B8F24A63B37008F830C /* SecretsRecoveryWithKeyViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EC711B6924A63B36008F830C /* SecretsRecoveryWithKeyViewController.storyboard */; }; - EC711B9024A63B37008F830C /* SecretsRecoveryWithKeyCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B6A24A63B36008F830C /* SecretsRecoveryWithKeyCoordinator.swift */; }; - EC711B9124A63B37008F830C /* SecretsRecoveryWithKeyCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B6B24A63B36008F830C /* SecretsRecoveryWithKeyCoordinatorType.swift */; }; - EC711B9224A63B37008F830C /* SecretsRecoveryWithKeyViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B6C24A63B36008F830C /* SecretsRecoveryWithKeyViewModel.swift */; }; - EC711B9324A63B37008F830C /* SecretsRecoveryWithKeyViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B6D24A63B36008F830C /* SecretsRecoveryWithKeyViewController.swift */; }; - EC711B9424A63B37008F830C /* SecretsRecoveryWithKeyViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B6E24A63B36008F830C /* SecretsRecoveryWithKeyViewAction.swift */; }; - EC711B9524A63B37008F830C /* SecretsRecoveryWithKeyViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B6F24A63B36008F830C /* SecretsRecoveryWithKeyViewModelType.swift */; }; - EC711B9624A63B37008F830C /* SecretsRecoveryWithKeyViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B7024A63B36008F830C /* SecretsRecoveryWithKeyViewState.swift */; }; - EC711B9724A63B37008F830C /* SecretsRecoveryCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B7124A63B36008F830C /* SecretsRecoveryCoordinatorType.swift */; }; - EC711B9824A63B37008F830C /* SecretsRecoveryCoordinatorBridgePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B7224A63B36008F830C /* SecretsRecoveryCoordinatorBridgePresenter.swift */; }; - EC711B9924A63B37008F830C /* SecretsRecoveryCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B7324A63B36008F830C /* SecretsRecoveryCoordinator.swift */; }; - EC711BA924A63B58008F830C /* SecureBackupSetupCoordinatorBridgePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B9C24A63B58008F830C /* SecureBackupSetupCoordinatorBridgePresenter.swift */; }; - EC711BAA24A63B58008F830C /* SecureBackupSetupIntroCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = EC711B9E24A63B58008F830C /* SecureBackupSetupIntroCell.xib */; }; - EC711BAB24A63B58008F830C /* SecureBackupSetupIntroViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711B9F24A63B58008F830C /* SecureBackupSetupIntroViewController.swift */; }; - EC711BAC24A63B58008F830C /* SecureBackupSetupIntroCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711BA024A63B58008F830C /* SecureBackupSetupIntroCell.swift */; }; - EC711BAD24A63B58008F830C /* SecureBackupSetupIntroViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EC711BA124A63B58008F830C /* SecureBackupSetupIntroViewController.storyboard */; }; - EC711BAE24A63B58008F830C /* SecureBackupSetupCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711BA224A63B58008F830C /* SecureBackupSetupCoordinator.swift */; }; - EC711BAF24A63B58008F830C /* SecureBackupSetupCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711BA324A63B58008F830C /* SecureBackupSetupCoordinatorType.swift */; }; - EC711BB024A63B58008F830C /* SecureBackupBannerCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711BA524A63B58008F830C /* SecureBackupBannerCell.swift */; }; - EC711BB124A63B58008F830C /* SecureBackupBannerPreferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711BA624A63B58008F830C /* SecureBackupBannerPreferences.swift */; }; - EC711BB324A63B58008F830C /* SecureBackupBannerCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = EC711BA824A63B58008F830C /* SecureBackupBannerCell.xib */; }; - EC711BB624A63C11008F830C /* AuthenticatedSessionViewControllerFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC711BB524A63C11008F830C /* AuthenticatedSessionViewControllerFactory.swift */; }; - EC85D6AE2477DC89002C44C9 /* RoundedButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC85D6AD2477DC89002C44C9 /* RoundedButton.swift */; }; - EC85D7142477DCD7002C44C9 /* KeyVerificationScanConfirmationViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC85D70C2477DCD7002C44C9 /* KeyVerificationScanConfirmationViewState.swift */; }; - EC85D7152477DCD7002C44C9 /* KeyVerificationScanConfirmationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC85D70D2477DCD7002C44C9 /* KeyVerificationScanConfirmationViewController.swift */; }; - EC85D7162477DCD7002C44C9 /* KeyVerificationScanConfirmationViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC85D70E2477DCD7002C44C9 /* KeyVerificationScanConfirmationViewAction.swift */; }; - EC85D7172477DCD7002C44C9 /* KeyVerificationScanConfirmationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC85D70F2477DCD7002C44C9 /* KeyVerificationScanConfirmationViewModel.swift */; }; - EC85D7182477DCD7002C44C9 /* KeyVerificationScanConfirmationViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC85D7102477DCD7002C44C9 /* KeyVerificationScanConfirmationViewModelType.swift */; }; - EC85D7192477DCD7002C44C9 /* KeyVerificationScanConfirmationViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EC85D7112477DCD7002C44C9 /* KeyVerificationScanConfirmationViewController.storyboard */; }; - EC85D71A2477DCD7002C44C9 /* KeyVerificationScanConfirmationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC85D7122477DCD7002C44C9 /* KeyVerificationScanConfirmationCoordinator.swift */; }; - EC85D71B2477DCD7002C44C9 /* KeyVerificationScanConfirmationCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC85D7132477DCD7002C44C9 /* KeyVerificationScanConfirmationCoordinatorType.swift */; }; - EC85D7252477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC85D71D2477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewAction.swift */; }; - EC85D7262477DCF2002C44C9 /* KeyVerificationManuallyVerifyCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC85D71E2477DCF2002C44C9 /* KeyVerificationManuallyVerifyCoordinator.swift */; }; - EC85D7272477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC85D71F2477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewController.swift */; }; - EC85D7282477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EC85D7202477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewController.storyboard */; }; - EC85D7292477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC85D7212477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewModelType.swift */; }; - EC85D72A2477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC85D7222477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewModel.swift */; }; - EC85D72B2477DCF2002C44C9 /* KeyVerificationManuallyVerifyCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC85D7232477DCF2002C44C9 /* KeyVerificationManuallyVerifyCoordinatorType.swift */; }; - EC85D72C2477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC85D7242477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewState.swift */; }; - EC85D7302477DD33002C44C9 /* JitsiWidgetData.m in Sources */ = {isa = PBXBuildFile; fileRef = EC85D72F2477DD33002C44C9 /* JitsiWidgetData.m */; }; - EC85D7372477DD97002C44C9 /* LocalContactsSectionHeaderContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = EC85D7352477DD97002C44C9 /* LocalContactsSectionHeaderContainerView.m */; }; - EC85D73A2477DDB8002C44C9 /* DirectorySectionHeaderContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = EC85D7392477DDB8002C44C9 /* DirectorySectionHeaderContainerView.m */; }; - EC85D73E2477DDD0002C44C9 /* PushNotificationService.m in Sources */ = {isa = PBXBuildFile; fileRef = EC85D73D2477DDD0002C44C9 /* PushNotificationService.m */; }; - EC85D7462477E5F7002C44C9 /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC85D7452477E5F7002C44C9 /* NotificationService.swift */; }; - EC85D74A2477E5F7002C44C9 /* RiotNSE.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = EC85D7432477E5F7002C44C9 /* RiotNSE.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - EC85D74F2477E8EB002C44C9 /* RiotSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B5597F20EFC3DF00210D55 /* RiotSettings.swift */; }; - EC85D751247C0E8F002C44C9 /* UNUserNotificationCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC85D750247C0E8F002C44C9 /* UNUserNotificationCenter.swift */; }; - EC85D752247C0F52002C44C9 /* UNUserNotificationCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC85D750247C0E8F002C44C9 /* UNUserNotificationCenter.swift */; }; - EC85D754247C0F5B002C44C9 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC85D753247C0F5B002C44C9 /* Constants.swift */; }; - EC85D755247C0F84002C44C9 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC85D753247C0F5B002C44C9 /* Constants.swift */; }; - EC9A3EC524E1616900A8CFAE /* PushNotificationStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC9A3EC424E1616900A8CFAE /* PushNotificationStore.swift */; }; - EC9A3EC624E1632C00A8CFAE /* PushNotificationStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC9A3EC424E1616900A8CFAE /* PushNotificationStore.swift */; }; - EC9A3EC724E1634100A8CFAE /* KeyValueStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA87124C823E700DE9EBF /* KeyValueStore.swift */; }; - EC9A3EC824E1634800A8CFAE /* KeychainStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA87424C8259700DE9EBF /* KeychainStore.swift */; }; - ECAE7AE524EC0E01002FA813 /* TableViewSections.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECAE7AE424EC0E01002FA813 /* TableViewSections.swift */; }; - ECAE7AE724EC15F7002FA813 /* Section.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECAE7AE624EC15F7002FA813 /* Section.swift */; }; - ECAE7AE924EC1888002FA813 /* Row.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECAE7AE824EC1888002FA813 /* Row.swift */; }; - ECAE7AEE24EFDD1F002FA813 /* MXSessionState.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECAE7AED24EFDD1F002FA813 /* MXSessionState.swift */; }; - ECB101302477CFDB00CF8C11 /* UITableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECB1012C2477CFDB00CF8C11 /* UITableView.swift */; }; - ECB101312477CFDB00CF8C11 /* UILabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECB1012D2477CFDB00CF8C11 /* UILabel.swift */; }; - ECB101322477CFDB00CF8C11 /* UIDevice.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECB1012E2477CFDB00CF8C11 /* UIDevice.swift */; }; - ECB101332477CFDB00CF8C11 /* UITableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECB1012F2477CFDB00CF8C11 /* UITableViewCell.swift */; }; - ECB101362477D00700CF8C11 /* UniversalLink.m in Sources */ = {isa = PBXBuildFile; fileRef = ECB101352477D00700CF8C11 /* UniversalLink.m */; }; - ECB5D98F255420F8000AD89C /* Keychain.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECB5D98E255420F8000AD89C /* Keychain.swift */; }; - ECB5D9902554221F000AD89C /* Keychain.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECB5D98E255420F8000AD89C /* Keychain.swift */; }; - ECDC15F224AF41D2003437CF /* FormattedBodyParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECDC15F124AF41D2003437CF /* FormattedBodyParser.swift */; }; - ECE36F71258A373900122124 /* EncryptionKeyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA7D00B2587FF0000420A72 /* EncryptionKeyManager.swift */; }; - ECE36F72258A373A00122124 /* EncryptionKeyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA7D00B2587FF0000420A72 /* EncryptionKeyManager.swift */; }; - ECE36F73258A373B00122124 /* EncryptionKeyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA7D00B2587FF0000420A72 /* EncryptionKeyManager.swift */; }; - ECE36F74258A37D800122124 /* KeyValueStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA87124C823E700DE9EBF /* KeyValueStore.swift */; }; - ECE36F75258A37D800122124 /* KeyValueStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA87124C823E700DE9EBF /* KeyValueStore.swift */; }; - ECE36F76258A37EB00122124 /* KeychainStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA87424C8259700DE9EBF /* KeychainStore.swift */; }; - ECE36F77258A37EC00122124 /* KeychainStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA87424C8259700DE9EBF /* KeychainStore.swift */; }; - ECE36F78258A37FA00122124 /* Keychain.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECB5D98E255420F8000AD89C /* Keychain.swift */; }; - ECE36F79258A37FB00122124 /* Keychain.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECB5D98E255420F8000AD89C /* Keychain.swift */; }; - ECE36F7B258A383E00122124 /* EncryptionKeyManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA7D00B2587FF0000420A72 /* EncryptionKeyManager.swift */; }; - ECE36F7C258A384200122124 /* KeyValueStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA87124C823E700DE9EBF /* KeyValueStore.swift */; }; - ECE36F7D258A384E00122124 /* KeychainStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1CA87424C8259700DE9EBF /* KeychainStore.swift */; }; - ECE36F7F258B578300122124 /* Memory.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECE36F7E258B578300122124 /* Memory.swift */; }; - ECE36F80258B579900122124 /* Memory.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECE36F7E258B578300122124 /* Memory.swift */; }; - ECF57A4425090C23004BBF9D /* CreateRoomCoordinatorBridgePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF57A3825090C23004BBF9D /* CreateRoomCoordinatorBridgePresenter.swift */; }; - ECF57A4525090C23004BBF9D /* CreateRoomCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF57A3925090C23004BBF9D /* CreateRoomCoordinatorType.swift */; }; - ECF57A4625090C23004BBF9D /* CreateRoomCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF57A3A25090C23004BBF9D /* CreateRoomCoordinator.swift */; }; - ECF57A4725090C23004BBF9D /* EnterNewRoomDetailsViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = ECF57A3C25090C23004BBF9D /* EnterNewRoomDetailsViewController.storyboard */; }; - ECF57A4825090C23004BBF9D /* EnterNewRoomDetailsCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF57A3D25090C23004BBF9D /* EnterNewRoomDetailsCoordinatorType.swift */; }; - ECF57A4925090C23004BBF9D /* EnterNewRoomDetailsViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF57A3E25090C23004BBF9D /* EnterNewRoomDetailsViewState.swift */; }; - ECF57A4A25090C23004BBF9D /* EnterNewRoomDetailsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF57A3F25090C23004BBF9D /* EnterNewRoomDetailsViewController.swift */; }; - ECF57A4B25090C23004BBF9D /* EnterNewRoomDetailsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF57A4025090C23004BBF9D /* EnterNewRoomDetailsViewModel.swift */; }; - ECF57A4C25090C23004BBF9D /* EnterNewRoomDetailsViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF57A4125090C23004BBF9D /* EnterNewRoomDetailsViewAction.swift */; }; - ECF57A4D25090C23004BBF9D /* EnterNewRoomDetailsCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF57A4225090C23004BBF9D /* EnterNewRoomDetailsCoordinator.swift */; }; - ECF57A4E25090C23004BBF9D /* EnterNewRoomDetailsViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF57A4325090C23004BBF9D /* EnterNewRoomDetailsViewModelType.swift */; }; - ECF57A50250913E4004BBF9D /* MXKTableViewCellWithLabelAndSwitch.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF57A4F250913E4004BBF9D /* MXKTableViewCellWithLabelAndSwitch.swift */; }; - ECF57A5525091B4D004BBF9D /* RoomCreationParameters.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF57A5425091B4D004BBF9D /* RoomCreationParameters.swift */; }; - ECF57A5725091ECC004BBF9D /* MXKTableViewCellWithTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF57A5625091ECC004BBF9D /* MXKTableViewCellWithTextView.swift */; }; - ECF57A5A250925AC004BBF9D /* TextFieldTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF57A58250925AC004BBF9D /* TextFieldTableViewCell.swift */; }; - ECF57A5B250925AC004BBF9D /* TextFieldTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = ECF57A59250925AC004BBF9D /* TextFieldTableViewCell.xib */; }; - ECF57A5E2509265A004BBF9D /* InsettedTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF57A5D2509265A004BBF9D /* InsettedTextField.swift */; }; - ECF57A6225093B04004BBF9D /* SectionHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = ECF57A6025093B04004BBF9D /* SectionHeaderView.m */; }; - ECF57A85250A64F0004BBF9D /* PlaceholderedTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF57A84250A64F0004BBF9D /* PlaceholderedTextView.swift */; }; - ECF57A87250A6872004BBF9D /* TextViewTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF57A86250A6872004BBF9D /* TextViewTableViewCell.swift */; }; - ECF57A89250A687B004BBF9D /* TextViewTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = ECF57A88250A687B004BBF9D /* TextViewTableViewCell.xib */; }; - ECFBD5C9250A7AAF00DD5F5A /* RoomsDirectoryCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5B5250A7AAE00DD5F5A /* RoomsDirectoryCoordinator.swift */; }; - ECFBD5CA250A7AAF00DD5F5A /* ShowDirectoryViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = ECFBD5B7250A7AAF00DD5F5A /* ShowDirectoryViewController.storyboard */; }; - ECFBD5CB250A7AAF00DD5F5A /* DirectoryRoomTableViewCellVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5BA250A7AAF00DD5F5A /* DirectoryRoomTableViewCellVM.swift */; }; - ECFBD5CC250A7AAF00DD5F5A /* DirectoryRoomTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5BB250A7AAF00DD5F5A /* DirectoryRoomTableViewCell.swift */; }; - ECFBD5CD250A7AAF00DD5F5A /* DirectoryRoomTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = ECFBD5BC250A7AAF00DD5F5A /* DirectoryRoomTableViewCell.xib */; }; - ECFBD5CE250A7AAF00DD5F5A /* DirectoryNetworkTableHeaderFooterView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ECFBD5BE250A7AAF00DD5F5A /* DirectoryNetworkTableHeaderFooterView.xib */; }; - ECFBD5CF250A7AAF00DD5F5A /* DirectoryNetworkTableHeaderFooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5BF250A7AAF00DD5F5A /* DirectoryNetworkTableHeaderFooterView.swift */; }; - ECFBD5D0250A7AAF00DD5F5A /* ShowDirectoryViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5C0250A7AAF00DD5F5A /* ShowDirectoryViewModel.swift */; }; - ECFBD5D1250A7AAF00DD5F5A /* ShowDirectoryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5C1250A7AAF00DD5F5A /* ShowDirectoryViewController.swift */; }; - ECFBD5D2250A7AAF00DD5F5A /* ShowDirectoryViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5C2250A7AAF00DD5F5A /* ShowDirectoryViewState.swift */; }; - ECFBD5D3250A7AAF00DD5F5A /* ShowDirectoryCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5C3250A7AAF00DD5F5A /* ShowDirectoryCoordinator.swift */; }; - ECFBD5D4250A7AAF00DD5F5A /* ShowDirectoryCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5C4250A7AAF00DD5F5A /* ShowDirectoryCoordinatorType.swift */; }; - ECFBD5D5250A7AAF00DD5F5A /* ShowDirectoryViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5C5250A7AAF00DD5F5A /* ShowDirectoryViewModelType.swift */; }; - ECFBD5D6250A7AAF00DD5F5A /* ShowDirectoryViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5C6250A7AAF00DD5F5A /* ShowDirectoryViewAction.swift */; }; - ECFBD5D7250A7AAF00DD5F5A /* RoomsDirectoryCoordinatorBridgePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5C7250A7AAF00DD5F5A /* RoomsDirectoryCoordinatorBridgePresenter.swift */; }; - ECFBD5D8250A7AAF00DD5F5A /* RoomsDirectoryCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5C8250A7AAF00DD5F5A /* RoomsDirectoryCoordinatorType.swift */; }; - ECFBD5DA250A7ABD00DD5F5A /* MXThirdPartyProtocolInstance.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5D9250A7ABD00DD5F5A /* MXThirdPartyProtocolInstance.swift */; }; - ECFBD5DC250A82B200DD5F5A /* TextViewTableViewHeaderFooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5DB250A82B200DD5F5A /* TextViewTableViewHeaderFooterView.swift */; }; - ECFBD5E0250B684E00DD5F5A /* ChooseAvatarTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5DE250B684E00DD5F5A /* ChooseAvatarTableViewCell.swift */; }; - ECFBD5E1250B684E00DD5F5A /* ChooseAvatarTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = ECFBD5DF250B684E00DD5F5A /* ChooseAvatarTableViewCell.xib */; }; - ECFBD5E3250B6CAB00DD5F5A /* ChooseAvatarTableViewCellVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5E2250B6CAB00DD5F5A /* ChooseAvatarTableViewCellVM.swift */; }; - ECFBD5EA250F97FC00DD5F5A /* RoomCreationCollapsedBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = ECFBD5E4250F97FC00DD5F5A /* RoomCreationCollapsedBubbleCell.xib */; }; - ECFBD5EB250F97FC00DD5F5A /* RoomCreationWithPaginationCollapsedBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5E5250F97FC00DD5F5A /* RoomCreationWithPaginationCollapsedBubbleCell.m */; }; - ECFBD5EC250F97FC00DD5F5A /* RoomCreationWithPaginationCollapsedBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = ECFBD5E8250F97FC00DD5F5A /* RoomCreationWithPaginationCollapsedBubbleCell.xib */; }; - ECFBD5ED250F97FC00DD5F5A /* RoomCreationCollapsedBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5E9250F97FC00DD5F5A /* RoomCreationCollapsedBubbleCell.m */; }; - ECFBD5F7250FA59B00DD5F5A /* RoomCreationEventsModalViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = ECFBD5EF250FA59B00DD5F5A /* RoomCreationEventsModalViewController.storyboard */; }; - ECFBD5F8250FA59B00DD5F5A /* RoomCreationEventsModalCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5F0250FA59B00DD5F5A /* RoomCreationEventsModalCoordinator.swift */; }; - ECFBD5F9250FA59B00DD5F5A /* RoomCreationEventsModalViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5F1250FA59B00DD5F5A /* RoomCreationEventsModalViewModelType.swift */; }; - ECFBD5FA250FA59B00DD5F5A /* RoomCreationEventsModalCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5F2250FA59B00DD5F5A /* RoomCreationEventsModalCoordinatorType.swift */; }; - ECFBD5FB250FA59B00DD5F5A /* RoomCreationEventsModalViewAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5F3250FA59B00DD5F5A /* RoomCreationEventsModalViewAction.swift */; }; - ECFBD5FC250FA59B00DD5F5A /* RoomCreationEventsModalViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5F4250FA59B00DD5F5A /* RoomCreationEventsModalViewState.swift */; }; - ECFBD5FD250FA59B00DD5F5A /* RoomCreationEventsModalViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5F5250FA59B00DD5F5A /* RoomCreationEventsModalViewController.swift */; }; - ECFBD5FE250FA59B00DD5F5A /* RoomCreationEventsModalViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5F6250FA59B00DD5F5A /* RoomCreationEventsModalViewModel.swift */; }; - ECFBD602250FA98200DD5F5A /* RoomCreationModalCoordinatorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD5FF250FA98100DD5F5A /* RoomCreationModalCoordinatorType.swift */; }; - ECFBD603250FA98200DD5F5A /* RoomCreationModalCoordinatorBridgePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECFBD600250FA98100DD5F5A /* RoomCreationModalCoordinatorBridgePresenter.swift */; }; - F05927C91FDED836009F2A68 /* MXGroup+Riot.m in Sources */ = {isa = PBXBuildFile; fileRef = F05927C71FDED835009F2A68 /* MXGroup+Riot.m */; }; - F083BD1E1E7009ED00A9B29C /* LegacyAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F083BB0D1E7009EC00A9B29C /* LegacyAppDelegate.m */; }; - F083BDE61E7009ED00A9B29C /* busy.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = F083BBDB1E7009EC00A9B29C /* busy.mp3 */; }; - F083BDE71E7009ED00A9B29C /* callend.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = F083BBDC1E7009EC00A9B29C /* callend.mp3 */; }; - F083BDE81E7009ED00A9B29C /* message.caf in Resources */ = {isa = PBXBuildFile; fileRef = F083BBDD1E7009EC00A9B29C /* message.caf */; }; - F083BDE91E7009ED00A9B29C /* ring.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = F083BBDE1E7009EC00A9B29C /* ring.mp3 */; }; - F083BDEA1E7009ED00A9B29C /* ringback.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = F083BBDF1E7009EC00A9B29C /* ringback.mp3 */; }; - F083BDED1E7009ED00A9B29C /* MXKRoomBubbleTableViewCell+Riot.m in Sources */ = {isa = PBXBuildFile; fileRef = F083BBE61E7009EC00A9B29C /* MXKRoomBubbleTableViewCell+Riot.m */; }; - F083BDEE1E7009ED00A9B29C /* MXRoom+Riot.m in Sources */ = {isa = PBXBuildFile; fileRef = F083BBE81E7009EC00A9B29C /* MXRoom+Riot.m */; }; - F083BDEF1E7009ED00A9B29C /* UINavigationController+Riot.m in Sources */ = {isa = PBXBuildFile; fileRef = F083BBEA1E7009EC00A9B29C /* UINavigationController+Riot.m */; }; - F083BDF01E7009ED00A9B29C /* UIViewController+RiotSearch.m in Sources */ = {isa = PBXBuildFile; fileRef = F083BBEC1E7009EC00A9B29C /* UIViewController+RiotSearch.m */; }; - F083BDF31E7009ED00A9B29C /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F083BBEF1E7009EC00A9B29C /* Images.xcassets */; }; - F083BDF91E7009ED00A9B29C /* RoomEmailInvitation.m in Sources */ = {isa = PBXBuildFile; fileRef = F083BBFC1E7009EC00A9B29C /* RoomEmailInvitation.m */; }; - F083BDFA1E7009ED00A9B29C /* RoomPreviewData.m in Sources */ = {isa = PBXBuildFile; fileRef = F083BBFE1E7009EC00A9B29C /* RoomPreviewData.m */; }; - F083BE011E7009ED00A9B29C /* third_party_licenses.html in Resources */ = {isa = PBXBuildFile; fileRef = F083BC0E1E7009EC00A9B29C /* third_party_licenses.html */; }; - F083BE021E7009ED00A9B29C /* AvatarGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = F083BC111E7009EC00A9B29C /* AvatarGenerator.m */; }; - F083BE031E7009ED00A9B29C /* EventFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = F083BC131E7009EC00A9B29C /* EventFormatter.m */; }; - F083BE041E7009ED00A9B29C /* Tools.m in Sources */ = {isa = PBXBuildFile; fileRef = F083BC151E7009EC00A9B29C /* Tools.m */; }; - F083BE061E7009ED00A9B29C /* Riot-Defaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = F083BC181E7009EC00A9B29C /* Riot-Defaults.plist */; }; - F083BEA51E70356E00A9B29C /* RiotTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F083BB041E7005FD00A9B29C /* RiotTests.m */; }; - F0A8955F1F7D1FEA00BD6C2A /* MXRoomSummary+Riot.m in Sources */ = {isa = PBXBuildFile; fileRef = F0D2ADA01F6AA5FD00A7097D /* MXRoomSummary+Riot.m */; }; - F0D2ADA11F6AA5FD00A7097D /* MXRoomSummary+Riot.m in Sources */ = {isa = PBXBuildFile; fileRef = F0D2ADA01F6AA5FD00A7097D /* MXRoomSummary+Riot.m */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 242661F51F12B1BA00D3FC08 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = F094A99A1B78D8F000B1FBBF /* Project object */; - proxyType = 1; - remoteGlobalIDString = 24CBEC4D1F0EAD310093EABB; - remoteInfo = "Riot Share Extension"; - }; - 92726A491F58737A004AD26F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = F094A99A1B78D8F000B1FBBF /* Project object */; - proxyType = 1; - remoteGlobalIDString = 92726A421F58737A004AD26F; - remoteInfo = SiriIntents; - }; - EC85D7482477E5F7002C44C9 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = F094A99A1B78D8F000B1FBBF /* Project object */; - proxyType = 1; - remoteGlobalIDString = EC85D7422477E5F7002C44C9; - remoteInfo = RiotNSE; - }; - F094A9BF1B78D8F000B1FBBF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = F094A99A1B78D8F000B1FBBF /* Project object */; - proxyType = 1; - remoteGlobalIDString = F094A9A11B78D8F000B1FBBF; - remoteInfo = Vector; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 24CBEC5D1F0EAD310093EABB /* Embed App Extensions */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 13; - files = ( - 24CBEC591F0EAD310093EABB /* RiotShareExtension.appex in Embed App Extensions */, - 92726A4B1F58737A004AD26F /* SiriIntents.appex in Embed App Extensions */, - EC85D74A2477E5F7002C44C9 /* RiotNSE.appex in Embed App Extensions */, - ); - name = "Embed App Extensions"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 129EB7E27E7E4AC3F5F098F5 /* Pods_RiotTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RiotTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 1ACF09217ADF1D7E7A35BC02 /* Pods_RiotPods_Riot.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RiotPods_Riot.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 24CBEC4E1F0EAD310093EABB /* RiotShareExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = RiotShareExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; - 2B582BE9B2A98BCF5F740873 /* Pods-RiotPods-RiotNSE.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RiotPods-RiotNSE.debug.xcconfig"; path = "Target Support Files/Pods-RiotPods-RiotNSE/Pods-RiotPods-RiotNSE.debug.xcconfig"; sourceTree = ""; }; - 3209451121F1C1430088CAA2 /* BlackTheme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlackTheme.swift; sourceTree = ""; }; - 32242F0821E8B05F00725742 /* UIColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColor.swift; sourceTree = ""; }; - 32242F0C21E8FBA900725742 /* ThemeService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ThemeService.m; sourceTree = ""; }; - 32242F0D21E8FBA900725742 /* Theme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Theme.swift; sourceTree = ""; }; - 32242F0F21E8FBA900725742 /* DefaultTheme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultTheme.swift; sourceTree = ""; }; - 32242F1021E8FBA900725742 /* DarkTheme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DarkTheme.swift; sourceTree = ""; }; - 32242F1121E8FBA900725742 /* ThemeService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThemeService.h; sourceTree = ""; }; - 322C110722BBC6F80043FEAC /* WidgetManagerConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetManagerConfig.swift; sourceTree = ""; }; - 3232AB0022564D9100AD6A5C /* swiftgen-config.yml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "swiftgen-config.yml"; sourceTree = ""; }; - 3232AB0322564D9100AD6A5C /* flat-swift4-vector.stencil */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "flat-swift4-vector.stencil"; sourceTree = ""; }; - 3232AB1322564D9100AD6A5C /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - 3232AB3C2256558300AD6A5C /* FlowTemplateCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FlowTemplateCoordinatorType.swift; sourceTree = ""; }; - 3232AB3D2256558300AD6A5C /* FlowTemplateCoordinatorBridgePresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FlowTemplateCoordinatorBridgePresenter.swift; sourceTree = ""; }; - 3232AB3E2256558300AD6A5C /* FlowTemplateCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FlowTemplateCoordinator.swift; sourceTree = ""; }; - 3232AB402256558300AD6A5C /* TemplateScreenViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = TemplateScreenViewController.storyboard; sourceTree = ""; }; - 3232AB412256558300AD6A5C /* TemplateScreenCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TemplateScreenCoordinator.swift; sourceTree = ""; }; - 3232AB422256558300AD6A5C /* TemplateScreenCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TemplateScreenCoordinatorType.swift; sourceTree = ""; }; - 3232AB432256558300AD6A5C /* TemplateScreenViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TemplateScreenViewModelType.swift; sourceTree = ""; }; - 3232AB442256558300AD6A5C /* TemplateScreenViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TemplateScreenViewController.swift; sourceTree = ""; }; - 3232AB452256558300AD6A5C /* TemplateScreenViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TemplateScreenViewState.swift; sourceTree = ""; }; - 3232AB462256558300AD6A5C /* TemplateScreenViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TemplateScreenViewAction.swift; sourceTree = ""; }; - 3232AB472256558300AD6A5C /* TemplateScreenViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TemplateScreenViewModel.swift; sourceTree = ""; }; - 3232AB95225730E100AD6A5C /* KeyVerificationCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationCoordinatorType.swift; sourceTree = ""; }; - 3232AB97225730E100AD6A5C /* DeviceVerificationStartViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = DeviceVerificationStartViewController.storyboard; sourceTree = ""; }; - 3232AB98225730E100AD6A5C /* DeviceVerificationStartCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceVerificationStartCoordinatorType.swift; sourceTree = ""; }; - 3232AB99225730E100AD6A5C /* DeviceVerificationStartViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceVerificationStartViewAction.swift; sourceTree = ""; }; - 3232AB9A225730E100AD6A5C /* DeviceVerificationStartViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceVerificationStartViewModelType.swift; sourceTree = ""; }; - 3232AB9B225730E100AD6A5C /* DeviceVerificationStartViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceVerificationStartViewController.swift; sourceTree = ""; }; - 3232AB9C225730E100AD6A5C /* DeviceVerificationStartCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceVerificationStartCoordinator.swift; sourceTree = ""; }; - 3232AB9D225730E100AD6A5C /* DeviceVerificationStartViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceVerificationStartViewState.swift; sourceTree = ""; }; - 3232AB9E225730E100AD6A5C /* DeviceVerificationStartViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceVerificationStartViewModel.swift; sourceTree = ""; }; - 3232ABA0225730E100AD6A5C /* KeyVerificationCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationCoordinator.swift; sourceTree = ""; }; - 3232ABC1225B996100AD6A5C /* Themable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Themable.swift; sourceTree = ""; }; - 323AB945232BD74600C1451F /* AuthFallBackViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AuthFallBackViewController.h; sourceTree = ""; }; - 323AB946232BD74600C1451F /* AuthFallBackViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AuthFallBackViewController.m; sourceTree = ""; }; - 324A2047225FC571004FE8B0 /* DeviceVerificationIncomingViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = DeviceVerificationIncomingViewController.storyboard; sourceTree = ""; }; - 324A2048225FC571004FE8B0 /* DeviceVerificationIncomingViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceVerificationIncomingViewController.swift; sourceTree = ""; }; - 324A2049225FC571004FE8B0 /* DeviceVerificationIncomingViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceVerificationIncomingViewState.swift; sourceTree = ""; }; - 324A204A225FC571004FE8B0 /* DeviceVerificationIncomingViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceVerificationIncomingViewAction.swift; sourceTree = ""; }; - 324A204B225FC571004FE8B0 /* DeviceVerificationIncomingViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceVerificationIncomingViewModel.swift; sourceTree = ""; }; - 324A204C225FC571004FE8B0 /* DeviceVerificationIncomingCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceVerificationIncomingCoordinatorType.swift; sourceTree = ""; }; - 324A204D225FC571004FE8B0 /* DeviceVerificationIncomingViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceVerificationIncomingViewModelType.swift; sourceTree = ""; }; - 324A204E225FC571004FE8B0 /* DeviceVerificationIncomingCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceVerificationIncomingCoordinator.swift; sourceTree = ""; }; - 325789A5237AB241009388E6 /* cy */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cy; path = cy.lproj/InfoPlist.strings; sourceTree = ""; }; - 325789A6237AB27F009388E6 /* cy */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cy; path = cy.lproj/Localizable.strings; sourceTree = ""; }; - 325789A7237AB297009388E6 /* cy */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cy; path = cy.lproj/Vector.strings; sourceTree = ""; }; - 32607D64243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverFromPrivateKeyViewController.swift; sourceTree = ""; }; - 32607D65243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverFromPrivateKeyCoordinatorType.swift; sourceTree = ""; }; - 32607D66243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverFromPrivateKeyViewModelType.swift; sourceTree = ""; }; - 32607D67243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = KeyBackupRecoverFromPrivateKeyViewController.storyboard; sourceTree = ""; }; - 32607D68243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverFromPrivateKeyViewModel.swift; sourceTree = ""; }; - 32607D69243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverFromPrivateKeyViewState.swift; sourceTree = ""; }; - 32607D6A243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverFromPrivateKeyViewAction.swift; sourceTree = ""; }; - 32607D6B243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverFromPrivateKeyCoordinator.swift; sourceTree = ""; }; - 3267EFB320E379FD00FF1CAA /* CHANGES.rst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CHANGES.rst; sourceTree = ""; }; - 3267EFB420E379FD00FF1CAA /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; fileEncoding = 4; path = Podfile; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 3267EFB520E379FD00FF1CAA /* AUTHORS.rst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AUTHORS.rst; sourceTree = ""; }; - 3275FD8B21A5A2C500B9C13D /* TermsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TermsView.swift; sourceTree = ""; }; - 3281BCF62201FA4200F4A383 /* UIControl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIControl.swift; sourceTree = ""; }; - 3284A35020A07C210044F922 /* postMessageAPI.js */ = {isa = PBXFileReference; explicitFileType = sourcecode.javascript; fileEncoding = 4; path = postMessageAPI.js; sourceTree = ""; }; - 32863A592384070300D07C4A /* RiotSharedSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RiotSharedSettings.swift; sourceTree = ""; }; - 32863A5B2384074C00D07C4A /* RiotSettingAllowedWidgets.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RiotSettingAllowedWidgets.swift; sourceTree = ""; }; - 32891D692264CBA300C82226 /* SimpleScreenTemplateViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SimpleScreenTemplateViewController.swift; sourceTree = ""; }; - 32891D6A2264CBA300C82226 /* SimpleScreenTemplateViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = SimpleScreenTemplateViewController.storyboard; sourceTree = ""; }; - 32891D73226728EE00C82226 /* KeyVerificationDataLoadingViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationDataLoadingViewController.swift; sourceTree = ""; }; - 32891D74226728EE00C82226 /* KeyVerificationDataLoadingViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = KeyVerificationDataLoadingViewController.storyboard; sourceTree = ""; }; - 328E410524CB168500DC4490 /* AppConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppConfiguration.swift; sourceTree = ""; }; - 3291DC8923E0BE820009732F /* Security.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Security.storyboard; sourceTree = ""; }; - 3291DC8B23E0BFF10009732F /* SecurityViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SecurityViewController.h; sourceTree = ""; }; - 3291DC8C23E0BFF10009732F /* SecurityViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SecurityViewController.m; sourceTree = ""; }; - 329E746422CD02EA006F9797 /* BubbleReactionActionViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = BubbleReactionActionViewCell.xib; sourceTree = ""; }; - 329E746522CD02EA006F9797 /* BubbleReactionActionViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BubbleReactionActionViewCell.swift; sourceTree = ""; }; - 32A6000D22C661100042C1D9 /* EditHistoryViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EditHistoryViewState.swift; sourceTree = ""; }; - 32A6000E22C661100042C1D9 /* EditHistoryViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EditHistoryViewController.swift; sourceTree = ""; }; - 32A6000F22C661100042C1D9 /* EditHistoryViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EditHistoryViewModel.swift; sourceTree = ""; }; - 32A6001022C661100042C1D9 /* EditHistoryViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EditHistoryViewModelType.swift; sourceTree = ""; }; - 32A6001122C661100042C1D9 /* EditHistoryCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EditHistoryCoordinator.swift; sourceTree = ""; }; - 32A6001222C661100042C1D9 /* EditHistoryViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EditHistoryViewAction.swift; sourceTree = ""; }; - 32A6001322C661100042C1D9 /* EditHistoryViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = EditHistoryViewController.storyboard; sourceTree = ""; }; - 32A6001422C661100042C1D9 /* EditHistoryCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EditHistoryCoordinatorType.swift; sourceTree = ""; }; - 32A6001522C661100042C1D9 /* EditHistoryCoordinatorBridgePresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EditHistoryCoordinatorBridgePresenter.swift; sourceTree = ""; }; - 32A6001F22C66FCF0042C1D9 /* EditHistoryMessage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditHistoryMessage.swift; sourceTree = ""; }; - 32B1FEDA21A46F2C00637127 /* TermsView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TermsView.xib; sourceTree = ""; }; - 32B94DF2228EC26400716A26 /* ReactionsMenuViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReactionsMenuViewAction.swift; sourceTree = ""; }; - 32B94DF3228EC26400716A26 /* ReactionsMenuButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReactionsMenuButton.swift; sourceTree = ""; }; - 32BDC9A1211C2C870064AF51 /* zh_Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh_Hant; path = zh_Hant.lproj/InfoPlist.strings; sourceTree = ""; }; - 32BDC9A2211C2C870064AF51 /* zh_Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh_Hant; path = zh_Hant.lproj/Localizable.strings; sourceTree = ""; }; - 32BDC9A3211C2C870064AF51 /* zh_Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh_Hant; path = zh_Hant.lproj/Vector.strings; sourceTree = ""; }; - 32BDC9A4211C34C90064AF51 /* sq */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sq; path = sq.lproj/InfoPlist.strings; sourceTree = ""; }; - 32BDC9A5211C34C90064AF51 /* sq */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sq; path = sq.lproj/Localizable.strings; sourceTree = ""; }; - 32BDC9A6211C34C90064AF51 /* sq */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sq; path = sq.lproj/Vector.strings; sourceTree = ""; }; - 32BF994E21FA29A400698084 /* SettingsKeyBackupViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsKeyBackupViewModel.swift; sourceTree = ""; }; - 32BF995021FA29DC00698084 /* SettingsKeyBackupViewModelType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsKeyBackupViewModelType.swift; sourceTree = ""; }; - 32BF995221FA2A1300698084 /* SettingsKeyBackupViewState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsKeyBackupViewState.swift; sourceTree = ""; }; - 32BF995421FA2AB700698084 /* SettingsKeyBackupViewAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsKeyBackupViewAction.swift; sourceTree = ""; }; - 32BF995621FB07A400698084 /* SettingsKeyBackupTableViewSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsKeyBackupTableViewSection.swift; sourceTree = ""; }; - 32D5D15D23E1EE2700E3E37C /* ManageSessionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ManageSessionViewController.m; sourceTree = ""; }; - 32D5D15E23E1EE2700E3E37C /* ManageSession.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = ManageSession.storyboard; sourceTree = ""; }; - 32D5D15F23E1EE2700E3E37C /* ManageSessionViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ManageSessionViewController.h; sourceTree = ""; }; - 32D7159E2146CC6F00DF59C9 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Vector.strings; sourceTree = ""; }; - 32D7159F2146CC7F00DF59C9 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = ""; }; - 32D715A02146CC8800DF59C9 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; }; - 32DAF8DB231813C800654A44 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/InfoPlist.strings; sourceTree = ""; }; - 32DAF8DC231813D500654A44 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Localizable.strings; sourceTree = ""; }; - 32DAF8DD231813E100654A44 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Vector.strings; sourceTree = ""; }; - 32DB556922FDADE50016329E /* ServiceTermsModalCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceTermsModalCoordinatorType.swift; sourceTree = ""; }; - 32DB556A22FDADE50016329E /* ServiceTermsModalCoordinatorBridgePresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceTermsModalCoordinatorBridgePresenter.swift; sourceTree = ""; }; - 32DB556B22FDADE50016329E /* ServiceTermsModalCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceTermsModalCoordinator.swift; sourceTree = ""; }; - 32DB556D22FDADE50016329E /* ServiceTermsModalScreenViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceTermsModalScreenViewState.swift; sourceTree = ""; }; - 32DB556E22FDADE50016329E /* ServiceTermsModalScreenViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceTermsModalScreenViewModel.swift; sourceTree = ""; }; - 32DB556F22FDADE50016329E /* ServiceTermsModalScreenViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceTermsModalScreenViewController.swift; sourceTree = ""; }; - 32DB557022FDADE50016329E /* ServiceTermsModalScreenViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = ServiceTermsModalScreenViewController.storyboard; sourceTree = ""; }; - 32DB557122FDADE50016329E /* ServiceTermsModalScreenViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceTermsModalScreenViewModelType.swift; sourceTree = ""; }; - 32DB557222FDADE50016329E /* ServiceTermsModalScreenCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceTermsModalScreenCoordinatorType.swift; sourceTree = ""; }; - 32DB557322FDADE50016329E /* ServiceTermsModalScreenViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceTermsModalScreenViewAction.swift; sourceTree = ""; }; - 32DB557422FDADE50016329E /* ServiceTermsModalScreenCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceTermsModalScreenCoordinator.swift; sourceTree = ""; }; - 32F6B9632270623000BBA352 /* KeyVerificationDataLoadingCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationDataLoadingCoordinator.swift; sourceTree = ""; }; - 32F6B9642270623100BBA352 /* KeyVerificationDataLoadingViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationDataLoadingViewState.swift; sourceTree = ""; }; - 32F6B9652270623100BBA352 /* KeyVerificationDataLoadingViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationDataLoadingViewAction.swift; sourceTree = ""; }; - 32F6B9662270623100BBA352 /* KeyVerificationDataLoadingCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationDataLoadingCoordinatorType.swift; sourceTree = ""; }; - 32F6B9672270623100BBA352 /* KeyVerificationDataLoadingViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationDataLoadingViewModel.swift; sourceTree = ""; }; - 32F6B9682270623100BBA352 /* KeyVerificationDataLoadingViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationDataLoadingViewModelType.swift; sourceTree = ""; }; - 32FD754F24D074C700BA7B37 /* CommonConfiguration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CommonConfiguration.swift; sourceTree = ""; }; - 32FD755624D15C7A00BA7B37 /* Configurable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Configurable.swift; sourceTree = ""; }; - 32FD756324D2AD5100BA7B37 /* BuildSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BuildSettings.swift; sourceTree = ""; }; - 32FD756F24D2BEF700BA7B37 /* InfoPlist.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InfoPlist.swift; sourceTree = ""; }; - 32FD757524D2C9BA00BA7B37 /* Bundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Bundle.swift; sourceTree = ""; }; - 32FDC1CC2386CD390084717A /* RiotSettingIntegrationProvisioning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RiotSettingIntegrationProvisioning.swift; sourceTree = ""; }; - 3942DD65EBEB7AE647C6392A /* Pods-RiotPods-SiriIntents.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RiotPods-SiriIntents.debug.xcconfig"; path = "Target Support Files/Pods-RiotPods-SiriIntents/Pods-RiotPods-SiriIntents.debug.xcconfig"; sourceTree = ""; }; - 3AA7D00B2587FF0000420A72 /* EncryptionKeyManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EncryptionKeyManager.swift; sourceTree = ""; }; - 3D78489021AC9E6400B98A7D /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = ""; }; - 3D78489121AC9E6500B98A7D /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = ""; }; - 3D78489221AC9E6500B98A7D /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Vector.strings; sourceTree = ""; }; - 3D78489321ACA25200B98A7D /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/InfoPlist.strings; sourceTree = ""; }; - 3D78489421ACA25300B98A7D /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Localizable.strings; sourceTree = ""; }; - 3D78489521ACA25300B98A7D /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Vector.strings; sourceTree = ""; }; - 43C2962BE367F59220F517FA /* Pods-RiotPods-Riot.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RiotPods-Riot.debug.xcconfig"; path = "Target Support Files/Pods-RiotPods-Riot/Pods-RiotPods-Riot.debug.xcconfig"; sourceTree = ""; }; - 4FC6A5D63FAD1B27C2F57AFA /* Pods-RiotPods-RiotShareExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RiotPods-RiotShareExtension.release.xcconfig"; path = "Target Support Files/Pods-RiotPods-RiotShareExtension/Pods-RiotPods-RiotShareExtension.release.xcconfig"; sourceTree = ""; }; - 51187E952D5CECF6D6F5A28E /* Pods_RiotPods_SiriIntents.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RiotPods_SiriIntents.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8A61E94F88EA96AFE1CFD9D3 /* Pods-RiotPods-RiotNSE.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RiotPods-RiotNSE.release.xcconfig"; path = "Target Support Files/Pods-RiotPods-RiotNSE/Pods-RiotPods-RiotNSE.release.xcconfig"; sourceTree = ""; }; - 926FA53D1F4C132000F826C2 /* MXSession+Riot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MXSession+Riot.h"; sourceTree = ""; }; - 926FA53E1F4C132000F826C2 /* MXSession+Riot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MXSession+Riot.m"; sourceTree = ""; }; - 92726A431F58737A004AD26F /* SiriIntents.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = SiriIntents.appex; sourceTree = BUILT_PRODUCTS_DIR; }; - 92726A451F58737A004AD26F /* IntentHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IntentHandler.h; sourceTree = ""; }; - 92726A461F58737A004AD26F /* IntentHandler.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = IntentHandler.m; sourceTree = ""; }; - 92726A481F58737A004AD26F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 92726A4F1F587393004AD26F /* SiriIntents.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = SiriIntents.entitlements; sourceTree = ""; }; - 92726A501F587410004AD26F /* Intents.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Intents.framework; path = System/Library/Frameworks/Intents.framework; sourceTree = SDKROOT; }; - 97151D7F0F892081250D50A3 /* Pods_RiotPods_RiotShareExtension.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RiotPods_RiotShareExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 9C3242E3FE95BCDA9562C75D /* Pods-RiotPods-RiotShareExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RiotPods-RiotShareExtension.debug.xcconfig"; path = "Target Support Files/Pods-RiotPods-RiotShareExtension/Pods-RiotPods-RiotShareExtension.debug.xcconfig"; sourceTree = ""; }; - AC34BF67FD21A9D01C16AE5D /* Pods-RiotTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RiotTests.release.xcconfig"; path = "Target Support Files/Pods-RiotTests/Pods-RiotTests.release.xcconfig"; sourceTree = ""; }; - B1057788221304EB00334B1E /* KeyBackupSetupSuccessFromPassphraseViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyBackupSetupSuccessFromPassphraseViewController.swift; sourceTree = ""; }; - B105778A221304FA00334B1E /* KeyBackupSetupSuccessFromPassphraseViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = KeyBackupSetupSuccessFromPassphraseViewController.storyboard; sourceTree = ""; }; - B105778C2213051E00334B1E /* KeyBackupSetupSuccessFromRecoveryKeyViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyBackupSetupSuccessFromRecoveryKeyViewController.swift; sourceTree = ""; }; - B105778E2213052A00334B1E /* KeyBackupSetupSuccessFromRecoveryKeyViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = KeyBackupSetupSuccessFromRecoveryKeyViewController.storyboard; sourceTree = ""; }; - B108931E23AB80EF00802670 /* KeyVerificationIncomingRequestApprovalBubbleCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyVerificationIncomingRequestApprovalBubbleCell.swift; sourceTree = ""; }; - B108932023AB8D7D00802670 /* KeyVerificationIncomingRequestApprovalViewData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyVerificationIncomingRequestApprovalViewData.swift; sourceTree = ""; }; - B108932223AB908A00802670 /* KeyVerificationRequestStatusViewData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyVerificationRequestStatusViewData.swift; sourceTree = ""; }; - B108932423AB93A200802670 /* KeyVerificationConclusionViewData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyVerificationConclusionViewData.swift; sourceTree = ""; }; - B108932723ABEE6700802670 /* BubbleCellReadReceiptsDisplayable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BubbleCellReadReceiptsDisplayable.swift; sourceTree = ""; }; - B1098BDA21ECE09E000DDA48 /* Strings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Strings.swift; sourceTree = ""; }; - B1098BDC21ECE09E000DDA48 /* Images.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Images.swift; sourceTree = ""; }; - B1098BDE21ECE09E000DDA48 /* RiotDefaults.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RiotDefaults.swift; sourceTree = ""; }; - B1098BE421ECE1FC000DDA48 /* Storyboards.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Storyboards.swift; sourceTree = ""; }; - B1098BE721ECFE51000DDA48 /* Coordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Coordinator.swift; sourceTree = ""; }; - B1098BEA21ECFE64000DDA48 /* KeyBackupSetupPassphraseCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyBackupSetupPassphraseCoordinator.swift; sourceTree = ""; }; - B1098BEB21ECFE64000DDA48 /* PasswordStrength.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasswordStrength.swift; sourceTree = ""; }; - B1098BEC21ECFE64000DDA48 /* KeyBackupSetupPassphraseViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = KeyBackupSetupPassphraseViewController.storyboard; sourceTree = ""; }; - B1098BED21ECFE64000DDA48 /* KeyBackupSetupCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyBackupSetupCoordinator.swift; sourceTree = ""; }; - B1098BEE21ECFE64000DDA48 /* KeyBackupSetupPassphraseViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyBackupSetupPassphraseViewModel.swift; sourceTree = ""; }; - B1098BEF21ECFE64000DDA48 /* KeyBackupSetupCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyBackupSetupCoordinatorType.swift; sourceTree = ""; }; - B1098BF021ECFE64000DDA48 /* PasswordStrengthView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PasswordStrengthView.xib; sourceTree = ""; }; - B1098BF121ECFE64000DDA48 /* PasswordStrengthManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasswordStrengthManager.swift; sourceTree = ""; }; - B1098BF221ECFE64000DDA48 /* KeyBackupSetupPassphraseViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyBackupSetupPassphraseViewModelType.swift; sourceTree = ""; }; - B1098BF321ECFE64000DDA48 /* PasswordStrengthView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasswordStrengthView.swift; sourceTree = ""; }; - B1098BF421ECFE64000DDA48 /* KeyBackupSetupPassphraseViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyBackupSetupPassphraseViewController.swift; sourceTree = ""; }; - B1098BF521ECFE64000DDA48 /* KeyBackupSetupPassphraseCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyBackupSetupPassphraseCoordinatorType.swift; sourceTree = ""; }; - B1098C0821ED07E4000DDA48 /* NavigationRouter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NavigationRouter.swift; sourceTree = ""; }; - B1098C0B21ED07E4000DDA48 /* Presentable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Presentable.swift; sourceTree = ""; }; - B1098C0C21ED07E4000DDA48 /* NavigationRouterType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NavigationRouterType.swift; sourceTree = ""; }; - B109D6F0222D8C400061B6D9 /* UIApplication.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIApplication.swift; sourceTree = ""; }; - B10A3E8B24FE4367007C380F /* ElementView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ElementView.swift; sourceTree = ""; }; - B10A3E8C24FE4367007C380F /* Timeline_1.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Timeline_1.swift; sourceTree = ""; }; - B10A3E8D24FE4367007C380F /* ElementViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ElementViewController.swift; sourceTree = ""; }; - B10A3E9124FE8254007C380F /* AppCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppCoordinator.swift; sourceTree = ""; }; - B10A3E9224FE8254007C380F /* AppCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppCoordinatorType.swift; sourceTree = ""; }; - B10A3E9624FE86AE007C380F /* SplitViewCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SplitViewCoordinatorType.swift; sourceTree = ""; }; - B10A3E9724FE86AF007C380F /* SplitViewCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SplitViewCoordinator.swift; sourceTree = ""; }; - B10A3E9A24FE88CA007C380F /* RootRouter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RootRouter.swift; sourceTree = ""; }; - B10A3E9B24FE88CB007C380F /* RootRouterType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RootRouterType.swift; sourceTree = ""; }; - B10A3E9E24FFC3E5007C380F /* PlaceholderDetailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaceholderDetailViewController.swift; sourceTree = ""; }; - B10CFBC22268D99D00A5842E /* JitsiService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JitsiService.swift; sourceTree = ""; }; - B1107EC72200B0720038014B /* KeyBackupRecoverSuccessViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverSuccessViewController.swift; sourceTree = ""; }; - B1107EC92200B09F0038014B /* KeyBackupRecoverSuccessViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = KeyBackupRecoverSuccessViewController.storyboard; sourceTree = ""; }; - B110871C21F087F4003554A5 /* KeyBackupSetupPassphraseViewState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyBackupSetupPassphraseViewState.swift; sourceTree = ""; }; - B110871F21F098EF003554A5 /* ActivityIndicatorPresenterType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActivityIndicatorPresenterType.swift; sourceTree = ""; }; - B110872021F098EF003554A5 /* ActivityIndicatorView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ActivityIndicatorView.xib; sourceTree = ""; }; - B110872121F098EF003554A5 /* ActivityIndicatorPresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActivityIndicatorPresenter.swift; sourceTree = ""; }; - B110872221F098F0003554A5 /* ActivityIndicatorView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActivityIndicatorView.swift; sourceTree = ""; }; - B11291E9238D35590077B478 /* SlidingModalPresentable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SlidingModalPresentable.swift; sourceTree = ""; }; - B11291EB238D704C0077B478 /* FloatingPoint.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FloatingPoint.swift; sourceTree = ""; }; - B11F4D1E256814E5009F1586 /* RootTabEmptyView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RootTabEmptyView.xib; sourceTree = ""; }; - B11F4D2025681500009F1586 /* RootTabEmptyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootTabEmptyView.swift; sourceTree = ""; }; - B120863622EF375F001F89E0 /* ReactionHistoryBridgeCoordinatorPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReactionHistoryBridgeCoordinatorPresenter.swift; sourceTree = ""; }; - B124BBD625645F3F0028996D /* RoomIdComponents.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomIdComponents.swift; sourceTree = ""; }; - B125FE1A231D5BF200B72806 /* SettingsDiscoveryTableViewSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsDiscoveryTableViewSection.swift; sourceTree = ""; }; - B125FE1C231D5DE400B72806 /* SettingsDiscoveryViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsDiscoveryViewModel.swift; sourceTree = ""; }; - B125FE1E231D5DF700B72806 /* SettingsDiscoveryViewModelType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsDiscoveryViewModelType.swift; sourceTree = ""; }; - B125FE20231D5E1D00B72806 /* SettingsDiscoveryViewAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsDiscoveryViewAction.swift; sourceTree = ""; }; - B125FE22231D5E4300B72806 /* SettingsDiscoveryViewState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsDiscoveryViewState.swift; sourceTree = ""; }; - B126767B2523E4D100BE6B98 /* SecretsResetCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsResetCoordinator.swift; sourceTree = ""; }; - B126767C2523E4D100BE6B98 /* SecretsResetViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsResetViewModelType.swift; sourceTree = ""; }; - B126767D2523E4D100BE6B98 /* SecretsResetViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsResetViewController.swift; sourceTree = ""; }; - B126767E2523E4D100BE6B98 /* SecretsResetCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsResetCoordinatorType.swift; sourceTree = ""; }; - B126767F2523E4D100BE6B98 /* SecretsResetViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = SecretsResetViewController.storyboard; sourceTree = ""; }; - B12676802523E4D100BE6B98 /* SecretsResetViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsResetViewState.swift; sourceTree = ""; }; - B12676812523E4D100BE6B98 /* SecretsResetViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsResetViewAction.swift; sourceTree = ""; }; - B12676822523E4D100BE6B98 /* SecretsResetViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsResetViewModel.swift; sourceTree = ""; }; - B12742B9258C46DC00731DA6 /* SSOAuthentificationSessionProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SSOAuthentificationSessionProtocol.swift; sourceTree = ""; }; - B12742BB258C472800731DA6 /* LegacySSOAuthentificationSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacySSOAuthentificationSession.swift; sourceTree = ""; }; - B1284E3D2535FEA6003529D7 /* SecureBackupSetupIntroViewModelType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureBackupSetupIntroViewModelType.swift; sourceTree = ""; }; - B1284E3F2535FEBA003529D7 /* SecureBackupSetupIntroViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureBackupSetupIntroViewModel.swift; sourceTree = ""; }; - B12C56EE2396CB5E00FAC6DE /* RoomMessageURLParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomMessageURLParser.swift; sourceTree = ""; }; - B12D79F323E2462000FACEDC /* UserVerificationStartCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserVerificationStartCoordinator.swift; sourceTree = ""; }; - B12D79F423E2462100FACEDC /* UserVerificationStartViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = UserVerificationStartViewController.storyboard; sourceTree = ""; }; - B12D79F523E2462100FACEDC /* UserVerificationStartViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserVerificationStartViewModelType.swift; sourceTree = ""; }; - B12D79F623E2462100FACEDC /* UserVerificationStartViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserVerificationStartViewController.swift; sourceTree = ""; }; - B12D79F723E2462100FACEDC /* UserVerificationStartViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserVerificationStartViewState.swift; sourceTree = ""; }; - B12D79F823E2462200FACEDC /* UserVerificationStartCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserVerificationStartCoordinatorType.swift; sourceTree = ""; }; - B12D79F923E2462200FACEDC /* UserVerificationStartViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserVerificationStartViewModel.swift; sourceTree = ""; }; - B12D79FA23E2462200FACEDC /* UserVerificationStartViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserVerificationStartViewAction.swift; sourceTree = ""; }; - B139C21A21FE5B9100BB68EC /* KeyBackupRecoverFromPassphraseViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverFromPassphraseViewModel.swift; sourceTree = ""; }; - B139C21C21FE5BF500BB68EC /* KeyBackupRecoverFromPassphraseViewModelType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverFromPassphraseViewModelType.swift; sourceTree = ""; }; - B139C21E21FE5D6600BB68EC /* KeyBackupRecoverFromPassphraseViewAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverFromPassphraseViewAction.swift; sourceTree = ""; }; - B139C22021FE5D9D00BB68EC /* KeyBackupRecoverFromPassphraseViewState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverFromPassphraseViewState.swift; sourceTree = ""; }; - B139C22221FF01B200BB68EC /* KeyBackupRecoverFromPassphraseCoordinatorType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverFromPassphraseCoordinatorType.swift; sourceTree = ""; }; - B139C22421FF01C100BB68EC /* KeyBackupRecoverFromPassphraseCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverFromPassphraseCoordinator.swift; sourceTree = ""; }; - B14084C523BF76890010F692 /* BubbleCellContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BubbleCellContentView.swift; sourceTree = ""; }; - B14084C723BF76CB0010F692 /* BubbleCellContentView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = BubbleCellContentView.xib; sourceTree = ""; }; - B14084C923BF89310010F692 /* KeyVerificationRequestStatusWithPaginationTitleBubbleCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyVerificationRequestStatusWithPaginationTitleBubbleCell.swift; sourceTree = ""; }; - B14084CB23BF9DE90010F692 /* KeyVerificationConclusionWithPaginationTitleBubbleCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyVerificationConclusionWithPaginationTitleBubbleCell.swift; sourceTree = ""; }; - B14084CD23BFA0990010F692 /* KeyVerificationIncomingRequestApprovalWithPaginationTitleBubbleCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyVerificationIncomingRequestApprovalWithPaginationTitleBubbleCell.swift; sourceTree = ""; }; - B140B4A121F87F7100E3F5FE /* OperationQueue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OperationQueue.swift; sourceTree = ""; }; - B140B4A521F89E7600E3F5FE /* KeyBackupSetupCoordinatorBridgePresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyBackupSetupCoordinatorBridgePresenter.swift; sourceTree = ""; }; - B140B4A721F8AB4600E3F5FE /* KeyBackupRecoverCoordinatorBridgePresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverCoordinatorBridgePresenter.swift; sourceTree = ""; }; - B142317822CCFA2000FFA96A /* EditHistoryCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditHistoryCell.swift; sourceTree = ""; }; - B142317922CCFA2000FFA96A /* EditHistoryCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = EditHistoryCell.xib; sourceTree = ""; }; - B14EED18257992D600448735 /* SocialLoginListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SocialLoginListView.swift; sourceTree = ""; }; - B14EED1A2579933100448735 /* SocialLoginListView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SocialLoginListView.xib; sourceTree = ""; }; - B14EED1C257D85DF00448735 /* SocialLoginButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SocialLoginButton.swift; sourceTree = ""; }; - B14F142622144F6400FA0595 /* KeyBackupRecoverFromRecoveryKeyViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = KeyBackupRecoverFromRecoveryKeyViewController.storyboard; sourceTree = ""; }; - B14F142722144F6400FA0595 /* KeyBackupRecoverFromRecoveryKeyViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverFromRecoveryKeyViewModelType.swift; sourceTree = ""; }; - B14F142822144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverFromRecoveryKeyCoordinatorType.swift; sourceTree = ""; }; - B14F142922144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverFromRecoveryKeyViewState.swift; sourceTree = ""; }; - B14F142A22144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverFromRecoveryKeyCoordinator.swift; sourceTree = ""; }; - B14F142B22144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverFromRecoveryKeyViewModel.swift; sourceTree = ""; }; - B14F142C22144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverFromRecoveryKeyViewAction.swift; sourceTree = ""; }; - B14F142D22144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverFromRecoveryKeyViewController.swift; sourceTree = ""; }; - B152C72D22DF55D80041315A /* RiotTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "RiotTests-Bridging-Header.h"; sourceTree = ""; }; - B152C73022DF561E0041315A /* EmojiServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiServiceTests.swift; sourceTree = ""; }; - B152C73422DF599B0041315A /* apple_emojis_data.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = apple_emojis_data.json; sourceTree = ""; }; - B1550FC72420E8F400CE097B /* QRCodeReaderViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = QRCodeReaderViewController.storyboard; sourceTree = ""; }; - B1550FC82420E8F400CE097B /* QRCodeReaderViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QRCodeReaderViewController.swift; sourceTree = ""; }; - B1550FC92420E8F400CE097B /* QRCodeGenerator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QRCodeGenerator.swift; sourceTree = ""; }; - B1560DA124B65AFA00490F50 /* LaunchLoadingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LaunchLoadingView.swift; sourceTree = ""; }; - B1560DA324B65B3700490F50 /* LaunchLoadingView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = LaunchLoadingView.xib; sourceTree = ""; }; - B1562CE42541D113002F8436 /* JitsiWellKnownTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JitsiWellKnownTests.swift; sourceTree = ""; }; - B1562CE62541DE25002F8436 /* JitsiAuthenticationType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JitsiAuthenticationType.swift; sourceTree = ""; }; - B157FA9723264AE800EBFBD4 /* SettingsDiscoveryThreePidDetailsCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsDiscoveryThreePidDetailsCoordinator.swift; sourceTree = ""; }; - B157FA9823264AE800EBFBD4 /* SettingsDiscoveryThreePidDetailsViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsDiscoveryThreePidDetailsViewModelType.swift; sourceTree = ""; }; - B157FA9923264AE800EBFBD4 /* SettingsDiscoveryThreePidDetailsCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsDiscoveryThreePidDetailsCoordinatorType.swift; sourceTree = ""; }; - B157FA9A23264AE800EBFBD4 /* SettingsDiscoveryThreePidDetailsViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsDiscoveryThreePidDetailsViewAction.swift; sourceTree = ""; }; - B157FA9B23264AE800EBFBD4 /* SettingsDiscoveryThreePidDetailsViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsDiscoveryThreePidDetailsViewState.swift; sourceTree = ""; }; - B157FA9C23264AE800EBFBD4 /* SettingsDiscoveryThreePidDetailsViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = SettingsDiscoveryThreePidDetailsViewController.storyboard; sourceTree = ""; }; - B157FA9D23264AE800EBFBD4 /* SettingsDiscoveryThreePidDetailsViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsDiscoveryThreePidDetailsViewModel.swift; sourceTree = ""; }; - B157FA9E23264AE800EBFBD4 /* SettingsDiscoveryThreePidDetailsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsDiscoveryThreePidDetailsViewController.swift; sourceTree = ""; }; - B157FAA723264BED00EBFBD4 /* SettingsDiscoveryThreePidDetailsCoordinatorBridgePresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsDiscoveryThreePidDetailsCoordinatorBridgePresenter.swift; sourceTree = ""; }; - B15825392475350A00604D79 /* EventFormatter+DTCoreTextFix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "EventFormatter+DTCoreTextFix.h"; sourceTree = ""; }; - B158253A2475350A00604D79 /* EventFormatter+DTCoreTextFix.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "EventFormatter+DTCoreTextFix.m"; sourceTree = ""; }; - B158E72025485B9E000A7F75 /* Base32Coder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Base32Coder.swift; sourceTree = ""; }; - B158E72225485EAB000A7F75 /* JitsiJWTTokenBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JitsiJWTTokenBuilder.swift; sourceTree = ""; }; - B1664BAD20F4E67500808783 /* FallbackViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FallbackViewController.xib; sourceTree = ""; }; - B1664BAE20F4E67500808783 /* FallbackViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FallbackViewController.m; sourceTree = ""; }; - B1664BAF20F4E67500808783 /* FallbackViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FallbackViewController.h; sourceTree = ""; }; - B1664BB120F4E67500808783 /* SharePresentingViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SharePresentingViewController.h; sourceTree = ""; }; - B1664BB220F4E67500808783 /* SharePresentingViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SharePresentingViewController.m; sourceTree = ""; }; - B1664BB520F4E67500808783 /* ShareDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ShareDataSource.m; sourceTree = ""; }; - B1664BB620F4E67500808783 /* ShareDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShareDataSource.h; sourceTree = ""; }; - B1664BB720F4E67500808783 /* ShareViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ShareViewController.xib; sourceTree = ""; }; - B1664BB820F4E67500808783 /* ShareViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ShareViewController.m; sourceTree = ""; }; - B1664BBA20F4E67500808783 /* RoomsListViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomsListViewController.xib; sourceTree = ""; }; - B1664BBB20F4E67500808783 /* RoomsListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomsListViewController.h; sourceTree = ""; }; - B1664BBC20F4E67500808783 /* RoomsListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomsListViewController.m; sourceTree = ""; }; - B1664BBE20F4E67500808783 /* RecentRoomTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RecentRoomTableViewCell.m; sourceTree = ""; }; - B1664BBF20F4E67500808783 /* RecentRoomTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RecentRoomTableViewCell.xib; sourceTree = ""; }; - B1664BC020F4E67500808783 /* RecentRoomTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RecentRoomTableViewCell.h; sourceTree = ""; }; - B1664BC120F4E67500808783 /* ShareViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShareViewController.h; sourceTree = ""; }; - B1664BC320F4E67600808783 /* ShareExtensionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShareExtensionManager.h; sourceTree = ""; }; - B1664BC420F4E67600808783 /* ShareExtensionManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ShareExtensionManager.m; sourceTree = ""; }; - B1664BD120F4E82700808783 /* RiotShareExtension-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "RiotShareExtension-Bridging-Header.h"; sourceTree = ""; }; - B1664BD220F4E82800808783 /* RiotShareExtension.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = RiotShareExtension.entitlements; sourceTree = ""; }; - B1664BD320F4E82800808783 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B1664D5A20F4EBEC00808783 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; - B1664D5B20F4EBED00808783 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/InfoPlist.strings; sourceTree = ""; }; - B1664D5E20F4EBEE00808783 /* eu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = eu; path = eu.lproj/InfoPlist.strings; sourceTree = ""; }; - B1664D5F20F4EBEE00808783 /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/InfoPlist.strings; sourceTree = ""; }; - B1664D6720F4EBF000808783 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Vector.strings; sourceTree = ""; }; - B1664D6920F4EBF000808783 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = ""; }; - B1664D6B20F4EBF000808783 /* eu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = eu; path = eu.lproj/Vector.strings; sourceTree = ""; }; - B1664D6C20F4EBF100808783 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Vector.strings; sourceTree = ""; }; - B1664D6D20F4EBF100808783 /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = ca.lproj/InfoPlist.strings; sourceTree = ""; }; - B1664D7320F4EBF200808783 /* eu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = eu; path = eu.lproj/Localizable.strings; sourceTree = ""; }; - B1664D7520F4EBF300808783 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - B1664D7720F4EBF300808783 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Localizable.strings; sourceTree = ""; }; - B1664D7820F4EBF400808783 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; }; - B1664D7920F4EBF400808783 /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = ca.lproj/Vector.strings; sourceTree = ""; }; - B1664D7A20F4EBF400808783 /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/Vector.strings; sourceTree = ""; }; - B1664D7B20F4EBF400808783 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = ""; }; - B1664D7D20F4EBF500808783 /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/Localizable.strings; sourceTree = ""; }; - B1664D7E20F4EBF500808783 /* is */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = is; path = is.lproj/Vector.strings; sourceTree = ""; }; - B1664D7F20F4EBF500808783 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/Vector.strings; sourceTree = ""; }; - B1664D8020F4EBF500808783 /* zh_Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh_Hans; path = zh_Hans.lproj/Localizable.strings; sourceTree = ""; }; - B1664D8220F4EBF600808783 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = ""; }; - B1664D8320F4EBF600808783 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = ""; }; - B1664D8520F4EBF700808783 /* zh_Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh_Hans; path = zh_Hans.lproj/InfoPlist.strings; sourceTree = ""; }; - B1664D8620F4EBF700808783 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Vector.strings; sourceTree = ""; }; - B1664D8820F4EBF700808783 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Vector.strings; sourceTree = ""; }; - B1664D8920F4EBF700808783 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = ""; }; - B1664D8A20F4EBF800808783 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Vector.strings; sourceTree = ""; }; - B1664D8B20F4EBF800808783 /* zh_Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh_Hans; path = zh_Hans.lproj/Vector.strings; sourceTree = ""; }; - B1664D8C20F4EBF800808783 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; }; - B1664D8D20F4EBF800808783 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/Localizable.strings; sourceTree = ""; }; - B1664D8E20F4EBF900808783 /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = ca.lproj/Localizable.strings; sourceTree = ""; }; - B169328620F3954A00746532 /* SharedImages.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = SharedImages.xcassets; sourceTree = ""; }; - B169329420F39E6200746532 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - B169329620F39E6300746532 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - B169329E20F3A21B00746532 /* Riot-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Riot-Bridging-Header.h"; sourceTree = ""; }; - B16932A020F3A21B00746532 /* Riot.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Riot.entitlements; sourceTree = ""; }; - B16932A120F3A21B00746532 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B16932A220F3A21B00746532 /* empty.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = empty.mm; sourceTree = ""; }; - B16932AF20F3AC9200746532 /* RoomSearchDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomSearchDataSource.m; sourceTree = ""; }; - B16932B020F3AC9200746532 /* RoomSearchDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomSearchDataSource.h; sourceTree = ""; }; - B16932E520F3C37100746532 /* HomeMessagesSearchDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeMessagesSearchDataSource.h; sourceTree = ""; }; - B16932E620F3C37100746532 /* HomeMessagesSearchDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeMessagesSearchDataSource.m; sourceTree = ""; }; - B16932E820F3C39000746532 /* UnifiedSearchRecentsDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnifiedSearchRecentsDataSource.h; sourceTree = ""; }; - B16932E920F3C39000746532 /* UnifiedSearchRecentsDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UnifiedSearchRecentsDataSource.m; sourceTree = ""; }; - B16932EC20F3C3C800746532 /* FilesSearchCellData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FilesSearchCellData.m; sourceTree = ""; }; - B16932ED20F3C3C800746532 /* FilesSearchCellData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FilesSearchCellData.h; sourceTree = ""; }; - B16932F020F3C49D00746532 /* GroupsDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupsDataSource.h; sourceTree = ""; }; - B16932F120F3C49E00746532 /* GroupsDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroupsDataSource.m; sourceTree = ""; }; - B16932F520F3C50E00746532 /* RecentsDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RecentsDataSource.h; sourceTree = ""; }; - B16932F620F3C50E00746532 /* RecentsDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RecentsDataSource.m; sourceTree = ""; }; - B16932F820F3C51900746532 /* RecentCellData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RecentCellData.h; sourceTree = ""; }; - B16932F920F3C51900746532 /* RecentCellData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RecentCellData.m; sourceTree = ""; }; - B16932FE20F3C97D00746532 /* RoomDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomDataSource.h; sourceTree = ""; }; - B16932FF20F3C97D00746532 /* RoomDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomDataSource.m; sourceTree = ""; }; - B169330120F3C98800746532 /* RoomBubbleCellData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomBubbleCellData.m; sourceTree = ""; }; - B169330220F3C98900746532 /* RoomBubbleCellData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomBubbleCellData.h; sourceTree = ""; }; - B169330620F3CA0D00746532 /* ContactsDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactsDataSource.m; sourceTree = ""; }; - B169330720F3CA0D00746532 /* ContactsDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactsDataSource.h; sourceTree = ""; }; - B169330920F3CA3900746532 /* Contact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Contact.h; sourceTree = ""; }; - B169330A20F3CA3900746532 /* Contact.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Contact.m; sourceTree = ""; }; - B169330E20F3CAFC00746532 /* PublicRoomTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PublicRoomTableViewCell.m; sourceTree = ""; }; - B169330F20F3CAFC00746532 /* PublicRoomTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PublicRoomTableViewCell.xib; sourceTree = ""; }; - B169331020F3CAFC00746532 /* PublicRoomTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PublicRoomTableViewCell.h; sourceTree = ""; }; - B169331220F3CAFC00746532 /* PublicRoomsDirectoryDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PublicRoomsDirectoryDataSource.m; sourceTree = ""; }; - B169331320F3CAFC00746532 /* PublicRoomsDirectoryDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PublicRoomsDirectoryDataSource.h; sourceTree = ""; }; - B16C028C25A71CA3008CA7B1 /* CustomSchemeURLConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomSchemeURLConstants.swift; sourceTree = ""; }; - B16D6353257D8FB0008BDC97 /* SocialLoginButtonFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SocialLoginButtonFactory.swift; sourceTree = ""; }; - B16DC22A2587DC35004DAB1A /* SSOAuthenticationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SSOAuthenticationService.swift; sourceTree = ""; }; - B16DC234258A723B004DAB1A /* SourceImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SourceImage.swift; sourceTree = ""; }; - B16DC237258A7595004DAB1A /* SocialLoginButtonStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SocialLoginButtonStyle.swift; sourceTree = ""; }; - B16DC239258A75B7004DAB1A /* SocialLoginButtonViewData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SocialLoginButtonViewData.swift; sourceTree = ""; }; - B16DC23B258A7D13004DAB1A /* ThemeService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeService.swift; sourceTree = ""; }; - B16DC23D258A8025004DAB1A /* ThemeIdentifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeIdentifier.swift; sourceTree = ""; }; - B17982FE2119FED2001FD722 /* GDPRConsentViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GDPRConsentViewController.swift; sourceTree = ""; }; - B1798301211B13B3001FD722 /* OnBoardingManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnBoardingManager.swift; sourceTree = ""; }; - B183226523F55D6B0035B2E8 /* CameraAccessManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CameraAccessManager.swift; sourceTree = ""; }; - B183226723F561380035B2E8 /* CameraAccessAlertPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CameraAccessAlertPresenter.swift; sourceTree = ""; }; - B183226B23F59F810035B2E8 /* CloseButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloseButton.swift; sourceTree = ""; }; - B185145424B7CFA700EE19EA /* AppVersion.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppVersion.swift; sourceTree = ""; }; - B185145A24B8C98200EE19EA /* MajorUpdateViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MajorUpdateViewController.swift; sourceTree = ""; }; - B185145C24B8C9A400EE19EA /* MajorUpdateViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = MajorUpdateViewController.storyboard; sourceTree = ""; }; - B18DEDCC243377C00075FEF7 /* KeyVerificationSelfVerifyWaitViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationSelfVerifyWaitViewModelType.swift; sourceTree = ""; }; - B18DEDCD243377C00075FEF7 /* KeyVerificationSelfVerifyWaitViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationSelfVerifyWaitViewModel.swift; sourceTree = ""; }; - B18DEDCE243377C00075FEF7 /* KeyVerificationSelfVerifyWaitCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationSelfVerifyWaitCoordinator.swift; sourceTree = ""; }; - B18DEDCF243377C00075FEF7 /* KeyVerificationSelfVerifyWaitViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = KeyVerificationSelfVerifyWaitViewController.storyboard; sourceTree = ""; }; - B18DEDD0243377C00075FEF7 /* KeyVerificationSelfVerifyWaitCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationSelfVerifyWaitCoordinatorType.swift; sourceTree = ""; }; - B18DEDD1243377C10075FEF7 /* KeyVerificationSelfVerifyWaitViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationSelfVerifyWaitViewController.swift; sourceTree = ""; }; - B18DEDD2243377C10075FEF7 /* KeyVerificationSelfVerifyWaitViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationSelfVerifyWaitViewState.swift; sourceTree = ""; }; - B18DEDD3243377C10075FEF7 /* KeyVerificationSelfVerifyWaitViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationSelfVerifyWaitViewAction.swift; sourceTree = ""; }; - B18DEDDC2433967C0075FEF7 /* KeyVerificationFlow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyVerificationFlow.swift; sourceTree = ""; }; - B190F55822CE356800AEB493 /* EditHistoryHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditHistoryHeaderView.swift; sourceTree = ""; }; - B190F55A22CE35FD00AEB493 /* EditHistoryHeaderView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = EditHistoryHeaderView.xib; sourceTree = ""; }; - B190F55C22CE5A9600AEB493 /* EditHistorySection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditHistorySection.swift; sourceTree = ""; }; - B1945CC6258B77520020D8D6 /* SocialLoginDataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SocialLoginDataSource.swift; sourceTree = ""; }; - B1945CC8258C04F20020D8D6 /* SSOAuthenticationPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SSOAuthenticationPresenter.swift; sourceTree = ""; }; - B1945CCA258C244F0020D8D6 /* SSOAuthentificationSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SSOAuthentificationSession.swift; sourceTree = ""; }; - B1963B25228F1C4800CBA17F /* BubbleReactionsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BubbleReactionsView.swift; sourceTree = ""; }; - B1963B26228F1C4800CBA17F /* BubbleReactionViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = BubbleReactionViewCell.xib; sourceTree = ""; }; - B1963B27228F1C4800CBA17F /* BubbleReactionsViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BubbleReactionsViewModel.swift; sourceTree = ""; }; - B1963B28228F1C4800CBA17F /* BubbleReactionViewData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BubbleReactionViewData.swift; sourceTree = ""; }; - B1963B29228F1C4800CBA17F /* BubbleReactionViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BubbleReactionViewCell.swift; sourceTree = ""; }; - B1963B2A228F1C4800CBA17F /* BubbleReactionsView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = BubbleReactionsView.xib; sourceTree = ""; }; - B1963B31228F1C6B00CBA17F /* BubbleReactionsViewModelType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BubbleReactionsViewModelType.swift; sourceTree = ""; }; - B1963B3722933BC800CBA17F /* AutosizedCollectionView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutosizedCollectionView.swift; sourceTree = ""; }; - B197B7C5243DE947005ABBF3 /* EncryptionTrustLevelBadgeImageHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EncryptionTrustLevelBadgeImageHelper.swift; sourceTree = ""; }; - B19EFA3821F8BB2C00FC070E /* KeyBackupRecoverCoordinatorType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverCoordinatorType.swift; sourceTree = ""; }; - B19EFA3A21F8BB4100FC070E /* KeyBackupRecoverCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverCoordinator.swift; sourceTree = ""; }; - B1A15BD325A4BAA800BDCA36 /* CustomSchemeURLParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomSchemeURLParser.swift; sourceTree = ""; }; - B1A15BD525A526A200BDCA36 /* URLComponents.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLComponents.swift; sourceTree = ""; }; - B1A15BD825A6652800BDCA36 /* DeepLinkOption.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeepLinkOption.swift; sourceTree = ""; }; - B1A15BDA25A6680E00BDCA36 /* SSOURLConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SSOURLConstants.swift; sourceTree = ""; }; - B1A5B33D227ADF2A004CBA85 /* UIImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImage.swift; sourceTree = ""; }; - B1A6805324B7C65200E312CC /* MajorUpdateManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MajorUpdateManager.swift; sourceTree = ""; }; - B1A68592229E807800D6C09A /* RoomBubbleCellLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomBubbleCellLayout.swift; sourceTree = ""; }; - B1A6C10623881EF2002882FD /* SlidingModalPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SlidingModalPresenter.swift; sourceTree = ""; }; - B1A6C108238828A6002882FD /* SlidingModalPresentationDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SlidingModalPresentationDelegate.swift; sourceTree = ""; }; - B1A6C10A23882B6C002882FD /* SlidingModalPresentationAnimator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SlidingModalPresentationAnimator.swift; sourceTree = ""; }; - B1A6C10C23882D1D002882FD /* SlidingModalPresentationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SlidingModalPresentationController.swift; sourceTree = ""; }; - B1A6C110238BD236002882FD /* SlidingModalContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SlidingModalContainerView.swift; sourceTree = ""; }; - B1A6C112238BD245002882FD /* SlidingModalContainerView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SlidingModalContainerView.xib; sourceTree = ""; }; - B1B12B2822942315002CB419 /* UITouch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UITouch.swift; sourceTree = ""; }; - B1B336B6242B933300F95EC4 /* KeyVerificationSelfVerifyStartViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationSelfVerifyStartViewState.swift; sourceTree = ""; }; - B1B336B7242B933300F95EC4 /* KeyVerificationSelfVerifyStartViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationSelfVerifyStartViewController.swift; sourceTree = ""; }; - B1B336B8242B933400F95EC4 /* KeyVerificationSelfVerifyStartViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationSelfVerifyStartViewModelType.swift; sourceTree = ""; }; - B1B336B9242B933500F95EC4 /* KeyVerificationSelfVerifyStartCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationSelfVerifyStartCoordinatorType.swift; sourceTree = ""; }; - B1B336BA242B933500F95EC4 /* KeyVerificationSelfVerifyStartViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = KeyVerificationSelfVerifyStartViewController.storyboard; sourceTree = ""; }; - B1B336BB242B933500F95EC4 /* KeyVerificationSelfVerifyStartCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationSelfVerifyStartCoordinator.swift; sourceTree = ""; }; - B1B336BC242B933600F95EC4 /* KeyVerificationSelfVerifyStartViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationSelfVerifyStartViewAction.swift; sourceTree = ""; }; - B1B336BD242B933600F95EC4 /* KeyVerificationSelfVerifyStartViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationSelfVerifyStartViewModel.swift; sourceTree = ""; }; - B1B4E9B624D46EB3004D5C33 /* SizingViewHeight.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SizingViewHeight.swift; sourceTree = ""; }; - B1B4E9B724D46EB3004D5C33 /* SizableBubbleCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SizableBubbleCell.swift; sourceTree = ""; }; - B1B4E9B824D46EB3004D5C33 /* SizingViewHeightStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SizingViewHeightStore.swift; sourceTree = ""; }; - B1B4E9BC24D4701F004D5C33 /* BubbleCellReactionsDisplayable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BubbleCellReactionsDisplayable.swift; sourceTree = ""; }; - B1B4E9BE24D4703E004D5C33 /* BaseBubbleCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseBubbleCell.swift; sourceTree = ""; }; - B1B4E9C024D471FD004D5C33 /* BubbleReactionsViewSizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BubbleReactionsViewSizer.m; sourceTree = ""; }; - B1B4E9C124D471FD004D5C33 /* BubbleReactionsViewSizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BubbleReactionsViewSizer.h; sourceTree = ""; }; - B1B4E9C324D47206004D5C33 /* BubbleReactionsViewModelBuilder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BubbleReactionsViewModelBuilder.swift; sourceTree = ""; }; - B1B5567920EE6C4C00210D55 /* CountryPickerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CountryPickerViewController.h; sourceTree = ""; }; - B1B5567A20EE6C4C00210D55 /* CountryPickerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CountryPickerViewController.m; sourceTree = ""; }; - B1B5567C20EE6C4C00210D55 /* LanguagePickerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LanguagePickerViewController.m; sourceTree = ""; }; - B1B5567D20EE6C4C00210D55 /* LanguagePickerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LanguagePickerViewController.h; sourceTree = ""; }; - B1B5567E20EE6C4C00210D55 /* SettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SettingsViewController.m; sourceTree = ""; }; - B1B5567F20EE6C4C00210D55 /* SettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingsViewController.h; sourceTree = ""; }; - B1B5568120EE6C4C00210D55 /* DeactivateAccountViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DeactivateAccountViewController.m; sourceTree = ""; }; - B1B5568220EE6C4C00210D55 /* DeactivateAccountViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeactivateAccountViewController.h; sourceTree = ""; }; - B1B5568320EE6C4C00210D55 /* DeactivateAccountViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = DeactivateAccountViewController.storyboard; sourceTree = ""; }; - B1B5568520EE6C4C00210D55 /* HomeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeViewController.m; sourceTree = ""; }; - B1B5568620EE6C4C00210D55 /* HomeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeViewController.h; sourceTree = ""; }; - B1B5568820EE6C4C00210D55 /* ContactDetailsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactDetailsViewController.m; sourceTree = ""; }; - B1B5568920EE6C4C00210D55 /* ContactsTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactsTableViewController.h; sourceTree = ""; }; - B1B5568A20EE6C4C00210D55 /* ContactDetailsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContactDetailsViewController.xib; sourceTree = ""; }; - B1B5568B20EE6C4C00210D55 /* ContactDetailsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsViewController.h; sourceTree = ""; }; - B1B5568C20EE6C4C00210D55 /* ContactsTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactsTableViewController.m; sourceTree = ""; }; - B1B5568D20EE6C4C00210D55 /* ContactsTableViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContactsTableViewController.xib; sourceTree = ""; }; - B1B5568F20EE6C4C00210D55 /* RoomViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomViewController.h; sourceTree = ""; }; - B1B5569120EE6C4C00210D55 /* RoomSettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomSettingsViewController.h; sourceTree = ""; }; - B1B5569220EE6C4C00210D55 /* RoomSettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomSettingsViewController.m; sourceTree = ""; }; - B1B5569420EE6C4C00210D55 /* AttachmentsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AttachmentsViewController.h; sourceTree = ""; }; - B1B5569520EE6C4C00210D55 /* AttachmentsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AttachmentsViewController.m; sourceTree = ""; }; - B1B5569620EE6C4C00210D55 /* RoomViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomViewController.xib; sourceTree = ""; }; - B1B5569920EE6C4C00210D55 /* RoomMessagesSearchViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomMessagesSearchViewController.h; sourceTree = ""; }; - B1B5569A20EE6C4C00210D55 /* RoomMessagesSearchViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomMessagesSearchViewController.m; sourceTree = ""; }; - B1B5569B20EE6C4C00210D55 /* RoomSearchViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomSearchViewController.h; sourceTree = ""; }; - B1B5569D20EE6C4C00210D55 /* RoomFilesSearchViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomFilesSearchViewController.h; sourceTree = ""; }; - B1B5569E20EE6C4C00210D55 /* RoomFilesSearchViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomFilesSearchViewController.m; sourceTree = ""; }; - B1B5569F20EE6C4C00210D55 /* RoomSearchViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomSearchViewController.m; sourceTree = ""; }; - B1B556A020EE6C4C00210D55 /* RoomViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomViewController.m; sourceTree = ""; }; - B1B556A220EE6C4C00210D55 /* RoomFilesViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomFilesViewController.m; sourceTree = ""; }; - B1B556A320EE6C4C00210D55 /* RoomFilesViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomFilesViewController.h; sourceTree = ""; }; - B1B556A520EE6C4C00210D55 /* RoomParticipantsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomParticipantsViewController.h; sourceTree = ""; }; - B1B556A720EE6C4C00210D55 /* RoomMemberDetailsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomMemberDetailsViewController.h; sourceTree = ""; }; - B1B556A820EE6C4C00210D55 /* RoomMemberDetailsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomMemberDetailsViewController.m; sourceTree = ""; }; - B1B556A920EE6C4C00210D55 /* RoomMemberDetailsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomMemberDetailsViewController.xib; sourceTree = ""; }; - B1B556AA20EE6C4C00210D55 /* RoomParticipantsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomParticipantsViewController.m; sourceTree = ""; }; - B1B556AB20EE6C4C00210D55 /* RoomParticipantsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomParticipantsViewController.xib; sourceTree = ""; }; - B1B556AD20EE6C4C00210D55 /* ReadReceiptsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReadReceiptsViewController.h; sourceTree = ""; }; - B1B556AE20EE6C4C00210D55 /* ReadReceiptsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ReadReceiptsViewController.xib; sourceTree = ""; }; - B1B556AF20EE6C4C00210D55 /* ReadReceiptsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ReadReceiptsViewController.m; sourceTree = ""; }; - B1B556B120EE6C4C00210D55 /* BugReportViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = BugReportViewController.xib; sourceTree = ""; }; - B1B556B220EE6C4C00210D55 /* BugReportViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BugReportViewController.h; sourceTree = ""; }; - B1B556B320EE6C4C00210D55 /* BugReportViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BugReportViewController.m; sourceTree = ""; }; - B1B556B620EE6C4C00210D55 /* GroupHomeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupHomeViewController.h; sourceTree = ""; }; - B1B556B720EE6C4C00210D55 /* GroupHomeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroupHomeViewController.m; sourceTree = ""; }; - B1B556B820EE6C4C00210D55 /* GroupHomeViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = GroupHomeViewController.xib; sourceTree = ""; }; - B1B556B920EE6C4C00210D55 /* GroupsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupsViewController.h; sourceTree = ""; }; - B1B556BB20EE6C4C00210D55 /* GroupDetailsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = GroupDetailsViewController.xib; sourceTree = ""; }; - B1B556BC20EE6C4C00210D55 /* GroupDetailsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupDetailsViewController.h; sourceTree = ""; }; - B1B556BD20EE6C4C00210D55 /* GroupDetailsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroupDetailsViewController.m; sourceTree = ""; }; - B1B556BE20EE6C4C00210D55 /* GroupsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroupsViewController.m; sourceTree = ""; }; - B1B556C020EE6C4C00210D55 /* GroupParticipantsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = GroupParticipantsViewController.xib; sourceTree = ""; }; - B1B556C120EE6C4C00210D55 /* GroupParticipantsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroupParticipantsViewController.m; sourceTree = ""; }; - B1B556C220EE6C4C00210D55 /* GroupParticipantsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupParticipantsViewController.h; sourceTree = ""; }; - B1B556C420EE6C4C00210D55 /* GroupRoomsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupRoomsViewController.h; sourceTree = ""; }; - B1B556C520EE6C4C00210D55 /* GroupRoomsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = GroupRoomsViewController.xib; sourceTree = ""; }; - B1B556C620EE6C4C00210D55 /* GroupRoomsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroupRoomsViewController.m; sourceTree = ""; }; - B1B556C820EE6C4C00210D55 /* FavouritesViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FavouritesViewController.h; sourceTree = ""; }; - B1B556C920EE6C4C00210D55 /* FavouritesViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FavouritesViewController.m; sourceTree = ""; }; - B1B556CB20EE6C4C00210D55 /* MasterTabBarController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MasterTabBarController.h; sourceTree = ""; }; - B1B556CC20EE6C4C00210D55 /* MasterTabBarController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MasterTabBarController.m; sourceTree = ""; }; - B1B556CF20EE6C4C00210D55 /* WebViewViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewViewController.h; sourceTree = ""; }; - B1B556D020EE6C4C00210D55 /* WebViewViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewViewController.m; sourceTree = ""; }; - B1B556D220EE6C4C00210D55 /* RiotNavigationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RiotNavigationController.h; sourceTree = ""; }; - B1B556D320EE6C4C00210D55 /* RiotNavigationController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RiotNavigationController.m; sourceTree = ""; }; - B1B556D520EE6C4C00210D55 /* SegmentedViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SegmentedViewController.h; sourceTree = ""; }; - B1B556D620EE6C4C00210D55 /* SegmentedViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SegmentedViewController.xib; sourceTree = ""; }; - B1B556D720EE6C4C00210D55 /* SegmentedViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SegmentedViewController.m; sourceTree = ""; }; - B1B556D920EE6C4C00210D55 /* RecentsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RecentsViewController.m; sourceTree = ""; }; - B1B556DA20EE6C4C00210D55 /* RecentsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RecentsViewController.xib; sourceTree = ""; }; - B1B556DB20EE6C4C00210D55 /* RecentsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RecentsViewController.h; sourceTree = ""; }; - B1B556DD20EE6C4C00210D55 /* CallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallViewController.h; sourceTree = ""; }; - B1B556DE20EE6C4C00210D55 /* CallViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CallViewController.xib; sourceTree = ""; }; - B1B556DF20EE6C4C00210D55 /* CallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CallViewController.m; sourceTree = ""; }; - B1B556E120EE6C4C00210D55 /* StartChatViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StartChatViewController.h; sourceTree = ""; }; - B1B556E220EE6C4C00210D55 /* StartChatViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StartChatViewController.m; sourceTree = ""; }; - B1B556E320EE6C4C00210D55 /* StartChatViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = StartChatViewController.xib; sourceTree = ""; }; - B1B556E520EE6C4C00210D55 /* UsersDevicesViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UsersDevicesViewController.m; sourceTree = ""; }; - B1B556E620EE6C4C00210D55 /* UsersDevicesViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UsersDevicesViewController.h; sourceTree = ""; }; - B1B556E820EE6C4C00210D55 /* PeopleViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PeopleViewController.m; sourceTree = ""; }; - B1B556E920EE6C4C00210D55 /* PeopleViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PeopleViewController.h; sourceTree = ""; }; - B1B556EB20EE6C4C00210D55 /* RiotSplitViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RiotSplitViewController.m; sourceTree = ""; }; - B1B556EC20EE6C4C00210D55 /* RiotSplitViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RiotSplitViewController.h; sourceTree = ""; }; - B1B556EE20EE6C4C00210D55 /* MediaAlbumContentViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaAlbumContentViewController.h; sourceTree = ""; }; - B1B556EF20EE6C4C00210D55 /* MediaPickerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MediaPickerViewController.m; sourceTree = ""; }; - B1B556F020EE6C4C00210D55 /* MediaAlbumContentViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MediaAlbumContentViewController.m; sourceTree = ""; }; - B1B556F120EE6C4C00210D55 /* MediaAlbumContentViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MediaAlbumContentViewController.xib; sourceTree = ""; }; - B1B556F220EE6C4C00210D55 /* MediaPickerViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MediaPickerViewController.xib; sourceTree = ""; }; - B1B556F320EE6C4C00210D55 /* MediaPickerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaPickerViewController.h; sourceTree = ""; }; - B1B556F520EE6C4C00210D55 /* DirectoryServerPickerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DirectoryServerPickerViewController.h; sourceTree = ""; }; - B1B556F620EE6C4C00210D55 /* RoomsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomsViewController.h; sourceTree = ""; }; - B1B556F720EE6C4C00210D55 /* DirectoryServerPickerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DirectoryServerPickerViewController.m; sourceTree = ""; }; - B1B556F820EE6C4C00210D55 /* RoomsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomsViewController.m; sourceTree = ""; }; - B1B556FA20EE6C4C00210D55 /* AuthenticationViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AuthenticationViewController.h; sourceTree = ""; }; - B1B556FB20EE6C4C00210D55 /* AuthenticationViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AuthenticationViewController.xib; sourceTree = ""; }; - B1B556FC20EE6C4C00210D55 /* AuthenticationViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AuthenticationViewController.m; sourceTree = ""; }; - B1B556FE20EE6C4C00210D55 /* RoomKeyRequestViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomKeyRequestViewController.m; sourceTree = ""; }; - B1B556FF20EE6C4C00210D55 /* RoomKeyRequestViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomKeyRequestViewController.h; sourceTree = ""; }; - B1B5570E20EE6C4C00210D55 /* HomeMessagesSearchViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeMessagesSearchViewController.h; sourceTree = ""; }; - B1B5570F20EE6C4C00210D55 /* HomeMessagesSearchViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeMessagesSearchViewController.m; sourceTree = ""; }; - B1B5571020EE6C4C00210D55 /* UnifiedSearchViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnifiedSearchViewController.h; sourceTree = ""; }; - B1B5571120EE6C4C00210D55 /* UnifiedSearchViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UnifiedSearchViewController.m; sourceTree = ""; }; - B1B5571320EE6C4C00210D55 /* HomeFilesSearchViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeFilesSearchViewController.h; sourceTree = ""; }; - B1B5571420EE6C4C00210D55 /* HomeFilesSearchViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeFilesSearchViewController.m; sourceTree = ""; }; - B1B5571620EE6C4C00210D55 /* DirectoryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DirectoryViewController.m; sourceTree = ""; }; - B1B5571720EE6C4C00210D55 /* DirectoryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DirectoryViewController.h; sourceTree = ""; }; - B1B5576020EE702800210D55 /* IntegrationManagerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IntegrationManagerViewController.m; sourceTree = ""; }; - B1B5576220EE702800210D55 /* WidgetPickerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WidgetPickerViewController.m; sourceTree = ""; }; - B1B5576320EE702800210D55 /* WidgetPickerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WidgetPickerViewController.h; sourceTree = ""; }; - B1B5576420EE702800210D55 /* IntegrationManagerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IntegrationManagerViewController.h; sourceTree = ""; }; - B1B5576720EE702800210D55 /* StickerPickerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StickerPickerViewController.h; sourceTree = ""; }; - B1B5576820EE702800210D55 /* StickerPickerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StickerPickerViewController.m; sourceTree = ""; }; - B1B5576A20EE702800210D55 /* JitsiViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JitsiViewController.h; sourceTree = ""; }; - B1B5576B20EE702800210D55 /* JitsiViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = JitsiViewController.xib; sourceTree = ""; }; - B1B5576C20EE702800210D55 /* JitsiViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JitsiViewController.m; sourceTree = ""; }; - B1B5576D20EE702800210D55 /* WidgetViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WidgetViewController.m; sourceTree = ""; }; - B1B5576E20EE702800210D55 /* WidgetViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WidgetViewController.h; sourceTree = ""; }; - B1B5577920EE84BC00210D55 /* CircleButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CircleButton.h; sourceTree = ""; }; - B1B5577A20EE84BD00210D55 /* IncomingCallView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IncomingCallView.h; sourceTree = ""; }; - B1B5577B20EE84BE00210D55 /* CircleButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CircleButton.m; sourceTree = ""; }; - B1B5577C20EE84BF00210D55 /* IncomingCallView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IncomingCallView.m; sourceTree = ""; }; - B1B5578220EF564900210D55 /* GroupTableViewCellWithSwitch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupTableViewCellWithSwitch.h; sourceTree = ""; }; - B1B5578320EF564900210D55 /* GroupTableViewCellWithSwitch.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = GroupTableViewCellWithSwitch.xib; sourceTree = ""; }; - B1B5578420EF564900210D55 /* GroupTableViewCellWithSwitch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroupTableViewCellWithSwitch.m; sourceTree = ""; }; - B1B5578820EF568D00210D55 /* GroupInviteTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = GroupInviteTableViewCell.xib; sourceTree = ""; }; - B1B5578920EF568D00210D55 /* GroupTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroupTableViewCell.m; sourceTree = ""; }; - B1B5578A20EF568D00210D55 /* GroupTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = GroupTableViewCell.xib; sourceTree = ""; }; - B1B5578B20EF568D00210D55 /* GroupInviteTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroupInviteTableViewCell.m; sourceTree = ""; }; - B1B5578C20EF568D00210D55 /* GroupInviteTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupInviteTableViewCell.h; sourceTree = ""; }; - B1B5578D20EF568D00210D55 /* GroupTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupTableViewCell.h; sourceTree = ""; }; - B1B5579320EF575A00210D55 /* AuthInputsView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AuthInputsView.m; sourceTree = ""; }; - B1B5579420EF575A00210D55 /* ForgotPasswordInputsView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ForgotPasswordInputsView.m; sourceTree = ""; }; - B1B5579520EF575A00210D55 /* AuthInputsView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AuthInputsView.h; sourceTree = ""; }; - B1B5579620EF575A00210D55 /* AuthInputsView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AuthInputsView.xib; sourceTree = ""; }; - B1B5579720EF575A00210D55 /* ForgotPasswordInputsView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ForgotPasswordInputsView.h; sourceTree = ""; }; - B1B5579820EF575A00210D55 /* ForgotPasswordInputsView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ForgotPasswordInputsView.xib; sourceTree = ""; }; - B1B5579E20EF58AC00210D55 /* ContactTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactTableViewCell.m; sourceTree = ""; }; - B1B5579F20EF58AC00210D55 /* ContactTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContactTableViewCell.xib; sourceTree = ""; }; - B1B557A020EF58AC00210D55 /* ContactTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactTableViewCell.h; sourceTree = ""; }; - B1B557A420EF5A1B00210D55 /* DeviceTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceTableViewCell.h; sourceTree = ""; }; - B1B557A520EF5A1B00210D55 /* DeviceTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DeviceTableViewCell.xib; sourceTree = ""; }; - B1B557A620EF5A1B00210D55 /* DeviceTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DeviceTableViewCell.m; sourceTree = ""; }; - B1B557A920EF5A6C00210D55 /* DeviceView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceView.h; sourceTree = ""; }; - B1B557AA20EF5A6C00210D55 /* DeviceView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DeviceView.m; sourceTree = ""; }; - B1B557AB20EF5A6C00210D55 /* DeviceView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DeviceView.xib; sourceTree = ""; }; - B1B557B020EF5AEF00210D55 /* EventDetailsView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventDetailsView.h; sourceTree = ""; }; - B1B557B120EF5AEF00210D55 /* EventDetailsView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = EventDetailsView.xib; sourceTree = ""; }; - B1B557B220EF5AEF00210D55 /* EventDetailsView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EventDetailsView.m; sourceTree = ""; }; - B1B557B620EF5B4400210D55 /* KeyboardGrowingTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KeyboardGrowingTextView.m; sourceTree = ""; }; - B1B557B720EF5B4400210D55 /* RoomInputToolbarView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomInputToolbarView.m; sourceTree = ""; }; - B1B557B820EF5B4400210D55 /* DisabledRoomInputToolbarView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DisabledRoomInputToolbarView.m; sourceTree = ""; }; - B1B557B920EF5B4400210D55 /* RoomInputToolbarView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomInputToolbarView.xib; sourceTree = ""; }; - B1B557BA20EF5B4400210D55 /* DisabledRoomInputToolbarView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DisabledRoomInputToolbarView.xib; sourceTree = ""; }; - B1B557BB20EF5B4400210D55 /* DisabledRoomInputToolbarView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DisabledRoomInputToolbarView.h; sourceTree = ""; }; - B1B557BC20EF5B4400210D55 /* RoomInputToolbarView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomInputToolbarView.h; sourceTree = ""; }; - B1B557C320EF5CD400210D55 /* DirectoryServerDetailTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DirectoryServerDetailTableViewCell.h; sourceTree = ""; }; - B1B557C420EF5CD400210D55 /* DirectoryServerDetailTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DirectoryServerDetailTableViewCell.m; sourceTree = ""; }; - B1B557C520EF5CD400210D55 /* DirectoryServerDetailTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DirectoryServerDetailTableViewCell.xib; sourceTree = ""; }; - B1B557C820EF5D7F00210D55 /* DirectoryServerTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DirectoryServerTableViewCell.h; sourceTree = ""; }; - B1B557C920EF5D7F00210D55 /* DirectoryServerTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DirectoryServerTableViewCell.xib; sourceTree = ""; }; - B1B557CA20EF5D7F00210D55 /* DirectoryServerTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DirectoryServerTableViewCell.m; sourceTree = ""; }; - B1B557CE20EF5E3500210D55 /* MediaAlbumTableCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MediaAlbumTableCell.m; sourceTree = ""; }; - B1B557CF20EF5E3500210D55 /* MediaAlbumTableCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaAlbumTableCell.h; sourceTree = ""; }; - B1B557D020EF5E3500210D55 /* MediaAlbumTableCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MediaAlbumTableCell.xib; sourceTree = ""; }; - B1B557D420EF5EA900210D55 /* RoomActivitiesView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomActivitiesView.h; sourceTree = ""; }; - B1B557D520EF5EA900210D55 /* RoomActivitiesView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomActivitiesView.xib; sourceTree = ""; }; - B1B557D620EF5EA900210D55 /* RoomActivitiesView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomActivitiesView.m; sourceTree = ""; }; - B1B557DA20EF5FBA00210D55 /* FilesSearchTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FilesSearchTableViewCell.xib; sourceTree = ""; }; - B1B557DB20EF5FBA00210D55 /* FilesSearchTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FilesSearchTableViewCell.h; sourceTree = ""; }; - B1B557DC20EF5FBA00210D55 /* FilesSearchTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FilesSearchTableViewCell.m; sourceTree = ""; }; - B1B557E020EF60B900210D55 /* MessagesSearchResultAttachmentBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MessagesSearchResultAttachmentBubbleCell.m; sourceTree = ""; }; - B1B557E120EF60B900210D55 /* MessagesSearchResultAttachmentBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MessagesSearchResultAttachmentBubbleCell.xib; sourceTree = ""; }; - B1B557E220EF60B900210D55 /* MessagesSearchResultAttachmentBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessagesSearchResultAttachmentBubbleCell.h; sourceTree = ""; }; - B1B557E520EF60F400210D55 /* MessagesSearchResultTextMsgBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MessagesSearchResultTextMsgBubbleCell.xib; sourceTree = ""; }; - B1B557E620EF60F400210D55 /* MessagesSearchResultTextMsgBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MessagesSearchResultTextMsgBubbleCell.m; sourceTree = ""; }; - B1B557E720EF60F500210D55 /* MessagesSearchResultTextMsgBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessagesSearchResultTextMsgBubbleCell.h; sourceTree = ""; }; - B1B5580520EF625600210D55 /* PreviewRoomTitleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PreviewRoomTitleView.h; sourceTree = ""; }; - B1B5580620EF625600210D55 /* PreviewRoomTitleView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PreviewRoomTitleView.m; sourceTree = ""; }; - B1B5580720EF625600210D55 /* PreviewRoomTitleView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PreviewRoomTitleView.xib; sourceTree = ""; }; - B1B5580820EF625600210D55 /* RoomTitleView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomTitleView.m; sourceTree = ""; }; - B1B5580A20EF625600210D55 /* ExpandedRoomTitleView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ExpandedRoomTitleView.m; sourceTree = ""; }; - B1B5580B20EF625600210D55 /* ExpandedRoomTitleView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ExpandedRoomTitleView.xib; sourceTree = ""; }; - B1B5580C20EF625600210D55 /* ExpandedRoomTitleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExpandedRoomTitleView.h; sourceTree = ""; }; - B1B5580E20EF625700210D55 /* RoomAvatarTitleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomAvatarTitleView.h; sourceTree = ""; }; - B1B5580F20EF625700210D55 /* RoomAvatarTitleView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomAvatarTitleView.m; sourceTree = ""; }; - B1B5581020EF625700210D55 /* RoomAvatarTitleView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomAvatarTitleView.xib; sourceTree = ""; }; - B1B5581120EF625700210D55 /* RoomTitleView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomTitleView.xib; sourceTree = ""; }; - B1B5581320EF625700210D55 /* SimpleRoomTitleView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SimpleRoomTitleView.m; sourceTree = ""; }; - B1B5581420EF625700210D55 /* SimpleRoomTitleView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SimpleRoomTitleView.xib; sourceTree = ""; }; - B1B5581520EF625700210D55 /* SimpleRoomTitleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleRoomTitleView.h; sourceTree = ""; }; - B1B5581620EF625700210D55 /* RoomTitleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomTitleView.h; sourceTree = ""; }; - B1B5582220EF638A00210D55 /* RoomMemberTitleView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomMemberTitleView.m; sourceTree = ""; }; - B1B5582320EF638A00210D55 /* RoomMemberTitleView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomMemberTitleView.xib; sourceTree = ""; }; - B1B5582420EF638A00210D55 /* RoomMemberTitleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomMemberTitleView.h; sourceTree = ""; }; - B1B5582820EF666100210D55 /* DirectoryRecentTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DirectoryRecentTableViewCell.xib; sourceTree = ""; }; - B1B5582920EF666100210D55 /* DirectoryRecentTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DirectoryRecentTableViewCell.h; sourceTree = ""; }; - B1B5582A20EF666100210D55 /* DirectoryRecentTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DirectoryRecentTableViewCell.m; sourceTree = ""; }; - B1B5582D20EF66BA00210D55 /* RoomIdOrAliasTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomIdOrAliasTableViewCell.h; sourceTree = ""; }; - B1B5582E20EF66BA00210D55 /* RoomIdOrAliasTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomIdOrAliasTableViewCell.xib; sourceTree = ""; }; - B1B5582F20EF66BA00210D55 /* RoomIdOrAliasTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomIdOrAliasTableViewCell.m; sourceTree = ""; }; - B1B5583A20EF6E7F00210D55 /* GroupRoomTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = GroupRoomTableViewCell.xib; sourceTree = ""; }; - B1B5583B20EF6E7F00210D55 /* GroupRoomTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroupRoomTableViewCell.m; sourceTree = ""; }; - B1B5583C20EF6E7F00210D55 /* GroupRoomTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupRoomTableViewCell.h; sourceTree = ""; }; - B1B5584020EF768E00210D55 /* RoomOutgoingTextMsgWithoutSenderInfoBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomOutgoingTextMsgWithoutSenderInfoBubbleCell.xib; sourceTree = ""; }; - B1B5584120EF768E00210D55 /* RoomMembershipBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomMembershipBubbleCell.xib; sourceTree = ""; }; - B1B5584320EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithPaginationTitleBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomIncomingEncryptedTextMsgWithPaginationTitleBubbleCell.h; sourceTree = ""; }; - B1B5584420EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomOutgoingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.h; sourceTree = ""; }; - B1B5584520EF768E00210D55 /* RoomOutgoingEncryptedAttachmentBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomOutgoingEncryptedAttachmentBubbleCell.h; sourceTree = ""; }; - B1B5584620EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithoutSenderNameBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomOutgoingEncryptedTextMsgWithoutSenderNameBubbleCell.m; sourceTree = ""; }; - B1B5584720EF768E00210D55 /* RoomOutgoingEncryptedAttachmentWithPaginationTitleBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomOutgoingEncryptedAttachmentWithPaginationTitleBubbleCell.m; sourceTree = ""; }; - B1B5584820EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithoutSenderNameBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomOutgoingEncryptedTextMsgWithoutSenderNameBubbleCell.xib; sourceTree = ""; }; - B1B5584920EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithoutSenderInfoBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomIncomingEncryptedTextMsgWithoutSenderInfoBubbleCell.xib; sourceTree = ""; }; - B1B5584A20EF768E00210D55 /* RoomOutgoingEncryptedAttachmentWithoutSenderInfoBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomOutgoingEncryptedAttachmentWithoutSenderInfoBubbleCell.h; sourceTree = ""; }; - B1B5584B20EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithoutSenderInfoBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomIncomingEncryptedTextMsgWithoutSenderInfoBubbleCell.h; sourceTree = ""; }; - B1B5584C20EF768E00210D55 /* RoomIncomingEncryptedAttachmentWithPaginationTitleBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomIncomingEncryptedAttachmentWithPaginationTitleBubbleCell.m; sourceTree = ""; }; - B1B5584D20EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithoutSenderInfoBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomOutgoingEncryptedTextMsgWithoutSenderInfoBubbleCell.h; sourceTree = ""; }; - B1B5584E20EF768E00210D55 /* RoomOutgoingEncryptedTextMsgBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomOutgoingEncryptedTextMsgBubbleCell.h; sourceTree = ""; }; - B1B5584F20EF768E00210D55 /* RoomIncomingEncryptedTextMsgBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomIncomingEncryptedTextMsgBubbleCell.xib; sourceTree = ""; }; - B1B5585020EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithoutSenderNameBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomIncomingEncryptedTextMsgWithoutSenderNameBubbleCell.m; sourceTree = ""; }; - B1B5585120EF768E00210D55 /* RoomEncryptedDataBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomEncryptedDataBubbleCell.h; sourceTree = ""; }; - B1B5585220EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomIncomingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m; sourceTree = ""; }; - B1B5585320EF768E00210D55 /* RoomOutgoingEncryptedTextMsgBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomOutgoingEncryptedTextMsgBubbleCell.xib; sourceTree = ""; }; - B1B5585420EF768E00210D55 /* RoomIncomingEncryptedAttachmentBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomIncomingEncryptedAttachmentBubbleCell.xib; sourceTree = ""; }; - B1B5585520EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithPaginationTitleBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomOutgoingEncryptedTextMsgWithPaginationTitleBubbleCell.m; sourceTree = ""; }; - B1B5585620EF768E00210D55 /* RoomIncomingEncryptedAttachmentBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomIncomingEncryptedAttachmentBubbleCell.m; sourceTree = ""; }; - B1B5585720EF768E00210D55 /* RoomIncomingEncryptedTextMsgBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomIncomingEncryptedTextMsgBubbleCell.h; sourceTree = ""; }; - B1B5585820EF768E00210D55 /* RoomIncomingEncryptedAttachmentWithoutSenderInfoBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomIncomingEncryptedAttachmentWithoutSenderInfoBubbleCell.m; sourceTree = ""; }; - B1B5585920EF768E00210D55 /* RoomOutgoingEncryptedAttachmentWithoutSenderInfoBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomOutgoingEncryptedAttachmentWithoutSenderInfoBubbleCell.xib; sourceTree = ""; }; - B1B5585A20EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithoutSenderInfoBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomIncomingEncryptedTextMsgWithoutSenderInfoBubbleCell.m; sourceTree = ""; }; - B1B5585B20EF768E00210D55 /* RoomOutgoingEncryptedAttachmentWithoutSenderInfoBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomOutgoingEncryptedAttachmentWithoutSenderInfoBubbleCell.m; sourceTree = ""; }; - B1B5585C20EF768E00210D55 /* RoomOutgoingEncryptedAttachmentWithPaginationTitleBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomOutgoingEncryptedAttachmentWithPaginationTitleBubbleCell.xib; sourceTree = ""; }; - B1B5585D20EF768E00210D55 /* RoomOutgoingEncryptedAttachmentWithPaginationTitleBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomOutgoingEncryptedAttachmentWithPaginationTitleBubbleCell.h; sourceTree = ""; }; - B1B5585E20EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithoutSenderNameBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomOutgoingEncryptedTextMsgWithoutSenderNameBubbleCell.h; sourceTree = ""; }; - B1B5585F20EF768E00210D55 /* RoomOutgoingEncryptedAttachmentBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomOutgoingEncryptedAttachmentBubbleCell.m; sourceTree = ""; }; - B1B5586020EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithPaginationTitleBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomIncomingEncryptedTextMsgWithPaginationTitleBubbleCell.m; sourceTree = ""; }; - B1B5586120EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomOutgoingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m; sourceTree = ""; }; - B1B5586220EF768E00210D55 /* RoomIncomingEncryptedAttachmentWithoutSenderInfoBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomIncomingEncryptedAttachmentWithoutSenderInfoBubbleCell.xib; sourceTree = ""; }; - B1B5586320EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomIncomingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.h; sourceTree = ""; }; - B1B5586420EF768E00210D55 /* RoomEncryptedDataBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomEncryptedDataBubbleCell.m; sourceTree = ""; }; - B1B5586520EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithoutSenderNameBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomIncomingEncryptedTextMsgWithoutSenderNameBubbleCell.h; sourceTree = ""; }; - B1B5586620EF768E00210D55 /* RoomOutgoingEncryptedTextMsgBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomOutgoingEncryptedTextMsgBubbleCell.m; sourceTree = ""; }; - B1B5586720EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithoutSenderInfoBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomOutgoingEncryptedTextMsgWithoutSenderInfoBubbleCell.m; sourceTree = ""; }; - B1B5586820EF768E00210D55 /* RoomIncomingEncryptedAttachmentWithPaginationTitleBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomIncomingEncryptedAttachmentWithPaginationTitleBubbleCell.h; sourceTree = ""; }; - B1B5586920EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomIncomingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib; sourceTree = ""; }; - B1B5586A20EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomOutgoingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib; sourceTree = ""; }; - B1B5586B20EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithPaginationTitleBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomOutgoingEncryptedTextMsgWithPaginationTitleBubbleCell.xib; sourceTree = ""; }; - B1B5586C20EF768E00210D55 /* RoomIncomingEncryptedAttachmentWithPaginationTitleBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomIncomingEncryptedAttachmentWithPaginationTitleBubbleCell.xib; sourceTree = ""; }; - B1B5586D20EF768E00210D55 /* RoomOutgoingEncryptedAttachmentBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomOutgoingEncryptedAttachmentBubbleCell.xib; sourceTree = ""; }; - B1B5586E20EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithPaginationTitleBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomOutgoingEncryptedTextMsgWithPaginationTitleBubbleCell.h; sourceTree = ""; }; - B1B5586F20EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithoutSenderInfoBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomOutgoingEncryptedTextMsgWithoutSenderInfoBubbleCell.xib; sourceTree = ""; }; - B1B5587020EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithoutSenderNameBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomIncomingEncryptedTextMsgWithoutSenderNameBubbleCell.xib; sourceTree = ""; }; - B1B5587120EF768E00210D55 /* RoomIncomingEncryptedAttachmentWithoutSenderInfoBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomIncomingEncryptedAttachmentWithoutSenderInfoBubbleCell.h; sourceTree = ""; }; - B1B5587220EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithPaginationTitleBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomIncomingEncryptedTextMsgWithPaginationTitleBubbleCell.xib; sourceTree = ""; }; - B1B5587320EF768E00210D55 /* RoomIncomingEncryptedTextMsgBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomIncomingEncryptedTextMsgBubbleCell.m; sourceTree = ""; }; - B1B5587420EF768E00210D55 /* RoomIncomingEncryptedAttachmentBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomIncomingEncryptedAttachmentBubbleCell.h; sourceTree = ""; }; - B1B5587520EF768E00210D55 /* RoomOutgoingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomOutgoingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.h; sourceTree = ""; }; - B1B5587620EF768E00210D55 /* RoomOutgoingTextMsgWithPaginationTitleBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomOutgoingTextMsgWithPaginationTitleBubbleCell.h; sourceTree = ""; }; - B1B5587720EF768E00210D55 /* RoomIncomingAttachmentBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomIncomingAttachmentBubbleCell.m; sourceTree = ""; }; - B1B5587820EF768E00210D55 /* RoomOutgoingTextMsgWithoutSenderInfoBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomOutgoingTextMsgWithoutSenderInfoBubbleCell.m; sourceTree = ""; }; - B1B5587920EF768E00210D55 /* RoomOutgoingTextMsgBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomOutgoingTextMsgBubbleCell.m; sourceTree = ""; }; - B1B5587A20EF768E00210D55 /* RoomOutgoingAttachmentWithoutSenderInfoBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomOutgoingAttachmentWithoutSenderInfoBubbleCell.h; sourceTree = ""; }; - B1B5587B20EF768E00210D55 /* RoomMembershipCollapsedBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomMembershipCollapsedBubbleCell.m; sourceTree = ""; }; - B1B5587C20EF768E00210D55 /* RoomMembershipBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomMembershipBubbleCell.h; sourceTree = ""; }; - B1B5587D20EF768E00210D55 /* RoomIncomingTextMsgBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomIncomingTextMsgBubbleCell.xib; sourceTree = ""; }; - B1B5587E20EF768E00210D55 /* RoomOutgoingTextMsgWithoutSenderNameBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomOutgoingTextMsgWithoutSenderNameBubbleCell.h; sourceTree = ""; }; - B1B5587F20EF768E00210D55 /* RoomEmptyBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomEmptyBubbleCell.xib; sourceTree = ""; }; - B1B5588020EF768E00210D55 /* RoomMembershipWithPaginationTitleBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomMembershipWithPaginationTitleBubbleCell.m; sourceTree = ""; }; - B1B5588120EF768E00210D55 /* RoomIncomingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomIncomingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.h; sourceTree = ""; }; - B1B5588220EF768E00210D55 /* RoomMembershipExpandedBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomMembershipExpandedBubbleCell.m; sourceTree = ""; }; - B1B5588320EF768E00210D55 /* RoomIncomingAttachmentWithoutSenderInfoBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomIncomingAttachmentWithoutSenderInfoBubbleCell.m; sourceTree = ""; }; - B1B5588420EF768E00210D55 /* RoomMembershipCollapsedWithPaginationTitleBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomMembershipCollapsedWithPaginationTitleBubbleCell.h; sourceTree = ""; }; - B1B5588520EF768E00210D55 /* RoomIncomingTextMsgWithoutSenderInfoBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomIncomingTextMsgWithoutSenderInfoBubbleCell.xib; sourceTree = ""; }; - B1B5588620EF768E00210D55 /* RoomIncomingTextMsgWithoutSenderInfoBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomIncomingTextMsgWithoutSenderInfoBubbleCell.h; sourceTree = ""; }; - B1B5588720EF768E00210D55 /* RoomIncomingAttachmentWithPaginationTitleBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomIncomingAttachmentWithPaginationTitleBubbleCell.m; sourceTree = ""; }; - B1B5588820EF768E00210D55 /* RoomSelectedStickerBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomSelectedStickerBubbleCell.m; sourceTree = ""; }; - B1B5588920EF768E00210D55 /* RoomOutgoingTextMsgWithPaginationTitleBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomOutgoingTextMsgWithPaginationTitleBubbleCell.xib; sourceTree = ""; }; - B1B5588A20EF768E00210D55 /* RoomMembershipExpandedWithPaginationTitleBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomMembershipExpandedWithPaginationTitleBubbleCell.h; sourceTree = ""; }; - B1B5588B20EF768E00210D55 /* RoomIncomingTextMsgBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomIncomingTextMsgBubbleCell.h; sourceTree = ""; }; - B1B5588C20EF768E00210D55 /* RoomIncomingTextMsgWithPaginationTitleBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomIncomingTextMsgWithPaginationTitleBubbleCell.xib; sourceTree = ""; }; - B1B5588D20EF768E00210D55 /* RoomIncomingTextMsgWithPaginationTitleBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomIncomingTextMsgWithPaginationTitleBubbleCell.h; sourceTree = ""; }; - B1B5588E20EF768E00210D55 /* RoomMembershipCollapsedBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomMembershipCollapsedBubbleCell.xib; sourceTree = ""; }; - B1B5588F20EF768E00210D55 /* RoomIncomingTextMsgWithoutSenderNameBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomIncomingTextMsgWithoutSenderNameBubbleCell.m; sourceTree = ""; }; - B1B5589020EF768E00210D55 /* RoomOutgoingAttachmentBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomOutgoingAttachmentBubbleCell.m; sourceTree = ""; }; - B1B5589120EF768E00210D55 /* RoomMembershipCollapsedWithPaginationTitleBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomMembershipCollapsedWithPaginationTitleBubbleCell.xib; sourceTree = ""; }; - B1B5589220EF768E00210D55 /* RoomEmptyBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomEmptyBubbleCell.h; sourceTree = ""; }; - B1B5589320EF768E00210D55 /* RoomOutgoingAttachmentWithPaginationTitleBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomOutgoingAttachmentWithPaginationTitleBubbleCell.m; sourceTree = ""; }; - B1B5589420EF768E00210D55 /* RoomIncomingAttachmentWithPaginationTitleBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomIncomingAttachmentWithPaginationTitleBubbleCell.xib; sourceTree = ""; }; - B1B5589520EF768E00210D55 /* RoomIncomingTextMsgWithoutSenderNameBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomIncomingTextMsgWithoutSenderNameBubbleCell.xib; sourceTree = ""; }; - B1B5589620EF768E00210D55 /* RoomOutgoingAttachmentWithoutSenderInfoBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomOutgoingAttachmentWithoutSenderInfoBubbleCell.m; sourceTree = ""; }; - B1B5589720EF768E00210D55 /* RoomMembershipCollapsedBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomMembershipCollapsedBubbleCell.h; sourceTree = ""; }; - B1B5589820EF768E00210D55 /* RoomOutgoingTextMsgWithoutSenderInfoBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomOutgoingTextMsgWithoutSenderInfoBubbleCell.h; sourceTree = ""; }; - B1B5589920EF768E00210D55 /* RoomOutgoingTextMsgBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomOutgoingTextMsgBubbleCell.h; sourceTree = ""; }; - B1B5589A20EF768E00210D55 /* RoomIncomingAttachmentBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomIncomingAttachmentBubbleCell.h; sourceTree = ""; }; - B1B5589B20EF768E00210D55 /* RoomOutgoingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomOutgoingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m; sourceTree = ""; }; - B1B5589C20EF768E00210D55 /* RoomOutgoingTextMsgWithPaginationTitleBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomOutgoingTextMsgWithPaginationTitleBubbleCell.m; sourceTree = ""; }; - B1B5589D20EF768E00210D55 /* RoomOutgoingTextMsgBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomOutgoingTextMsgBubbleCell.xib; sourceTree = ""; }; - B1B5589E20EF768E00210D55 /* RoomIncomingAttachmentWithoutSenderInfoBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomIncomingAttachmentWithoutSenderInfoBubbleCell.h; sourceTree = ""; }; - B1B5589F20EF768E00210D55 /* RoomIncomingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomIncomingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib; sourceTree = ""; }; - B1B558A020EF768E00210D55 /* RoomMembershipExpandedBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomMembershipExpandedBubbleCell.h; sourceTree = ""; }; - B1B558A120EF768E00210D55 /* RoomIncomingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomIncomingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m; sourceTree = ""; }; - B1B558A220EF768E00210D55 /* RoomMembershipWithPaginationTitleBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomMembershipWithPaginationTitleBubbleCell.h; sourceTree = ""; }; - B1B558A320EF768E00210D55 /* RoomOutgoingTextMsgWithoutSenderNameBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomOutgoingTextMsgWithoutSenderNameBubbleCell.m; sourceTree = ""; }; - B1B558A420EF768E00210D55 /* RoomMembershipBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomMembershipBubbleCell.m; sourceTree = ""; }; - B1B558A520EF768E00210D55 /* RoomIncomingAttachmentWithoutSenderInfoBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomIncomingAttachmentWithoutSenderInfoBubbleCell.xib; sourceTree = ""; }; - B1B558A620EF768E00210D55 /* RoomIncomingTextMsgWithPaginationTitleBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomIncomingTextMsgWithPaginationTitleBubbleCell.m; sourceTree = ""; }; - B1B558A720EF768E00210D55 /* RoomIncomingAttachmentBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomIncomingAttachmentBubbleCell.xib; sourceTree = ""; }; - B1B558A820EF768E00210D55 /* RoomMembershipExpandedWithPaginationTitleBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomMembershipExpandedWithPaginationTitleBubbleCell.xib; sourceTree = ""; }; - B1B558A920EF768E00210D55 /* RoomIncomingTextMsgBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomIncomingTextMsgBubbleCell.m; sourceTree = ""; }; - B1B558AA20EF768E00210D55 /* RoomOutgoingTextMsgWithoutSenderNameBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomOutgoingTextMsgWithoutSenderNameBubbleCell.xib; sourceTree = ""; }; - B1B558AB20EF768E00210D55 /* RoomMembershipExpandedWithPaginationTitleBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomMembershipExpandedWithPaginationTitleBubbleCell.m; sourceTree = ""; }; - B1B558AC20EF768E00210D55 /* RoomSelectedStickerBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomSelectedStickerBubbleCell.h; sourceTree = ""; }; - B1B558AD20EF768E00210D55 /* RoomOutgoingAttachmentWithPaginationTitleBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomOutgoingAttachmentWithPaginationTitleBubbleCell.xib; sourceTree = ""; }; - B1B558AE20EF768E00210D55 /* RoomSelectedStickerBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomSelectedStickerBubbleCell.xib; sourceTree = ""; }; - B1B558AF20EF768E00210D55 /* RoomIncomingAttachmentWithPaginationTitleBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomIncomingAttachmentWithPaginationTitleBubbleCell.h; sourceTree = ""; }; - B1B558B020EF768E00210D55 /* RoomOutgoingAttachmentBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomOutgoingAttachmentBubbleCell.xib; sourceTree = ""; }; - B1B558B120EF768E00210D55 /* RoomIncomingTextMsgWithoutSenderInfoBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomIncomingTextMsgWithoutSenderInfoBubbleCell.m; sourceTree = ""; }; - B1B558B220EF768E00210D55 /* RoomMembershipCollapsedWithPaginationTitleBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomMembershipCollapsedWithPaginationTitleBubbleCell.m; sourceTree = ""; }; - B1B558B320EF768E00210D55 /* RoomOutgoingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomOutgoingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib; sourceTree = ""; }; - B1B558B420EF768E00210D55 /* RoomMembershipWithPaginationTitleBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomMembershipWithPaginationTitleBubbleCell.xib; sourceTree = ""; }; - B1B558B520EF768E00210D55 /* RoomOutgoingAttachmentWithPaginationTitleBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomOutgoingAttachmentWithPaginationTitleBubbleCell.h; sourceTree = ""; }; - B1B558B620EF768E00210D55 /* RoomEmptyBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomEmptyBubbleCell.m; sourceTree = ""; }; - B1B558B720EF768E00210D55 /* RoomIncomingTextMsgWithoutSenderNameBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomIncomingTextMsgWithoutSenderNameBubbleCell.h; sourceTree = ""; }; - B1B558B820EF768E00210D55 /* RoomOutgoingAttachmentBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomOutgoingAttachmentBubbleCell.h; sourceTree = ""; }; - B1B558B920EF768E00210D55 /* RoomOutgoingAttachmentWithoutSenderInfoBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomOutgoingAttachmentWithoutSenderInfoBubbleCell.xib; sourceTree = ""; }; - B1B558BA20EF768E00210D55 /* RoomMembershipExpandedBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomMembershipExpandedBubbleCell.xib; sourceTree = ""; }; - B1B5590C20EF782700210D55 /* TableViewCellWithPhoneNumberTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableViewCellWithPhoneNumberTextField.h; sourceTree = ""; }; - B1B5590D20EF782800210D55 /* TableViewCellWithPhoneNumberTextField.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TableViewCellWithPhoneNumberTextField.xib; sourceTree = ""; }; - B1B5590E20EF782800210D55 /* TableViewCellWithPhoneNumberTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TableViewCellWithPhoneNumberTextField.m; sourceTree = ""; }; - B1B5592820EF7A5D00210D55 /* TableViewCellWithButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableViewCellWithButton.h; sourceTree = ""; }; - B1B5592920EF7A5D00210D55 /* TableViewCellWithButton.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TableViewCellWithButton.xib; sourceTree = ""; }; - B1B5592A20EF7A5D00210D55 /* TableViewCellWithButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TableViewCellWithButton.m; sourceTree = ""; }; - B1B5592E20EF7BAC00210D55 /* TableViewCellWithCheckBoxAndLabel.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TableViewCellWithCheckBoxAndLabel.xib; sourceTree = ""; }; - B1B5592F20EF7BAC00210D55 /* TableViewCellWithLabelAndLargeTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TableViewCellWithLabelAndLargeTextView.m; sourceTree = ""; }; - B1B5593020EF7BAC00210D55 /* TableViewCellWithCheckBoxes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableViewCellWithCheckBoxes.h; sourceTree = ""; }; - B1B5593120EF7BAC00210D55 /* TableViewCellWithCheckBoxAndLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableViewCellWithCheckBoxAndLabel.h; sourceTree = ""; }; - B1B5593220EF7BAC00210D55 /* TableViewCellWithCheckBoxes.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TableViewCellWithCheckBoxes.xib; sourceTree = ""; }; - B1B5593320EF7BAC00210D55 /* TableViewCellWithLabelAndLargeTextView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TableViewCellWithLabelAndLargeTextView.xib; sourceTree = ""; }; - B1B5593420EF7BAC00210D55 /* TableViewCellWithCheckBoxAndLabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TableViewCellWithCheckBoxAndLabel.m; sourceTree = ""; }; - B1B5593520EF7BAC00210D55 /* TableViewCellWithCheckBoxes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TableViewCellWithCheckBoxes.m; sourceTree = ""; }; - B1B5593620EF7BAC00210D55 /* TableViewCellWithLabelAndLargeTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableViewCellWithLabelAndLargeTextView.h; sourceTree = ""; }; - B1B5593E20EF7BD000210D55 /* RoomCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomCollectionViewCell.h; sourceTree = ""; }; - B1B5593F20EF7BD000210D55 /* TableViewCellWithCollectionView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TableViewCellWithCollectionView.xib; sourceTree = ""; }; - B1B5594020EF7BD000210D55 /* TableViewCellWithCollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TableViewCellWithCollectionView.m; sourceTree = ""; }; - B1B5594120EF7BD000210D55 /* RoomCollectionViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomCollectionViewCell.xib; sourceTree = ""; }; - B1B5594220EF7BD000210D55 /* RoomCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomCollectionViewCell.m; sourceTree = ""; }; - B1B5594320EF7BD000210D55 /* TableViewCellWithCollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableViewCellWithCollectionView.h; sourceTree = ""; }; - B1B5594F20EF9A8600210D55 /* RecentTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RecentTableViewCell.h; sourceTree = ""; }; - B1B5595020EF9A8600210D55 /* RecentTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RecentTableViewCell.m; sourceTree = ""; }; - B1B5595120EF9A8600210D55 /* RecentTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RecentTableViewCell.xib; sourceTree = ""; }; - B1B5596220EF9E9A00210D55 /* RoomTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomTableViewCell.h; sourceTree = ""; }; - B1B5596320EF9E9A00210D55 /* RoomTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomTableViewCell.xib; sourceTree = ""; }; - B1B5596420EF9E9A00210D55 /* RoomTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomTableViewCell.m; sourceTree = ""; }; - B1B5596C20EFA85C00210D55 /* EncryptionInfoView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EncryptionInfoView.m; sourceTree = ""; }; - B1B5596D20EFA85C00210D55 /* EncryptionInfoView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EncryptionInfoView.h; sourceTree = ""; }; - B1B5596E20EFA85C00210D55 /* EncryptionInfoView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = EncryptionInfoView.xib; sourceTree = ""; }; - B1B5597220EFB02900210D55 /* InviteRecentTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InviteRecentTableViewCell.m; sourceTree = ""; }; - B1B5597320EFB02900210D55 /* InviteRecentTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = InviteRecentTableViewCell.xib; sourceTree = ""; }; - B1B5597420EFB02900210D55 /* InviteRecentTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InviteRecentTableViewCell.h; sourceTree = ""; }; - B1B5597D20EFC3DF00210D55 /* RageShakeManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RageShakeManager.h; sourceTree = ""; }; - B1B5597E20EFC3DF00210D55 /* RageShakeManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RageShakeManager.m; sourceTree = ""; }; - B1B5597F20EFC3DF00210D55 /* RiotSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RiotSettings.swift; sourceTree = ""; }; - B1B5598120EFC3DF00210D55 /* Widget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Widget.h; sourceTree = ""; }; - B1B5598220EFC3DF00210D55 /* WidgetManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WidgetManager.h; sourceTree = ""; }; - B1B5598320EFC3DF00210D55 /* Widget.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Widget.m; sourceTree = ""; }; - B1B5598420EFC3DF00210D55 /* WidgetManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WidgetManager.m; sourceTree = ""; }; - B1B5598C20EFC5E400210D55 /* Analytics.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Analytics.m; sourceTree = ""; }; - B1B5598D20EFC5E400210D55 /* DecryptionFailure.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DecryptionFailure.m; sourceTree = ""; }; - B1B5598E20EFC5E400210D55 /* DecryptionFailureTracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DecryptionFailureTracker.h; sourceTree = ""; }; - B1B5598F20EFC5E400210D55 /* DecryptionFailure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DecryptionFailure.h; sourceTree = ""; }; - B1B5599020EFC5E400210D55 /* Analytics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Analytics.h; sourceTree = ""; }; - B1B5599120EFC5E400210D55 /* DecryptionFailureTracker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DecryptionFailureTracker.m; sourceTree = ""; }; - B1B7F22824F3F8E900FD567B /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - B1B9194A2118984300FE25B5 /* RoomPredecessorBubbleCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RoomPredecessorBubbleCell.xib; sourceTree = ""; }; - B1B9DED922E9B7350065E677 /* SerializationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SerializationService.swift; sourceTree = ""; }; - B1B9DEDB22E9B7440065E677 /* SerializationServiceType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SerializationServiceType.swift; sourceTree = ""; }; - B1B9DEDD22E9D9890065E677 /* EmojiServiceType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiServiceType.swift; sourceTree = ""; }; - B1B9DEE022EB34ED0065E677 /* ReactionHistoryCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReactionHistoryCoordinatorType.swift; sourceTree = ""; }; - B1B9DEE122EB34EE0065E677 /* ReactionHistoryViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReactionHistoryViewController.swift; sourceTree = ""; }; - B1B9DEE222EB34EE0065E677 /* ReactionHistoryViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = ReactionHistoryViewController.storyboard; sourceTree = ""; }; - B1B9DEE322EB34EE0065E677 /* ReactionHistoryViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReactionHistoryViewModel.swift; sourceTree = ""; }; - B1B9DEE422EB34EE0065E677 /* ReactionHistoryViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReactionHistoryViewModelType.swift; sourceTree = ""; }; - B1B9DEE522EB34EE0065E677 /* ReactionHistoryCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReactionHistoryCoordinator.swift; sourceTree = ""; }; - B1B9DEE622EB34EE0065E677 /* ReactionHistoryViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReactionHistoryViewAction.swift; sourceTree = ""; }; - B1B9DEE722EB34EE0065E677 /* ReactionHistoryViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReactionHistoryViewState.swift; sourceTree = ""; }; - B1B9DEF022EB396B0065E677 /* ReactionHistoryViewData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReactionHistoryViewData.swift; sourceTree = ""; }; - B1B9DEF222EB426D0065E677 /* ReactionHistoryViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReactionHistoryViewCell.swift; sourceTree = ""; }; - B1B9DEF322EB426D0065E677 /* ReactionHistoryViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ReactionHistoryViewCell.xib; sourceTree = ""; }; - B1BB649224FD428A008238AE /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - B1BD71B4238DCBF700BA92E2 /* SlidingModalEmptyViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SlidingModalEmptyViewController.swift; sourceTree = ""; }; - B1BD71BA238E8F9600BA92E2 /* WidgetPermissionViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetPermissionViewController.swift; sourceTree = ""; }; - B1BD71BE238EA56700BA92E2 /* WidgetPermissionViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = WidgetPermissionViewController.storyboard; sourceTree = ""; }; - B1BD71C0238EA92000BA92E2 /* WidgetPermissionViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetPermissionViewModel.swift; sourceTree = ""; }; - B1BEE71123DF2ACF0003A4CB /* UserVerificationCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserVerificationCoordinatorType.swift; sourceTree = ""; }; - B1BEE71223DF2ACF0003A4CB /* UserVerificationCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserVerificationCoordinator.swift; sourceTree = ""; }; - B1BEE71323DF2ACF0003A4CB /* UserVerificationCoordinatorBridgePresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserVerificationCoordinatorBridgePresenter.swift; sourceTree = ""; }; - B1BEE72823DF38B10003A4CB /* UserVerificationSessionStatusCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserVerificationSessionStatusCell.swift; sourceTree = ""; }; - B1BEE72923DF38B20003A4CB /* UserVerificationSessionStatusCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = UserVerificationSessionStatusCell.xib; sourceTree = ""; }; - B1BEE72C23DF44A20003A4CB /* UserVerificationSessionsStatusViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserVerificationSessionsStatusViewModelType.swift; sourceTree = ""; }; - B1BEE72D23DF44A30003A4CB /* UserVerificationSessionsStatusViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserVerificationSessionsStatusViewModel.swift; sourceTree = ""; }; - B1BEE72E23DF44A30003A4CB /* UserVerificationSessionsStatusCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserVerificationSessionsStatusCoordinatorType.swift; sourceTree = ""; }; - B1BEE72F23DF44A40003A4CB /* UserVerificationSessionsStatusViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserVerificationSessionsStatusViewState.swift; sourceTree = ""; }; - B1BEE73023DF44A40003A4CB /* UserVerificationSessionsStatusViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserVerificationSessionsStatusViewAction.swift; sourceTree = ""; }; - B1BEE73123DF44A50003A4CB /* UserVerificationSessionsStatusViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserVerificationSessionsStatusViewController.swift; sourceTree = ""; }; - B1BEE73223DF44A50003A4CB /* UserVerificationSessionsStatusViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = UserVerificationSessionsStatusViewController.storyboard; sourceTree = ""; }; - B1BEE73323DF44A60003A4CB /* UserVerificationSessionsStatusCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserVerificationSessionsStatusCoordinator.swift; sourceTree = ""; }; - B1BEE73C23E070300003A4CB /* UserEncryptionTrustLevel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UserEncryptionTrustLevel.h; sourceTree = ""; }; - B1BEE73E23E093220003A4CB /* UserVerificationSessionStatusViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserVerificationSessionStatusViewState.swift; sourceTree = ""; }; - B1BEE73F23E093230003A4CB /* UserVerificationSessionStatusViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserVerificationSessionStatusViewModelType.swift; sourceTree = ""; }; - B1BEE74023E093230003A4CB /* UserVerificationSessionStatusViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserVerificationSessionStatusViewModel.swift; sourceTree = ""; }; - B1BEE74123E093230003A4CB /* UserVerificationSessionStatusViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = UserVerificationSessionStatusViewController.storyboard; sourceTree = ""; }; - B1BEE74223E093240003A4CB /* UserVerificationSessionStatusCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserVerificationSessionStatusCoordinatorType.swift; sourceTree = ""; }; - B1BEE74323E093250003A4CB /* UserVerificationSessionStatusViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserVerificationSessionStatusViewAction.swift; sourceTree = ""; }; - B1BEE74423E093250003A4CB /* UserVerificationSessionStatusViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserVerificationSessionStatusViewController.swift; sourceTree = ""; }; - B1BEE74523E093260003A4CB /* UserVerificationSessionStatusCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserVerificationSessionStatusCoordinator.swift; sourceTree = ""; }; - B1C335CC22F1C1320021BA8D /* CameraPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CameraPresenter.swift; sourceTree = ""; }; - B1C335FE22F1ED5F0021BA8D /* MediaPickerCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaPickerCoordinatorType.swift; sourceTree = ""; }; - B1C335FF22F1ED5F0021BA8D /* MediaPickerCoordinatorBridgePresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaPickerCoordinatorBridgePresenter.swift; sourceTree = ""; }; - B1C3360022F1ED600021BA8D /* MediaPickerCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaPickerCoordinator.swift; sourceTree = ""; }; - B1C3361B22F32B4A0021BA8D /* SingleImagePickerPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SingleImagePickerPresenter.swift; sourceTree = ""; }; - B1C456C82548CF09002E5734 /* JitsiJWTPayload.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JitsiJWTPayload.swift; sourceTree = ""; }; - B1C45A7B232A8C2600165425 /* SettingsIdentityServerCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsIdentityServerCoordinatorType.swift; sourceTree = ""; }; - B1C45A7C232A8C2600165425 /* SettingsIdentityServerViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = SettingsIdentityServerViewController.storyboard; sourceTree = ""; }; - B1C45A7D232A8C2600165425 /* SettingsIdentityServerViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsIdentityServerViewModelType.swift; sourceTree = ""; }; - B1C45A7E232A8C2600165425 /* SettingsIdentityServerCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsIdentityServerCoordinator.swift; sourceTree = ""; }; - B1C45A7F232A8C2600165425 /* SettingsIdentityServerViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsIdentityServerViewState.swift; sourceTree = ""; }; - B1C45A80232A8C2600165425 /* SettingsIdentityServerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsIdentityServerViewController.swift; sourceTree = ""; }; - B1C45A81232A8C2600165425 /* SettingsIdentityServerCoordinatorBridgePresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsIdentityServerCoordinatorBridgePresenter.swift; sourceTree = ""; }; - B1C45A82232A8C2600165425 /* SettingsIdentityServerViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsIdentityServerViewModel.swift; sourceTree = ""; }; - B1C45A83232A8C2600165425 /* SettingsIdentityServerViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsIdentityServerViewAction.swift; sourceTree = ""; }; - B1C543A3239E98E400DCA1FA /* KeyVerificationCellInnerContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyVerificationCellInnerContentView.swift; sourceTree = ""; }; - B1C543A5239E999700DCA1FA /* KeyVerificationCellInnerContentView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KeyVerificationCellInnerContentView.xib; sourceTree = ""; }; - B1C543AD23A286A000DCA1FA /* KeyVerificationRequestStatusBubbleCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyVerificationRequestStatusBubbleCell.swift; sourceTree = ""; }; - B1C543AF23A2871300DCA1FA /* KeyVerificationBaseBubbleCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyVerificationBaseBubbleCell.swift; sourceTree = ""; }; - B1C543B123A2913F00DCA1FA /* KeyVerificationConclusionBubbleCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyVerificationConclusionBubbleCell.swift; sourceTree = ""; }; - B1C562C92289C2690037F12A /* UIGestureRecognizer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIGestureRecognizer.swift; sourceTree = ""; }; - B1C562CB228AB3510037F12A /* UIStackView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIStackView.swift; sourceTree = ""; }; - B1C562D8228C0B760037F12A /* RoomContextualMenuItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomContextualMenuItem.swift; sourceTree = ""; }; - B1C562DA228C0BB00037F12A /* RoomContextualMenuAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomContextualMenuAction.swift; sourceTree = ""; }; - B1C562DC228C7C890037F12A /* RoomContextualMenuToolbarView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomContextualMenuToolbarView.swift; sourceTree = ""; }; - B1C562DD228C7C8A0037F12A /* RoomContextualMenuViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomContextualMenuViewController.swift; sourceTree = ""; }; - B1C562DE228C7C8B0037F12A /* RoomContextualMenuPresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomContextualMenuPresenter.swift; sourceTree = ""; }; - B1C562DF228C7C8C0037F12A /* RoomContextualMenuToolbarView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomContextualMenuToolbarView.xib; sourceTree = ""; }; - B1C562E0228C7C8C0037F12A /* RoomContextualMenuViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = RoomContextualMenuViewController.storyboard; sourceTree = ""; }; - B1C562E6228C7CF10037F12A /* ContextualMenuItemView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContextualMenuItemView.swift; sourceTree = ""; }; - B1C562E7228C7CF20037F12A /* ContextualMenuItemView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContextualMenuItemView.xib; sourceTree = ""; }; - B1C6FFE723954CE70055347B /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = ""; }; - B1C6FFE823954D3B0055347B /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = ""; }; - B1C6FFE923954D4B0055347B /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Vector.strings; sourceTree = ""; }; - B1C7822D2500EAF400337EB9 /* TabBarCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TabBarCoordinator.swift; sourceTree = ""; }; - B1C7822E2500EAF500337EB9 /* TabBarCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TabBarCoordinatorType.swift; sourceTree = ""; }; - B1C782312500F96600337EB9 /* SplitViewPresentable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplitViewPresentable.swift; sourceTree = ""; }; - B1CA3A2621EF6913000D1D89 /* UIViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIViewController.swift; sourceTree = ""; }; - B1CA3A2821EF692B000D1D89 /* UIView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIView.swift; sourceTree = ""; }; - B1CE83B52422812000D07506 /* KeyVerificationCoordinatorBridgePresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationCoordinatorBridgePresenter.swift; sourceTree = ""; }; - B1CE83B72422815900D07506 /* KeyVerificationKind.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationKind.swift; sourceTree = ""; }; - B1CE83B82422815A00D07506 /* KeyVerificationService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationService.swift; sourceTree = ""; }; - B1CE83BC2422817000D07506 /* KeyVerificationVerifiedViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = KeyVerificationVerifiedViewController.storyboard; sourceTree = ""; }; - B1CE83BD2422817000D07506 /* KeyVerificationVerifiedViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationVerifiedViewController.swift; sourceTree = ""; }; - B1CE83C02422817100D07506 /* KeyVerificationVerifyByScanningViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationVerifyByScanningViewController.swift; sourceTree = ""; }; - B1CE83C12422817100D07506 /* KeyVerificationVerifyByScanningCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationVerifyByScanningCoordinator.swift; sourceTree = ""; }; - B1CE83C22422817100D07506 /* KeyVerificationVerifyByScanningViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationVerifyByScanningViewModelType.swift; sourceTree = ""; }; - B1CE83C32422817100D07506 /* KeyVerificationVerifyByScanningCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationVerifyByScanningCoordinatorType.swift; sourceTree = ""; }; - B1CE83C42422817100D07506 /* KeyVerificationVerifyByScanningViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationVerifyByScanningViewAction.swift; sourceTree = ""; }; - B1CE83C52422817100D07506 /* KeyVerificationVerifyByScanningViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationVerifyByScanningViewModel.swift; sourceTree = ""; }; - B1CE83C62422817100D07506 /* KeyVerificationVerifyByScanningViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = KeyVerificationVerifyByScanningViewController.storyboard; sourceTree = ""; }; - B1CE83C72422817100D07506 /* KeyVerificationVerifyByScanningViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationVerifyByScanningViewState.swift; sourceTree = ""; }; - B1CE83C92422817100D07506 /* KeyVerificationVerifyBySASViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationVerifyBySASViewAction.swift; sourceTree = ""; }; - B1CE83CA2422817100D07506 /* KeyVerificationVerifyBySASViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationVerifyBySASViewModelType.swift; sourceTree = ""; }; - B1CE83CB2422817100D07506 /* KeyVerificationVerifyBySASCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationVerifyBySASCoordinatorType.swift; sourceTree = ""; }; - B1CE83CC2422817100D07506 /* KeyVerificationVerifyBySASViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationVerifyBySASViewController.swift; sourceTree = ""; }; - B1CE83CD2422817100D07506 /* KeyVerificationVerifyBySASCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationVerifyBySASCoordinator.swift; sourceTree = ""; }; - B1CE83CE2422817100D07506 /* KeyVerificationVerifyBySASViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationVerifyBySASViewState.swift; sourceTree = ""; }; - B1CE83D02422817100D07506 /* VerifyEmojiCollectionViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VerifyEmojiCollectionViewCell.swift; sourceTree = ""; }; - B1CE83D12422817100D07506 /* KeyVerificationVerifyBySASViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = KeyVerificationVerifyBySASViewController.storyboard; sourceTree = ""; }; - B1CE83D22422817100D07506 /* KeyVerificationVerifyBySASViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationVerifyBySASViewModel.swift; sourceTree = ""; }; - B1CE9EFC22148703000FAE6A /* SignOutAlertPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignOutAlertPresenter.swift; sourceTree = ""; }; - B1CE9F052216FB09000FAE6A /* EncryptionKeysExportPresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EncryptionKeysExportPresenter.swift; sourceTree = ""; }; - B1D1BDA522BBAFB500831367 /* ReactionsMenuView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReactionsMenuView.swift; sourceTree = ""; }; - B1D1BDA722BBAFC900831367 /* ReactionsMenuView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ReactionsMenuView.xib; sourceTree = ""; }; - B1D211E122BD193C00D939BD /* ReactionsMenuViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReactionsMenuViewModel.swift; sourceTree = ""; }; - B1D211E322C18E3800D939BD /* ReactionsMenuViewModelType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReactionsMenuViewModelType.swift; sourceTree = ""; }; - B1D211E522C194A200D939BD /* ReactionsMenuViewState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReactionsMenuViewState.swift; sourceTree = ""; }; - B1D211E722C195B400D939BD /* ReactionMenuItemViewData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReactionMenuItemViewData.swift; sourceTree = ""; }; - B1D250D62118AA0A000F4E93 /* RoomPredecessorBubbleCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomPredecessorBubbleCell.h; sourceTree = ""; }; - B1D250D72118AA0A000F4E93 /* RoomPredecessorBubbleCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomPredecessorBubbleCell.m; sourceTree = ""; }; - B1D44998243CD73700959523 /* RoomPowerLevel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomPowerLevel.swift; sourceTree = ""; }; - B1D4752521EE4E620067973F /* KeyboardAvoider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyboardAvoider.swift; sourceTree = ""; }; - B1D4752621EE4E620067973F /* KeyboardNotification.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyboardNotification.swift; sourceTree = ""; }; - B1D4752921EE52B10067973F /* KeyBackupSetupIntroViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyBackupSetupIntroViewController.swift; sourceTree = ""; }; - B1D4752B21EE52C30067973F /* KeyBackupSetupIntroViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = KeyBackupSetupIntroViewController.storyboard; sourceTree = ""; }; - B1DB4F05223015080065DBFA /* Character.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Character.swift; sourceTree = ""; }; - B1DB4F0A223131600065DBFA /* String.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = String.swift; sourceTree = ""; }; - B1DB4F0D22316FFF0065DBFA /* UserNameColorGenerator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserNameColorGenerator.swift; sourceTree = ""; }; - B1DCC60F22E5E16900625807 /* EmojiPickerViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = EmojiPickerViewController.storyboard; sourceTree = ""; }; - B1DCC61022E5E16900625807 /* EmojiPickerViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EmojiPickerViewState.swift; sourceTree = ""; }; - B1DCC61122E5E16A00625807 /* EmojiPickerCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EmojiPickerCoordinatorType.swift; sourceTree = ""; }; - B1DCC61222E5E16C00625807 /* EmojiPickerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EmojiPickerViewController.swift; sourceTree = ""; }; - B1DCC61322E5E16D00625807 /* EmojiPickerCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EmojiPickerCoordinator.swift; sourceTree = ""; }; - B1DCC61422E5E16E00625807 /* EmojiPickerViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EmojiPickerViewAction.swift; sourceTree = ""; }; - B1DCC61522E5E16F00625807 /* EmojiPickerViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EmojiPickerViewModelType.swift; sourceTree = ""; }; - B1DCC61622E5E17000625807 /* EmojiPickerViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EmojiPickerViewModel.swift; sourceTree = ""; }; - B1DCC61F22E5EDA400625807 /* EmojiPickerCoordinatorBridgePresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiPickerCoordinatorBridgePresenter.swift; sourceTree = ""; }; - B1DCC62122E60BE000625807 /* EmojiPickerItemViewData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiPickerItemViewData.swift; sourceTree = ""; }; - B1DCC62322E60CA800625807 /* EmojiPickerCategoryViewData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiPickerCategoryViewData.swift; sourceTree = ""; }; - B1DCC62522E60CC600625807 /* EmojiItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiItem.swift; sourceTree = ""; }; - B1DCC62722E60CE300625807 /* EmojiCategory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiCategory.swift; sourceTree = ""; }; - B1DCC62922E60D1000625807 /* EmojiMartService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiMartService.swift; sourceTree = ""; }; - B1DCC62B22E61EAF00625807 /* EmojiPickerViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiPickerViewCell.swift; sourceTree = ""; }; - B1DCC62C22E61EAF00625807 /* EmojiPickerViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = EmojiPickerViewCell.xib; sourceTree = ""; }; - B1DCC62F22E7026F00625807 /* EmojiPickerHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiPickerHeaderView.swift; sourceTree = ""; }; - B1DCC63022E7026F00625807 /* EmojiPickerHeaderView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = EmojiPickerHeaderView.xib; sourceTree = ""; }; - B1DCC63322E72C1B00625807 /* UISearchBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UISearchBar.swift; sourceTree = ""; }; - B1DCC63622E8541700625807 /* EmojiStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiStore.swift; sourceTree = ""; }; - B1DCC63822E85E9A00625807 /* EmojiMartStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiMartStore.swift; sourceTree = ""; }; - B1DCC63A22E85EF800625807 /* EmojiMartCategory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiMartCategory.swift; sourceTree = ""; }; - B1DCC63E22E9A3AE00625807 /* EmojiItem+EmojiMart.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "EmojiItem+EmojiMart.swift"; sourceTree = ""; }; - B1E5368821FB1E20001F3AFF /* UIButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIButton.swift; sourceTree = ""; }; - B1E5368C21FB7245001F3AFF /* KeyBackupRecoverFromPassphraseViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverFromPassphraseViewController.swift; sourceTree = ""; }; - B1E5368E21FB7258001F3AFF /* KeyBackupRecoverFromPassphraseViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = KeyBackupRecoverFromPassphraseViewController.storyboard; sourceTree = ""; }; - B1E5EF9C2541C06000E8A883 /* JitsiWellKnown.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JitsiWellKnown.swift; sourceTree = ""; }; - B1EDFDF32525E9690020EEFF /* et */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = et; path = et.lproj/Vector.strings; sourceTree = ""; }; - B1EDFDF42525E9690020EEFF /* et */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = et; path = et.lproj/InfoPlist.strings; sourceTree = ""; }; - B1EDFDF52525E96A0020EEFF /* et */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = et; path = et.lproj/Localizable.strings; sourceTree = ""; }; - B1F9072C255CDA1200DD14E5 /* RecentsViewController+RoomInvite.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "RecentsViewController+RoomInvite.swift"; sourceTree = ""; }; - B1F9072E255CE06000DD14E5 /* InviteRecentTableViewCell+ButtonViewsUpdate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "InviteRecentTableViewCell+ButtonViewsUpdate.swift"; sourceTree = ""; }; - B1FDF55F21F5FE5500BA3834 /* KeyBackupSetupPassphraseViewAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyBackupSetupPassphraseViewAction.swift; sourceTree = ""; }; - B43DC75D1590BB8A4243BD4D /* Pods-RiotPods-Riot.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RiotPods-Riot.release.xcconfig"; path = "Target Support Files/Pods-RiotPods-Riot/Pods-RiotPods-Riot.release.xcconfig"; sourceTree = ""; }; - BABB6681FBD79219B1213D6C /* Pods-RiotTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RiotTests.debug.xcconfig"; path = "Target Support Files/Pods-RiotTests/Pods-RiotTests.debug.xcconfig"; sourceTree = ""; }; - E2599D0ECB8DD206624E450B /* Pods-RiotPods-SiriIntents.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RiotPods-SiriIntents.release.xcconfig"; path = "Target Support Files/Pods-RiotPods-SiriIntents/Pods-RiotPods-SiriIntents.release.xcconfig"; sourceTree = ""; }; - E4D418D054E4032F2CFA8B51 /* Pods_RiotPods_RiotNSE.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RiotPods_RiotNSE.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EC1CA85124C1DEC400DE9EBF /* EnterPinCodeViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnterPinCodeViewModelType.swift; sourceTree = ""; }; - EC1CA85224C1DEC400DE9EBF /* EnterPinCodeViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnterPinCodeViewAction.swift; sourceTree = ""; }; - EC1CA85324C1DEC400DE9EBF /* EnterPinCodeViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnterPinCodeViewModel.swift; sourceTree = ""; }; - EC1CA85424C1DEC400DE9EBF /* EnterPinCodeViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnterPinCodeViewState.swift; sourceTree = ""; }; - EC1CA85524C1DEC400DE9EBF /* EnterPinCodeCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnterPinCodeCoordinatorType.swift; sourceTree = ""; }; - EC1CA85624C1DEC400DE9EBF /* EnterPinCodeCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnterPinCodeCoordinator.swift; sourceTree = ""; }; - EC1CA85724C1DEC400DE9EBF /* EnterPinCodeViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = EnterPinCodeViewController.storyboard; sourceTree = ""; }; - EC1CA85824C1DEC400DE9EBF /* EnterPinCodeViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnterPinCodeViewController.swift; sourceTree = ""; }; - EC1CA85A24C1DEC400DE9EBF /* SetPinCoordinatorBridgePresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SetPinCoordinatorBridgePresenter.swift; sourceTree = ""; }; - EC1CA85B24C1DEC400DE9EBF /* SetPinCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SetPinCoordinator.swift; sourceTree = ""; }; - EC1CA85E24C1DEC400DE9EBF /* SetPinCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SetPinCoordinatorType.swift; sourceTree = ""; }; - EC1CA86D24C5BA4500DE9EBF /* PinCodePreferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PinCodePreferences.swift; sourceTree = ""; }; - EC1CA87124C823E700DE9EBF /* KeyValueStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyValueStore.swift; sourceTree = ""; }; - EC1CA87424C8259700DE9EBF /* KeychainStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeychainStore.swift; sourceTree = ""; }; - EC1CA87624C82D0E00DE9EBF /* MemoryStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MemoryStore.swift; sourceTree = ""; }; - EC1CA87924C8841C00DE9EBF /* LocalAuthenticationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalAuthenticationService.swift; sourceTree = ""; }; - EC1CA88D24C9C9A200DE9EBF /* SetupBiometricsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SetupBiometricsViewController.swift; sourceTree = ""; }; - EC1CA88E24C9C9A200DE9EBF /* SetupBiometricsCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SetupBiometricsCoordinator.swift; sourceTree = ""; }; - EC1CA88F24C9C9A200DE9EBF /* SetupBiometricsViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SetupBiometricsViewModelType.swift; sourceTree = ""; }; - EC1CA89024C9C9A200DE9EBF /* SetupBiometricsViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SetupBiometricsViewAction.swift; sourceTree = ""; }; - EC1CA89124C9C9A200DE9EBF /* SetupBiometricsViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = SetupBiometricsViewController.storyboard; sourceTree = ""; }; - EC1CA89224C9C9A200DE9EBF /* SetupBiometricsCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SetupBiometricsCoordinatorType.swift; sourceTree = ""; }; - EC1CA89324C9C9A200DE9EBF /* SetupBiometricsViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SetupBiometricsViewState.swift; sourceTree = ""; }; - EC1CA89424C9C9A200DE9EBF /* SetupBiometricsViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SetupBiometricsViewModel.swift; sourceTree = ""; }; - EC1CA8B324D1AA8000DE9EBF /* Common.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Common.xcconfig; sourceTree = ""; }; - EC1CA8B424D1AA8700DE9EBF /* App-Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "App-Debug.xcconfig"; sourceTree = ""; }; - EC1CA8B624D1AA8D00DE9EBF /* App-Release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "App-Release.xcconfig"; sourceTree = ""; }; - EC1CA8B824D1AD1600DE9EBF /* ShareExtension-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "ShareExtension-Debug.xcconfig"; sourceTree = ""; }; - EC1CA8B924D1AD1600DE9EBF /* ShareExtension-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "ShareExtension-Release.xcconfig"; sourceTree = ""; }; - EC1CA8BA24D1B4BF00DE9EBF /* SiriIntents-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "SiriIntents-Release.xcconfig"; sourceTree = ""; }; - EC1CA8BB24D1B4BF00DE9EBF /* SiriIntents-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "SiriIntents-Debug.xcconfig"; sourceTree = ""; }; - EC1CA8BC24D1B4CF00DE9EBF /* NSE-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "NSE-Debug.xcconfig"; sourceTree = ""; }; - EC1CA8BD24D1B4CF00DE9EBF /* NSE-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "NSE-Release.xcconfig"; sourceTree = ""; }; - EC1CA8D324D8103400DE9EBF /* App-Common.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "App-Common.xcconfig"; sourceTree = ""; }; - EC1CA8D524D8108700DE9EBF /* ShareExtension-Common.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "ShareExtension-Common.xcconfig"; sourceTree = ""; }; - EC1CA8D724D8118400DE9EBF /* SiriIntents-Common.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "SiriIntents-Common.xcconfig"; sourceTree = ""; }; - EC1CA8D924D811B400DE9EBF /* NSE-Common.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "NSE-Common.xcconfig"; sourceTree = ""; }; - EC2B4EF024A1EEBD005EB739 /* DataProtectionHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataProtectionHelper.swift; sourceTree = ""; }; - EC31F011251B4DBD00D407DA /* RoomInfoListViewData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomInfoListViewData.swift; sourceTree = ""; }; - EC31F013251B53AD00D407DA /* RoomInfoBasicView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomInfoBasicView.swift; sourceTree = ""; }; - EC31F015251B53BC00D407DA /* RoomInfoBasicView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RoomInfoBasicView.xib; sourceTree = ""; }; - EC31F0992524A60E00D407DA /* BiometricsAuthenticationPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BiometricsAuthenticationPresenter.swift; sourceTree = ""; }; - EC3B066424AC6ADD000DF9BF /* CrossSigningService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CrossSigningService.swift; sourceTree = ""; }; - EC3B066624AC6ADD000DF9BF /* CrossSigningSetupBannerCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CrossSigningSetupBannerCell.xib; sourceTree = ""; }; - EC3B066724AC6ADD000DF9BF /* CrossSigningBannerPreferences.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CrossSigningBannerPreferences.swift; sourceTree = ""; }; - EC3B066824AC6ADD000DF9BF /* CrossSigningSetupBannerCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CrossSigningSetupBannerCell.swift; sourceTree = ""; }; - EC49F5F82515016F003894A6 /* RoomInfoBasicViewData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomInfoBasicViewData.swift; sourceTree = ""; }; - EC51E78C250FC15000AAE7DB /* RoomCreationEventRowViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomCreationEventRowViewModel.swift; sourceTree = ""; }; - EC51E78F2510B7C700AAE7DB /* AutosizedTableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutosizedTableView.swift; sourceTree = ""; }; - EC51E7912510C0A500AAE7DB /* SpanningSlidingModalContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpanningSlidingModalContainerView.swift; sourceTree = ""; }; - EC51E7932510C0D000AAE7DB /* SpanningSlidingModalContainerView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SpanningSlidingModalContainerView.xib; sourceTree = ""; }; - EC51E79A2514D2E000AAE7DB /* RoomInfoCoordinatorBridgePresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomInfoCoordinatorBridgePresenter.swift; sourceTree = ""; }; - EC51E79B2514D2E000AAE7DB /* RoomInfoCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomInfoCoordinator.swift; sourceTree = ""; }; - EC51E79D2514D2E100AAE7DB /* RoomInfoListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomInfoListViewController.swift; sourceTree = ""; }; - EC51E79E2514D2E100AAE7DB /* RoomInfoListViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomInfoListViewModelType.swift; sourceTree = ""; }; - EC51E79F2514D2E100AAE7DB /* RoomInfoListViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = RoomInfoListViewController.storyboard; sourceTree = ""; }; - EC51E7A02514D2E100AAE7DB /* RoomInfoListViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomInfoListViewState.swift; sourceTree = ""; }; - EC51E7A12514D2E100AAE7DB /* RoomInfoListCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomInfoListCoordinatorType.swift; sourceTree = ""; }; - EC51E7A22514D2E100AAE7DB /* RoomInfoListCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomInfoListCoordinator.swift; sourceTree = ""; }; - EC51E7A32514D2E100AAE7DB /* RoomInfoListViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomInfoListViewModel.swift; sourceTree = ""; }; - EC51E7A42514D2E100AAE7DB /* RoomInfoListViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomInfoListViewAction.swift; sourceTree = ""; }; - EC51E7A52514D2E100AAE7DB /* RoomInfoCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomInfoCoordinatorType.swift; sourceTree = ""; }; - EC619C1824DAD96000663A80 /* UIScrollView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIScrollView.swift; sourceTree = ""; }; - EC711B4524A63B13008F830C /* MXRecoveryService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MXRecoveryService.swift; sourceTree = ""; }; - EC711B4A24A63B36008F830C /* SecretsSetupRecoveryKeyViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsSetupRecoveryKeyViewModelType.swift; sourceTree = ""; }; - EC711B4B24A63B36008F830C /* SecretsSetupRecoveryKeyCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsSetupRecoveryKeyCoordinatorType.swift; sourceTree = ""; }; - EC711B4C24A63B36008F830C /* SecretsSetupRecoveryKeyViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsSetupRecoveryKeyViewState.swift; sourceTree = ""; }; - EC711B4D24A63B36008F830C /* SecretsSetupRecoveryKeyViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = SecretsSetupRecoveryKeyViewController.storyboard; sourceTree = ""; }; - EC711B4E24A63B36008F830C /* SecretsSetupRecoveryKeyViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsSetupRecoveryKeyViewModel.swift; sourceTree = ""; }; - EC711B4F24A63B36008F830C /* SecretsSetupRecoveryKeyViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsSetupRecoveryKeyViewController.swift; sourceTree = ""; }; - EC711B5024A63B36008F830C /* SecretsSetupRecoveryKeyViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsSetupRecoveryKeyViewAction.swift; sourceTree = ""; }; - EC711B5124A63B36008F830C /* SecretsSetupRecoveryKeyCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsSetupRecoveryKeyCoordinator.swift; sourceTree = ""; }; - EC711B5324A63B36008F830C /* SecretsSetupRecoveryPassphraseViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = SecretsSetupRecoveryPassphraseViewController.storyboard; sourceTree = ""; }; - EC711B5424A63B36008F830C /* SecretsSetupRecoveryPassphraseViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsSetupRecoveryPassphraseViewModel.swift; sourceTree = ""; }; - EC711B5524A63B36008F830C /* SecretsSetupRecoveryPassphraseCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsSetupRecoveryPassphraseCoordinatorType.swift; sourceTree = ""; }; - EC711B5624A63B36008F830C /* SecretsSetupRecoveryPassphraseViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsSetupRecoveryPassphraseViewController.swift; sourceTree = ""; }; - EC711B5724A63B36008F830C /* SecretsSetupRecoveryPassphraseViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsSetupRecoveryPassphraseViewState.swift; sourceTree = ""; }; - EC711B5824A63B36008F830C /* SecretsSetupRecoveryPassphraseViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsSetupRecoveryPassphraseViewAction.swift; sourceTree = ""; }; - EC711B5924A63B36008F830C /* SecretsSetupRecoveryPassphraseViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsSetupRecoveryPassphraseViewModelType.swift; sourceTree = ""; }; - EC711B5A24A63B36008F830C /* SecretsSetupRecoveryPassphraseCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsSetupRecoveryPassphraseCoordinator.swift; sourceTree = ""; }; - EC711B5B24A63B36008F830C /* SecretsSetupRecoveryPassphraseInputMode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsSetupRecoveryPassphraseInputMode.swift; sourceTree = ""; }; - EC711B5E24A63B36008F830C /* SecretsRecoveryWithPassphraseCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsRecoveryWithPassphraseCoordinator.swift; sourceTree = ""; }; - EC711B5F24A63B36008F830C /* SecretsRecoveryWithPassphraseCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsRecoveryWithPassphraseCoordinatorType.swift; sourceTree = ""; }; - EC711B6024A63B36008F830C /* SecretsRecoveryWithPassphraseViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsRecoveryWithPassphraseViewModelType.swift; sourceTree = ""; }; - EC711B6124A63B36008F830C /* SecretsRecoveryWithPassphraseViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsRecoveryWithPassphraseViewAction.swift; sourceTree = ""; }; - EC711B6224A63B36008F830C /* SecretsRecoveryWithPassphraseViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsRecoveryWithPassphraseViewModel.swift; sourceTree = ""; }; - EC711B6324A63B36008F830C /* SecretsRecoveryWithPassphraseViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsRecoveryWithPassphraseViewController.swift; sourceTree = ""; }; - EC711B6424A63B36008F830C /* SecretsRecoveryWithPassphraseViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsRecoveryWithPassphraseViewState.swift; sourceTree = ""; }; - EC711B6524A63B36008F830C /* SecretsRecoveryWithPassphraseViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = SecretsRecoveryWithPassphraseViewController.storyboard; sourceTree = ""; }; - EC711B6624A63B36008F830C /* SecretsRecoveryGoal.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsRecoveryGoal.swift; sourceTree = ""; }; - EC711B6724A63B36008F830C /* SecretsRecoveryMode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsRecoveryMode.swift; sourceTree = ""; }; - EC711B6924A63B36008F830C /* SecretsRecoveryWithKeyViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = SecretsRecoveryWithKeyViewController.storyboard; sourceTree = ""; }; - EC711B6A24A63B36008F830C /* SecretsRecoveryWithKeyCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsRecoveryWithKeyCoordinator.swift; sourceTree = ""; }; - EC711B6B24A63B36008F830C /* SecretsRecoveryWithKeyCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsRecoveryWithKeyCoordinatorType.swift; sourceTree = ""; }; - EC711B6C24A63B36008F830C /* SecretsRecoveryWithKeyViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsRecoveryWithKeyViewModel.swift; sourceTree = ""; }; - EC711B6D24A63B36008F830C /* SecretsRecoveryWithKeyViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsRecoveryWithKeyViewController.swift; sourceTree = ""; }; - EC711B6E24A63B36008F830C /* SecretsRecoveryWithKeyViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsRecoveryWithKeyViewAction.swift; sourceTree = ""; }; - EC711B6F24A63B36008F830C /* SecretsRecoveryWithKeyViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsRecoveryWithKeyViewModelType.swift; sourceTree = ""; }; - EC711B7024A63B36008F830C /* SecretsRecoveryWithKeyViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsRecoveryWithKeyViewState.swift; sourceTree = ""; }; - EC711B7124A63B36008F830C /* SecretsRecoveryCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsRecoveryCoordinatorType.swift; sourceTree = ""; }; - EC711B7224A63B36008F830C /* SecretsRecoveryCoordinatorBridgePresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsRecoveryCoordinatorBridgePresenter.swift; sourceTree = ""; }; - EC711B7324A63B36008F830C /* SecretsRecoveryCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretsRecoveryCoordinator.swift; sourceTree = ""; }; - EC711B9C24A63B58008F830C /* SecureBackupSetupCoordinatorBridgePresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureBackupSetupCoordinatorBridgePresenter.swift; sourceTree = ""; }; - EC711B9E24A63B58008F830C /* SecureBackupSetupIntroCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SecureBackupSetupIntroCell.xib; sourceTree = ""; }; - EC711B9F24A63B58008F830C /* SecureBackupSetupIntroViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureBackupSetupIntroViewController.swift; sourceTree = ""; }; - EC711BA024A63B58008F830C /* SecureBackupSetupIntroCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureBackupSetupIntroCell.swift; sourceTree = ""; }; - EC711BA124A63B58008F830C /* SecureBackupSetupIntroViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = SecureBackupSetupIntroViewController.storyboard; sourceTree = ""; }; - EC711BA224A63B58008F830C /* SecureBackupSetupCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureBackupSetupCoordinator.swift; sourceTree = ""; }; - EC711BA324A63B58008F830C /* SecureBackupSetupCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureBackupSetupCoordinatorType.swift; sourceTree = ""; }; - EC711BA524A63B58008F830C /* SecureBackupBannerCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureBackupBannerCell.swift; sourceTree = ""; }; - EC711BA624A63B58008F830C /* SecureBackupBannerPreferences.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecureBackupBannerPreferences.swift; sourceTree = ""; }; - EC711BA824A63B58008F830C /* SecureBackupBannerCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SecureBackupBannerCell.xib; sourceTree = ""; }; - EC711BB524A63C11008F830C /* AuthenticatedSessionViewControllerFactory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthenticatedSessionViewControllerFactory.swift; sourceTree = ""; }; - EC85D6AD2477DC89002C44C9 /* RoundedButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoundedButton.swift; sourceTree = ""; }; - EC85D70C2477DCD7002C44C9 /* KeyVerificationScanConfirmationViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationScanConfirmationViewState.swift; sourceTree = ""; }; - EC85D70D2477DCD7002C44C9 /* KeyVerificationScanConfirmationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationScanConfirmationViewController.swift; sourceTree = ""; }; - EC85D70E2477DCD7002C44C9 /* KeyVerificationScanConfirmationViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationScanConfirmationViewAction.swift; sourceTree = ""; }; - EC85D70F2477DCD7002C44C9 /* KeyVerificationScanConfirmationViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationScanConfirmationViewModel.swift; sourceTree = ""; }; - EC85D7102477DCD7002C44C9 /* KeyVerificationScanConfirmationViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationScanConfirmationViewModelType.swift; sourceTree = ""; }; - EC85D7112477DCD7002C44C9 /* KeyVerificationScanConfirmationViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = KeyVerificationScanConfirmationViewController.storyboard; sourceTree = ""; }; - EC85D7122477DCD7002C44C9 /* KeyVerificationScanConfirmationCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationScanConfirmationCoordinator.swift; sourceTree = ""; }; - EC85D7132477DCD7002C44C9 /* KeyVerificationScanConfirmationCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationScanConfirmationCoordinatorType.swift; sourceTree = ""; }; - EC85D71D2477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationManuallyVerifyViewAction.swift; sourceTree = ""; }; - EC85D71E2477DCF2002C44C9 /* KeyVerificationManuallyVerifyCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationManuallyVerifyCoordinator.swift; sourceTree = ""; }; - EC85D71F2477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationManuallyVerifyViewController.swift; sourceTree = ""; }; - EC85D7202477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = KeyVerificationManuallyVerifyViewController.storyboard; sourceTree = ""; }; - EC85D7212477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationManuallyVerifyViewModelType.swift; sourceTree = ""; }; - EC85D7222477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationManuallyVerifyViewModel.swift; sourceTree = ""; }; - EC85D7232477DCF2002C44C9 /* KeyVerificationManuallyVerifyCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationManuallyVerifyCoordinatorType.swift; sourceTree = ""; }; - EC85D7242477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyVerificationManuallyVerifyViewState.swift; sourceTree = ""; }; - EC85D72E2477DD33002C44C9 /* JitsiWidgetData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JitsiWidgetData.h; sourceTree = ""; }; - EC85D72F2477DD33002C44C9 /* JitsiWidgetData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JitsiWidgetData.m; sourceTree = ""; }; - EC85D7352477DD97002C44C9 /* LocalContactsSectionHeaderContainerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LocalContactsSectionHeaderContainerView.m; sourceTree = ""; }; - EC85D7362477DD97002C44C9 /* LocalContactsSectionHeaderContainerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocalContactsSectionHeaderContainerView.h; sourceTree = ""; }; - EC85D7382477DDB8002C44C9 /* DirectorySectionHeaderContainerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DirectorySectionHeaderContainerView.h; sourceTree = ""; }; - EC85D7392477DDB8002C44C9 /* DirectorySectionHeaderContainerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DirectorySectionHeaderContainerView.m; sourceTree = ""; }; - EC85D73C2477DDD0002C44C9 /* PushNotificationService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PushNotificationService.h; sourceTree = ""; }; - EC85D73D2477DDD0002C44C9 /* PushNotificationService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PushNotificationService.m; sourceTree = ""; }; - EC85D7432477E5F7002C44C9 /* RiotNSE.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = RiotNSE.appex; sourceTree = BUILT_PRODUCTS_DIR; }; - EC85D7452477E5F7002C44C9 /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = ""; }; - EC85D7472477E5F7002C44C9 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - EC85D74E2477E614002C44C9 /* RiotNSE.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = RiotNSE.entitlements; sourceTree = ""; }; - EC85D750247C0E8F002C44C9 /* UNUserNotificationCenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UNUserNotificationCenter.swift; sourceTree = ""; }; - EC85D753247C0F5B002C44C9 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; - EC9A3EC424E1616900A8CFAE /* PushNotificationStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PushNotificationStore.swift; sourceTree = ""; }; - ECAE7AE424EC0E01002FA813 /* TableViewSections.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TableViewSections.swift; sourceTree = ""; }; - ECAE7AE624EC15F7002FA813 /* Section.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Section.swift; sourceTree = ""; }; - ECAE7AE824EC1888002FA813 /* Row.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Row.swift; sourceTree = ""; }; - ECAE7AED24EFDD1F002FA813 /* MXSessionState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MXSessionState.swift; sourceTree = ""; }; - ECB1012C2477CFDB00CF8C11 /* UITableView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UITableView.swift; sourceTree = ""; }; - ECB1012D2477CFDB00CF8C11 /* UILabel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UILabel.swift; sourceTree = ""; }; - ECB1012E2477CFDB00CF8C11 /* UIDevice.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIDevice.swift; sourceTree = ""; }; - ECB1012F2477CFDB00CF8C11 /* UITableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UITableViewCell.swift; sourceTree = ""; }; - ECB101342477D00700CF8C11 /* UniversalLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UniversalLink.h; sourceTree = ""; }; - ECB101352477D00700CF8C11 /* UniversalLink.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UniversalLink.m; sourceTree = ""; }; - ECB5D98E255420F8000AD89C /* Keychain.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Keychain.swift; sourceTree = ""; }; - ECDC15F124AF41D2003437CF /* FormattedBodyParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormattedBodyParser.swift; sourceTree = ""; }; - ECE36F7E258B578300122124 /* Memory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Memory.swift; sourceTree = ""; }; - ECF57A3825090C23004BBF9D /* CreateRoomCoordinatorBridgePresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CreateRoomCoordinatorBridgePresenter.swift; sourceTree = ""; }; - ECF57A3925090C23004BBF9D /* CreateRoomCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CreateRoomCoordinatorType.swift; sourceTree = ""; }; - ECF57A3A25090C23004BBF9D /* CreateRoomCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CreateRoomCoordinator.swift; sourceTree = ""; }; - ECF57A3C25090C23004BBF9D /* EnterNewRoomDetailsViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = EnterNewRoomDetailsViewController.storyboard; sourceTree = ""; }; - ECF57A3D25090C23004BBF9D /* EnterNewRoomDetailsCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnterNewRoomDetailsCoordinatorType.swift; sourceTree = ""; }; - ECF57A3E25090C23004BBF9D /* EnterNewRoomDetailsViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnterNewRoomDetailsViewState.swift; sourceTree = ""; }; - ECF57A3F25090C23004BBF9D /* EnterNewRoomDetailsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnterNewRoomDetailsViewController.swift; sourceTree = ""; }; - ECF57A4025090C23004BBF9D /* EnterNewRoomDetailsViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnterNewRoomDetailsViewModel.swift; sourceTree = ""; }; - ECF57A4125090C23004BBF9D /* EnterNewRoomDetailsViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnterNewRoomDetailsViewAction.swift; sourceTree = ""; }; - ECF57A4225090C23004BBF9D /* EnterNewRoomDetailsCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnterNewRoomDetailsCoordinator.swift; sourceTree = ""; }; - ECF57A4325090C23004BBF9D /* EnterNewRoomDetailsViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnterNewRoomDetailsViewModelType.swift; sourceTree = ""; }; - ECF57A4F250913E4004BBF9D /* MXKTableViewCellWithLabelAndSwitch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MXKTableViewCellWithLabelAndSwitch.swift; sourceTree = ""; }; - ECF57A5425091B4D004BBF9D /* RoomCreationParameters.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomCreationParameters.swift; sourceTree = ""; }; - ECF57A5625091ECC004BBF9D /* MXKTableViewCellWithTextView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MXKTableViewCellWithTextView.swift; sourceTree = ""; }; - ECF57A58250925AC004BBF9D /* TextFieldTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextFieldTableViewCell.swift; sourceTree = ""; }; - ECF57A59250925AC004BBF9D /* TextFieldTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TextFieldTableViewCell.xib; sourceTree = ""; }; - ECF57A5D2509265A004BBF9D /* InsettedTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InsettedTextField.swift; sourceTree = ""; }; - ECF57A6025093B04004BBF9D /* SectionHeaderView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SectionHeaderView.m; sourceTree = ""; }; - ECF57A6125093B04004BBF9D /* SectionHeaderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SectionHeaderView.h; sourceTree = ""; }; - ECF57A84250A64F0004BBF9D /* PlaceholderedTextView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaceholderedTextView.swift; sourceTree = ""; }; - ECF57A86250A6872004BBF9D /* TextViewTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextViewTableViewCell.swift; sourceTree = ""; }; - ECF57A88250A687B004BBF9D /* TextViewTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TextViewTableViewCell.xib; sourceTree = ""; }; - ECFBD5B5250A7AAE00DD5F5A /* RoomsDirectoryCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomsDirectoryCoordinator.swift; sourceTree = ""; }; - ECFBD5B7250A7AAF00DD5F5A /* ShowDirectoryViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = ShowDirectoryViewController.storyboard; sourceTree = ""; }; - ECFBD5BA250A7AAF00DD5F5A /* DirectoryRoomTableViewCellVM.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DirectoryRoomTableViewCellVM.swift; sourceTree = ""; }; - ECFBD5BB250A7AAF00DD5F5A /* DirectoryRoomTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DirectoryRoomTableViewCell.swift; sourceTree = ""; }; - ECFBD5BC250A7AAF00DD5F5A /* DirectoryRoomTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DirectoryRoomTableViewCell.xib; sourceTree = ""; }; - ECFBD5BE250A7AAF00DD5F5A /* DirectoryNetworkTableHeaderFooterView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DirectoryNetworkTableHeaderFooterView.xib; sourceTree = ""; }; - ECFBD5BF250A7AAF00DD5F5A /* DirectoryNetworkTableHeaderFooterView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DirectoryNetworkTableHeaderFooterView.swift; sourceTree = ""; }; - ECFBD5C0250A7AAF00DD5F5A /* ShowDirectoryViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ShowDirectoryViewModel.swift; sourceTree = ""; }; - ECFBD5C1250A7AAF00DD5F5A /* ShowDirectoryViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ShowDirectoryViewController.swift; sourceTree = ""; }; - ECFBD5C2250A7AAF00DD5F5A /* ShowDirectoryViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ShowDirectoryViewState.swift; sourceTree = ""; }; - ECFBD5C3250A7AAF00DD5F5A /* ShowDirectoryCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ShowDirectoryCoordinator.swift; sourceTree = ""; }; - ECFBD5C4250A7AAF00DD5F5A /* ShowDirectoryCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ShowDirectoryCoordinatorType.swift; sourceTree = ""; }; - ECFBD5C5250A7AAF00DD5F5A /* ShowDirectoryViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ShowDirectoryViewModelType.swift; sourceTree = ""; }; - ECFBD5C6250A7AAF00DD5F5A /* ShowDirectoryViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ShowDirectoryViewAction.swift; sourceTree = ""; }; - ECFBD5C7250A7AAF00DD5F5A /* RoomsDirectoryCoordinatorBridgePresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomsDirectoryCoordinatorBridgePresenter.swift; sourceTree = ""; }; - ECFBD5C8250A7AAF00DD5F5A /* RoomsDirectoryCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomsDirectoryCoordinatorType.swift; sourceTree = ""; }; - ECFBD5D9250A7ABD00DD5F5A /* MXThirdPartyProtocolInstance.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MXThirdPartyProtocolInstance.swift; sourceTree = ""; }; - ECFBD5DB250A82B200DD5F5A /* TextViewTableViewHeaderFooterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextViewTableViewHeaderFooterView.swift; sourceTree = ""; }; - ECFBD5DE250B684E00DD5F5A /* ChooseAvatarTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChooseAvatarTableViewCell.swift; sourceTree = ""; }; - ECFBD5DF250B684E00DD5F5A /* ChooseAvatarTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ChooseAvatarTableViewCell.xib; sourceTree = ""; }; - ECFBD5E2250B6CAB00DD5F5A /* ChooseAvatarTableViewCellVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChooseAvatarTableViewCellVM.swift; sourceTree = ""; }; - ECFBD5E4250F97FC00DD5F5A /* RoomCreationCollapsedBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomCreationCollapsedBubbleCell.xib; sourceTree = ""; }; - ECFBD5E5250F97FC00DD5F5A /* RoomCreationWithPaginationCollapsedBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomCreationWithPaginationCollapsedBubbleCell.m; sourceTree = ""; }; - ECFBD5E6250F97FC00DD5F5A /* RoomCreationCollapsedBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomCreationCollapsedBubbleCell.h; sourceTree = ""; }; - ECFBD5E7250F97FC00DD5F5A /* RoomCreationWithPaginationCollapsedBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomCreationWithPaginationCollapsedBubbleCell.h; sourceTree = ""; }; - ECFBD5E8250F97FC00DD5F5A /* RoomCreationWithPaginationCollapsedBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomCreationWithPaginationCollapsedBubbleCell.xib; sourceTree = ""; }; - ECFBD5E9250F97FC00DD5F5A /* RoomCreationCollapsedBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomCreationCollapsedBubbleCell.m; sourceTree = ""; }; - ECFBD5EF250FA59B00DD5F5A /* RoomCreationEventsModalViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = RoomCreationEventsModalViewController.storyboard; sourceTree = ""; }; - ECFBD5F0250FA59B00DD5F5A /* RoomCreationEventsModalCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomCreationEventsModalCoordinator.swift; sourceTree = ""; }; - ECFBD5F1250FA59B00DD5F5A /* RoomCreationEventsModalViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomCreationEventsModalViewModelType.swift; sourceTree = ""; }; - ECFBD5F2250FA59B00DD5F5A /* RoomCreationEventsModalCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomCreationEventsModalCoordinatorType.swift; sourceTree = ""; }; - ECFBD5F3250FA59B00DD5F5A /* RoomCreationEventsModalViewAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomCreationEventsModalViewAction.swift; sourceTree = ""; }; - ECFBD5F4250FA59B00DD5F5A /* RoomCreationEventsModalViewState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomCreationEventsModalViewState.swift; sourceTree = ""; }; - ECFBD5F5250FA59B00DD5F5A /* RoomCreationEventsModalViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomCreationEventsModalViewController.swift; sourceTree = ""; }; - ECFBD5F6250FA59B00DD5F5A /* RoomCreationEventsModalViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomCreationEventsModalViewModel.swift; sourceTree = ""; }; - ECFBD5FF250FA98100DD5F5A /* RoomCreationModalCoordinatorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomCreationModalCoordinatorType.swift; sourceTree = ""; }; - ECFBD600250FA98100DD5F5A /* RoomCreationModalCoordinatorBridgePresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomCreationModalCoordinatorBridgePresenter.swift; sourceTree = ""; }; - F05927C71FDED835009F2A68 /* MXGroup+Riot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MXGroup+Riot.m"; sourceTree = ""; }; - F05927C81FDED835009F2A68 /* MXGroup+Riot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MXGroup+Riot.h"; sourceTree = ""; }; - F083BB031E7005FD00A9B29C /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - F083BB041E7005FD00A9B29C /* RiotTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RiotTests.m; sourceTree = ""; }; - F083BB0C1E7009EC00A9B29C /* LegacyAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LegacyAppDelegate.h; sourceTree = ""; }; - F083BB0D1E7009EC00A9B29C /* LegacyAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LegacyAppDelegate.m; sourceTree = ""; }; - F083BBDB1E7009EC00A9B29C /* busy.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = busy.mp3; sourceTree = ""; }; - F083BBDC1E7009EC00A9B29C /* callend.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = callend.mp3; sourceTree = ""; }; - F083BBDD1E7009EC00A9B29C /* message.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = message.caf; sourceTree = ""; }; - F083BBDE1E7009EC00A9B29C /* ring.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = ring.mp3; sourceTree = ""; }; - F083BBDF1E7009EC00A9B29C /* ringback.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = ringback.mp3; sourceTree = ""; }; - F083BBE51E7009EC00A9B29C /* MXKRoomBubbleTableViewCell+Riot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MXKRoomBubbleTableViewCell+Riot.h"; sourceTree = ""; }; - F083BBE61E7009EC00A9B29C /* MXKRoomBubbleTableViewCell+Riot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MXKRoomBubbleTableViewCell+Riot.m"; sourceTree = ""; }; - F083BBE71E7009EC00A9B29C /* MXRoom+Riot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MXRoom+Riot.h"; sourceTree = ""; }; - F083BBE81E7009EC00A9B29C /* MXRoom+Riot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MXRoom+Riot.m"; sourceTree = ""; }; - F083BBE91E7009EC00A9B29C /* UINavigationController+Riot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UINavigationController+Riot.h"; sourceTree = ""; }; - F083BBEA1E7009EC00A9B29C /* UINavigationController+Riot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UINavigationController+Riot.m"; sourceTree = ""; }; - F083BBEB1E7009EC00A9B29C /* UIViewController+RiotSearch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIViewController+RiotSearch.h"; sourceTree = ""; }; - F083BBEC1E7009EC00A9B29C /* UIViewController+RiotSearch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIViewController+RiotSearch.m"; sourceTree = ""; }; - F083BBEF1E7009EC00A9B29C /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; - F083BBFB1E7009EC00A9B29C /* RoomEmailInvitation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomEmailInvitation.h; sourceTree = ""; }; - F083BBFC1E7009EC00A9B29C /* RoomEmailInvitation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomEmailInvitation.m; sourceTree = ""; }; - F083BBFD1E7009EC00A9B29C /* RoomPreviewData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomPreviewData.h; sourceTree = ""; }; - F083BBFE1E7009EC00A9B29C /* RoomPreviewData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomPreviewData.m; sourceTree = ""; }; - F083BC0E1E7009EC00A9B29C /* third_party_licenses.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = third_party_licenses.html; sourceTree = ""; }; - F083BC101E7009EC00A9B29C /* AvatarGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AvatarGenerator.h; sourceTree = ""; }; - F083BC111E7009EC00A9B29C /* AvatarGenerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AvatarGenerator.m; sourceTree = ""; }; - F083BC121E7009EC00A9B29C /* EventFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventFormatter.h; sourceTree = ""; }; - F083BC131E7009EC00A9B29C /* EventFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EventFormatter.m; sourceTree = ""; }; - F083BC141E7009EC00A9B29C /* Tools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Tools.h; sourceTree = ""; }; - F083BC151E7009EC00A9B29C /* Tools.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Tools.m; sourceTree = ""; }; - F083BC181E7009EC00A9B29C /* Riot-Defaults.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Riot-Defaults.plist"; sourceTree = ""; }; - F094A9A21B78D8F000B1FBBF /* Riot.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Riot.app; sourceTree = BUILT_PRODUCTS_DIR; }; - F094A9BE1B78D8F000B1FBBF /* RiotTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RiotTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - F0D2AD9F1F6AA5FD00A7097D /* MXRoomSummary+Riot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MXRoomSummary+Riot.h"; sourceTree = ""; }; - F0D2ADA01F6AA5FD00A7097D /* MXRoomSummary+Riot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MXRoomSummary+Riot.m"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 24CBEC4B1F0EAD310093EABB /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 933A7148CE5984940344006C /* Pods_RiotPods_RiotShareExtension.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 92726A401F58737A004AD26F /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 92726A511F587410004AD26F /* Intents.framework in Frameworks */, - 670966FEFE120D865FD8A5B6 /* Pods_RiotPods_SiriIntents.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EC85D7402477E5F7002C44C9 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - DB1392A2332C3CAF6C9962EF /* Pods_RiotPods_RiotNSE.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F094A99F1B78D8F000B1FBBF /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 405FD41D306133A48D9B5AA1 /* Pods_RiotPods_Riot.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F094A9BB1B78D8F000B1FBBF /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 3AF393339D2D566CE14AC200 /* Pods_RiotTests.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 24CBEC4F1F0EAD310093EABB /* RiotShareExtension */ = { - isa = PBXGroup; - children = ( - B1664BC220F4E67600808783 /* Managers */, - B1664BAB20F4E67500808783 /* Modules */, - B1664BD020F4E80000808783 /* SupportingFiles */, - ); - path = RiotShareExtension; - sourceTree = ""; - }; - 32242F0B21E8FBA900725742 /* Theme */ = { - isa = PBXGroup; - children = ( - 32242F1121E8FBA900725742 /* ThemeService.h */, - 32242F0C21E8FBA900725742 /* ThemeService.m */, - B16DC23B258A7D13004DAB1A /* ThemeService.swift */, - B16DC23D258A8025004DAB1A /* ThemeIdentifier.swift */, - 32242F0D21E8FBA900725742 /* Theme.swift */, - 32242F0E21E8FBA900725742 /* Themes */, - 3232ABC1225B996100AD6A5C /* Themable.swift */, - ); - path = Theme; - sourceTree = ""; - }; - 32242F0E21E8FBA900725742 /* Themes */ = { - isa = PBXGroup; - children = ( - 32242F0F21E8FBA900725742 /* DefaultTheme.swift */, - 32242F1021E8FBA900725742 /* DarkTheme.swift */, - 3209451121F1C1430088CAA2 /* BlackTheme.swift */, - ); - path = Themes; - sourceTree = ""; - }; - 3232AAFE22564D9100AD6A5C /* Tools */ = { - isa = PBXGroup; - children = ( - 3232AAFF22564D9100AD6A5C /* SwiftGen */, - 3232AB0422564D9100AD6A5C /* Templates */, - ); - path = Tools; - sourceTree = ""; - }; - 3232AAFF22564D9100AD6A5C /* SwiftGen */ = { - isa = PBXGroup; - children = ( - 3232AB0022564D9100AD6A5C /* swiftgen-config.yml */, - 3232AB0122564D9100AD6A5C /* Templates */, - ); - path = SwiftGen; - sourceTree = ""; - }; - 3232AB0122564D9100AD6A5C /* Templates */ = { - isa = PBXGroup; - children = ( - 3232AB0222564D9100AD6A5C /* Strings */, - ); - path = Templates; - sourceTree = ""; - }; - 3232AB0222564D9100AD6A5C /* Strings */ = { - isa = PBXGroup; - children = ( - 3232AB0322564D9100AD6A5C /* flat-swift4-vector.stencil */, - ); - path = Strings; - sourceTree = ""; - }; - 3232AB0422564D9100AD6A5C /* Templates */ = { - isa = PBXGroup; - children = ( - 3232AB1322564D9100AD6A5C /* README.md */, - 3232AB0522564D9100AD6A5C /* buildable */, - ); - path = Templates; - sourceTree = ""; - }; - 3232AB0522564D9100AD6A5C /* buildable */ = { - isa = PBXGroup; - children = ( - 3232AB3B2256558300AD6A5C /* FlowCoordinatorTemplate */, - 3232AB3F2256558300AD6A5C /* ScreenTemplate */, - 32891D682264C6A000C82226 /* SimpleScreenTemplate */, - ); - path = buildable; - sourceTree = ""; - }; - 3232AB3B2256558300AD6A5C /* FlowCoordinatorTemplate */ = { - isa = PBXGroup; - children = ( - 3232AB3C2256558300AD6A5C /* FlowTemplateCoordinatorType.swift */, - 3232AB3D2256558300AD6A5C /* FlowTemplateCoordinatorBridgePresenter.swift */, - 3232AB3E2256558300AD6A5C /* FlowTemplateCoordinator.swift */, - ); - path = FlowCoordinatorTemplate; - sourceTree = ""; - }; - 3232AB3F2256558300AD6A5C /* ScreenTemplate */ = { - isa = PBXGroup; - children = ( - 3232AB402256558300AD6A5C /* TemplateScreenViewController.storyboard */, - 3232AB412256558300AD6A5C /* TemplateScreenCoordinator.swift */, - 3232AB422256558300AD6A5C /* TemplateScreenCoordinatorType.swift */, - 3232AB432256558300AD6A5C /* TemplateScreenViewModelType.swift */, - 3232AB442256558300AD6A5C /* TemplateScreenViewController.swift */, - 3232AB452256558300AD6A5C /* TemplateScreenViewState.swift */, - 3232AB462256558300AD6A5C /* TemplateScreenViewAction.swift */, - 3232AB472256558300AD6A5C /* TemplateScreenViewModel.swift */, - ); - path = ScreenTemplate; - sourceTree = ""; - }; - 3232AB96225730E100AD6A5C /* Start */ = { - isa = PBXGroup; - children = ( - 3232AB97225730E100AD6A5C /* DeviceVerificationStartViewController.storyboard */, - 3232AB98225730E100AD6A5C /* DeviceVerificationStartCoordinatorType.swift */, - 3232AB99225730E100AD6A5C /* DeviceVerificationStartViewAction.swift */, - 3232AB9A225730E100AD6A5C /* DeviceVerificationStartViewModelType.swift */, - 3232AB9B225730E100AD6A5C /* DeviceVerificationStartViewController.swift */, - 3232AB9C225730E100AD6A5C /* DeviceVerificationStartCoordinator.swift */, - 3232AB9D225730E100AD6A5C /* DeviceVerificationStartViewState.swift */, - 3232AB9E225730E100AD6A5C /* DeviceVerificationStartViewModel.swift */, - ); - path = Start; - sourceTree = ""; - }; - 323AB944232BD71900C1451F /* Fallback */ = { - isa = PBXGroup; - children = ( - 323AB945232BD74600C1451F /* AuthFallBackViewController.h */, - 323AB946232BD74600C1451F /* AuthFallBackViewController.m */, - ); - path = Fallback; - sourceTree = ""; - }; - 324A2046225FC571004FE8B0 /* Incoming */ = { - isa = PBXGroup; - children = ( - 324A2047225FC571004FE8B0 /* DeviceVerificationIncomingViewController.storyboard */, - 324A2048225FC571004FE8B0 /* DeviceVerificationIncomingViewController.swift */, - 324A2049225FC571004FE8B0 /* DeviceVerificationIncomingViewState.swift */, - 324A204A225FC571004FE8B0 /* DeviceVerificationIncomingViewAction.swift */, - 324A204B225FC571004FE8B0 /* DeviceVerificationIncomingViewModel.swift */, - 324A204C225FC571004FE8B0 /* DeviceVerificationIncomingCoordinatorType.swift */, - 324A204D225FC571004FE8B0 /* DeviceVerificationIncomingViewModelType.swift */, - 324A204E225FC571004FE8B0 /* DeviceVerificationIncomingCoordinator.swift */, - ); - path = Incoming; - sourceTree = ""; - }; - 32607D63243E0A55006674CC /* PrivateKey */ = { - isa = PBXGroup; - children = ( - 32607D64243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewController.swift */, - 32607D65243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyCoordinatorType.swift */, - 32607D66243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewModelType.swift */, - 32607D67243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewController.storyboard */, - 32607D68243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewModel.swift */, - 32607D69243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewState.swift */, - 32607D6A243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewAction.swift */, - 32607D6B243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyCoordinator.swift */, - ); - path = PrivateKey; - sourceTree = ""; - }; - 32863A572384070300D07C4A /* Shared */ = { - isa = PBXGroup; - children = ( - 32863A582384070300D07C4A /* JSONModels */, - 32863A592384070300D07C4A /* RiotSharedSettings.swift */, - ); - path = Shared; - sourceTree = ""; - }; - 32863A582384070300D07C4A /* JSONModels */ = { - isa = PBXGroup; - children = ( - 32863A5B2384074C00D07C4A /* RiotSettingAllowedWidgets.swift */, - 32FDC1CC2386CD390084717A /* RiotSettingIntegrationProvisioning.swift */, - ); - path = JSONModels; - sourceTree = ""; - }; - 32891D682264C6A000C82226 /* SimpleScreenTemplate */ = { - isa = PBXGroup; - children = ( - 32891D6A2264CBA300C82226 /* SimpleScreenTemplateViewController.storyboard */, - 32891D692264CBA300C82226 /* SimpleScreenTemplateViewController.swift */, - ); - path = SimpleScreenTemplate; - sourceTree = ""; - }; - 32891D72226728EE00C82226 /* Loading */ = { - isa = PBXGroup; - children = ( - 32F6B9662270623100BBA352 /* KeyVerificationDataLoadingCoordinatorType.swift */, - 32F6B9632270623000BBA352 /* KeyVerificationDataLoadingCoordinator.swift */, - 32F6B9652270623100BBA352 /* KeyVerificationDataLoadingViewAction.swift */, - 32F6B9642270623100BBA352 /* KeyVerificationDataLoadingViewState.swift */, - 32F6B9682270623100BBA352 /* KeyVerificationDataLoadingViewModelType.swift */, - 32F6B9672270623100BBA352 /* KeyVerificationDataLoadingViewModel.swift */, - 32891D73226728EE00C82226 /* KeyVerificationDataLoadingViewController.swift */, - 32891D74226728EE00C82226 /* KeyVerificationDataLoadingViewController.storyboard */, - ); - path = Loading; - sourceTree = ""; - }; - 3291DC8823E0BE380009732F /* Security */ = { - isa = PBXGroup; - children = ( - 32D5D15C23E1EE2700E3E37C /* ManageSession */, - 3291DC8B23E0BFF10009732F /* SecurityViewController.h */, - 3291DC8C23E0BFF10009732F /* SecurityViewController.m */, - 3291DC8923E0BE820009732F /* Security.storyboard */, - ); - path = Security; - sourceTree = ""; - }; - 32935CB21F628B98006888C8 /* js */ = { - isa = PBXGroup; - children = ( - 3284A35020A07C210044F922 /* postMessageAPI.js */, - ); - path = js; - sourceTree = ""; - }; - 32A6000C22C661100042C1D9 /* EditHistory */ = { - isa = PBXGroup; - children = ( - 32A6000D22C661100042C1D9 /* EditHistoryViewState.swift */, - 32A6000E22C661100042C1D9 /* EditHistoryViewController.swift */, - 32A6001322C661100042C1D9 /* EditHistoryViewController.storyboard */, - B190F55822CE356800AEB493 /* EditHistoryHeaderView.swift */, - B190F55A22CE35FD00AEB493 /* EditHistoryHeaderView.xib */, - B142317822CCFA2000FFA96A /* EditHistoryCell.swift */, - B142317922CCFA2000FFA96A /* EditHistoryCell.xib */, - 32A6000F22C661100042C1D9 /* EditHistoryViewModel.swift */, - 32A6001022C661100042C1D9 /* EditHistoryViewModelType.swift */, - 32A6001122C661100042C1D9 /* EditHistoryCoordinator.swift */, - 32A6001222C661100042C1D9 /* EditHistoryViewAction.swift */, - 32A6001422C661100042C1D9 /* EditHistoryCoordinatorType.swift */, - 32A6001522C661100042C1D9 /* EditHistoryCoordinatorBridgePresenter.swift */, - B190F55C22CE5A9600AEB493 /* EditHistorySection.swift */, - 32A6001F22C66FCF0042C1D9 /* EditHistoryMessage.swift */, - ); - path = EditHistory; - sourceTree = ""; - }; - 32B94DF0228EC26400716A26 /* ReactionsMenu */ = { - isa = PBXGroup; - children = ( - B1D211E322C18E3800D939BD /* ReactionsMenuViewModelType.swift */, - B1D211E122BD193C00D939BD /* ReactionsMenuViewModel.swift */, - B1D211E722C195B400D939BD /* ReactionMenuItemViewData.swift */, - B1D1BDA522BBAFB500831367 /* ReactionsMenuView.swift */, - B1D1BDA722BBAFC900831367 /* ReactionsMenuView.xib */, - B1D211E522C194A200D939BD /* ReactionsMenuViewState.swift */, - 32B94DF2228EC26400716A26 /* ReactionsMenuViewAction.swift */, - 32B94DF3228EC26400716A26 /* ReactionsMenuButton.swift */, - ); - path = ReactionsMenu; - sourceTree = ""; - }; - 32BF994D21FA1C6300698084 /* KeyBackup */ = { - isa = PBXGroup; - children = ( - 32BF994E21FA29A400698084 /* SettingsKeyBackupViewModel.swift */, - 32BF995021FA29DC00698084 /* SettingsKeyBackupViewModelType.swift */, - 32BF995221FA2A1300698084 /* SettingsKeyBackupViewState.swift */, - 32BF995421FA2AB700698084 /* SettingsKeyBackupViewAction.swift */, - 32BF995621FB07A400698084 /* SettingsKeyBackupTableViewSection.swift */, - ); - path = KeyBackup; - sourceTree = ""; - }; - 32D5D15C23E1EE2700E3E37C /* ManageSession */ = { - isa = PBXGroup; - children = ( - 32D5D15D23E1EE2700E3E37C /* ManageSessionViewController.m */, - 32D5D15E23E1EE2700E3E37C /* ManageSession.storyboard */, - 32D5D15F23E1EE2700E3E37C /* ManageSessionViewController.h */, - ); - path = ManageSession; - sourceTree = ""; - }; - 32DB556722FDADE50016329E /* ServiceTerms */ = { - isa = PBXGroup; - children = ( - 32DB556822FDADE50016329E /* Modal */, - ); - path = ServiceTerms; - sourceTree = ""; - }; - 32DB556822FDADE50016329E /* Modal */ = { - isa = PBXGroup; - children = ( - 32DB556922FDADE50016329E /* ServiceTermsModalCoordinatorType.swift */, - 32DB556A22FDADE50016329E /* ServiceTermsModalCoordinatorBridgePresenter.swift */, - 32DB556B22FDADE50016329E /* ServiceTermsModalCoordinator.swift */, - 32DB556C22FDADE50016329E /* Modal */, - ); - path = Modal; - sourceTree = ""; - }; - 32DB556C22FDADE50016329E /* Modal */ = { - isa = PBXGroup; - children = ( - 32DB556D22FDADE50016329E /* ServiceTermsModalScreenViewState.swift */, - 32DB556E22FDADE50016329E /* ServiceTermsModalScreenViewModel.swift */, - 32DB556F22FDADE50016329E /* ServiceTermsModalScreenViewController.swift */, - 32DB557022FDADE50016329E /* ServiceTermsModalScreenViewController.storyboard */, - 32DB557122FDADE50016329E /* ServiceTermsModalScreenViewModelType.swift */, - 32DB557222FDADE50016329E /* ServiceTermsModalScreenCoordinatorType.swift */, - 32DB557322FDADE50016329E /* ServiceTermsModalScreenViewAction.swift */, - 32DB557422FDADE50016329E /* ServiceTermsModalScreenCoordinator.swift */, - ); - path = Modal; - sourceTree = ""; - }; - 32FD754E24D073E400BA7B37 /* Config */ = { - isa = PBXGroup; - children = ( - EC1CA8B324D1AA8000DE9EBF /* Common.xcconfig */, - 32FD754F24D074C700BA7B37 /* CommonConfiguration.swift */, - 328E410524CB168500DC4490 /* AppConfiguration.swift */, - 32FD755624D15C7A00BA7B37 /* Configurable.swift */, - 32FD756324D2AD5100BA7B37 /* BuildSettings.swift */, - ); - path = Config; - sourceTree = ""; - }; - 3AA7D00A2587FEE500420A72 /* EncryptionKeyManager */ = { - isa = PBXGroup; - children = ( - 3AA7D00B2587FF0000420A72 /* EncryptionKeyManager.swift */, - ); - path = EncryptionKeyManager; - sourceTree = ""; - }; - 4220F60B660591FD80AF3428 /* Pods */ = { - isa = PBXGroup; - children = ( - 43C2962BE367F59220F517FA /* Pods-RiotPods-Riot.debug.xcconfig */, - B43DC75D1590BB8A4243BD4D /* Pods-RiotPods-Riot.release.xcconfig */, - 9C3242E3FE95BCDA9562C75D /* Pods-RiotPods-RiotShareExtension.debug.xcconfig */, - 4FC6A5D63FAD1B27C2F57AFA /* Pods-RiotPods-RiotShareExtension.release.xcconfig */, - 3942DD65EBEB7AE647C6392A /* Pods-RiotPods-SiriIntents.debug.xcconfig */, - E2599D0ECB8DD206624E450B /* Pods-RiotPods-SiriIntents.release.xcconfig */, - BABB6681FBD79219B1213D6C /* Pods-RiotTests.debug.xcconfig */, - AC34BF67FD21A9D01C16AE5D /* Pods-RiotTests.release.xcconfig */, - 2B582BE9B2A98BCF5F740873 /* Pods-RiotPods-RiotNSE.debug.xcconfig */, - 8A61E94F88EA96AFE1CFD9D3 /* Pods-RiotPods-RiotNSE.release.xcconfig */, - ); - path = Pods; - sourceTree = ""; - }; - 5FC42FA41F5186AFFB6A2404 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 92726A501F587410004AD26F /* Intents.framework */, - 1ACF09217ADF1D7E7A35BC02 /* Pods_RiotPods_Riot.framework */, - 97151D7F0F892081250D50A3 /* Pods_RiotPods_RiotShareExtension.framework */, - 51187E952D5CECF6D6F5A28E /* Pods_RiotPods_SiriIntents.framework */, - 129EB7E27E7E4AC3F5F098F5 /* Pods_RiotTests.framework */, - E4D418D054E4032F2CFA8B51 /* Pods_RiotPods_RiotNSE.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 92726A441F58737A004AD26F /* SiriIntents */ = { - isa = PBXGroup; - children = ( - 92726A4F1F587393004AD26F /* SiriIntents.entitlements */, - 92726A451F58737A004AD26F /* IntentHandler.h */, - 92726A461F58737A004AD26F /* IntentHandler.m */, - 92726A481F58737A004AD26F /* Info.plist */, - EC1CA8D724D8118400DE9EBF /* SiriIntents-Common.xcconfig */, - EC1CA8BB24D1B4BF00DE9EBF /* SiriIntents-Debug.xcconfig */, - EC1CA8BA24D1B4BF00DE9EBF /* SiriIntents-Release.xcconfig */, - ); - path = SiriIntents; - sourceTree = ""; - }; - B1057787221304A200334B1E /* Success */ = { - isa = PBXGroup; - children = ( - B1057788221304EB00334B1E /* KeyBackupSetupSuccessFromPassphraseViewController.swift */, - B105778A221304FA00334B1E /* KeyBackupSetupSuccessFromPassphraseViewController.storyboard */, - B105778C2213051E00334B1E /* KeyBackupSetupSuccessFromRecoveryKeyViewController.swift */, - B105778E2213052A00334B1E /* KeyBackupSetupSuccessFromRecoveryKeyViewController.storyboard */, - ); - path = Success; - sourceTree = ""; - }; - B108932623ABE82C00802670 /* BaseBubbleCell */ = { - isa = PBXGroup; - children = ( - B1B4E9BE24D4703E004D5C33 /* BaseBubbleCell.swift */, - B14084C523BF76890010F692 /* BubbleCellContentView.swift */, - B14084C723BF76CB0010F692 /* BubbleCellContentView.xib */, - B108932723ABEE6700802670 /* BubbleCellReadReceiptsDisplayable.swift */, - B1B4E9BC24D4701F004D5C33 /* BubbleCellReactionsDisplayable.swift */, - ); - path = BaseBubbleCell; - sourceTree = ""; - }; - B1098BD921ECE09E000DDA48 /* Generated */ = { - isa = PBXGroup; - children = ( - 32FD756F24D2BEF700BA7B37 /* InfoPlist.swift */, - B1098BDA21ECE09E000DDA48 /* Strings.swift */, - B1098BDC21ECE09E000DDA48 /* Images.swift */, - B1098BDE21ECE09E000DDA48 /* RiotDefaults.swift */, - B1098BE421ECE1FC000DDA48 /* Storyboards.swift */, - ); - path = Generated; - sourceTree = ""; - }; - B1098BE621ECFE51000DDA48 /* Coordinators */ = { - isa = PBXGroup; - children = ( - B1098BE721ECFE51000DDA48 /* Coordinator.swift */, - ); - path = Coordinators; - sourceTree = ""; - }; - B1098BE921ECFE64000DDA48 /* KeyBackup */ = { - isa = PBXGroup; - children = ( - B1098C0221ECFEAF000DDA48 /* Setup */, - B1FDF56421F726AD00BA3834 /* Recover */, - B1CE9F042216FB09000FAE6A /* ManualExport */, - ); - path = KeyBackup; - sourceTree = ""; - }; - B1098C0221ECFEAF000DDA48 /* Setup */ = { - isa = PBXGroup; - children = ( - B1098BEF21ECFE64000DDA48 /* KeyBackupSetupCoordinatorType.swift */, - B1098BED21ECFE64000DDA48 /* KeyBackupSetupCoordinator.swift */, - B140B4A521F89E7600E3F5FE /* KeyBackupSetupCoordinatorBridgePresenter.swift */, - B1098C0521ECFF5B000DDA48 /* Intro */, - B1098C0321ECFECC000DDA48 /* Passphrase */, - B1057787221304A200334B1E /* Success */, - ); - path = Setup; - sourceTree = ""; - }; - B1098C0321ECFECC000DDA48 /* Passphrase */ = { - isa = PBXGroup; - children = ( - B1098BF521ECFE64000DDA48 /* KeyBackupSetupPassphraseCoordinatorType.swift */, - B1098BEA21ECFE64000DDA48 /* KeyBackupSetupPassphraseCoordinator.swift */, - B1098BF221ECFE64000DDA48 /* KeyBackupSetupPassphraseViewModelType.swift */, - B1098BEE21ECFE64000DDA48 /* KeyBackupSetupPassphraseViewModel.swift */, - B110871C21F087F4003554A5 /* KeyBackupSetupPassphraseViewState.swift */, - B1FDF55F21F5FE5500BA3834 /* KeyBackupSetupPassphraseViewAction.swift */, - B1098BF421ECFE64000DDA48 /* KeyBackupSetupPassphraseViewController.swift */, - B1098BEC21ECFE64000DDA48 /* KeyBackupSetupPassphraseViewController.storyboard */, - B1098BF321ECFE64000DDA48 /* PasswordStrengthView.swift */, - B1098BF021ECFE64000DDA48 /* PasswordStrengthView.xib */, - ); - path = Passphrase; - sourceTree = ""; - }; - B1098C0521ECFF5B000DDA48 /* Intro */ = { - isa = PBXGroup; - children = ( - B1D4752921EE52B10067973F /* KeyBackupSetupIntroViewController.swift */, - B1D4752B21EE52C30067973F /* KeyBackupSetupIntroViewController.storyboard */, - ); - path = Intro; - sourceTree = ""; - }; - B1098C0721ED07E4000DDA48 /* Routers */ = { - isa = PBXGroup; - children = ( - B1098C0B21ED07E4000DDA48 /* Presentable.swift */, - B1098C0C21ED07E4000DDA48 /* NavigationRouterType.swift */, - B1098C0821ED07E4000DDA48 /* NavigationRouter.swift */, - B10A3E9B24FE88CB007C380F /* RootRouterType.swift */, - B10A3E9A24FE88CA007C380F /* RootRouter.swift */, - ); - path = Routers; - sourceTree = ""; - }; - B10A3E8A24FE4367007C380F /* LoadingAnimation */ = { - isa = PBXGroup; - children = ( - B10A3E8B24FE4367007C380F /* ElementView.swift */, - B10A3E8C24FE4367007C380F /* Timeline_1.swift */, - B10A3E8D24FE4367007C380F /* ElementViewController.swift */, - ); - path = LoadingAnimation; - sourceTree = ""; - }; - B10A3E9524FE86AE007C380F /* SplitView */ = { - isa = PBXGroup; - children = ( - B10A3E9624FE86AE007C380F /* SplitViewCoordinatorType.swift */, - B10A3E9724FE86AF007C380F /* SplitViewCoordinator.swift */, - B1B556EC20EE6C4C00210D55 /* RiotSplitViewController.h */, - B1B556EB20EE6C4C00210D55 /* RiotSplitViewController.m */, - B10A3E9E24FFC3E5007C380F /* PlaceholderDetailViewController.swift */, - B1C782312500F96600337EB9 /* SplitViewPresentable.swift */, - ); - path = SplitView; - sourceTree = ""; - }; - B1107EC62200B0190038014B /* Success */ = { - isa = PBXGroup; - children = ( - B1107EC72200B0720038014B /* KeyBackupRecoverSuccessViewController.swift */, - B1107EC92200B09F0038014B /* KeyBackupRecoverSuccessViewController.storyboard */, - ); - path = Success; - sourceTree = ""; - }; - B110871E21F098EF003554A5 /* ActivityIndicator */ = { - isa = PBXGroup; - children = ( - B110871F21F098EF003554A5 /* ActivityIndicatorPresenterType.swift */, - B110872121F098EF003554A5 /* ActivityIndicatorPresenter.swift */, - B110872221F098F0003554A5 /* ActivityIndicatorView.swift */, - B110872021F098EF003554A5 /* ActivityIndicatorView.xib */, - ); - path = ActivityIndicator; - sourceTree = ""; - }; - B11291ED238DC8C80077B478 /* WidgetPermission */ = { - isa = PBXGroup; - children = ( - B1BD71C0238EA92000BA92E2 /* WidgetPermissionViewModel.swift */, - B1BD71BA238E8F9600BA92E2 /* WidgetPermissionViewController.swift */, - B1BD71BE238EA56700BA92E2 /* WidgetPermissionViewController.storyboard */, - ); - path = WidgetPermission; - sourceTree = ""; - }; - B125FE19231D5B5600B72806 /* Discovery */ = { - isa = PBXGroup; - children = ( - B125FE1A231D5BF200B72806 /* SettingsDiscoveryTableViewSection.swift */, - B125FE1E231D5DF700B72806 /* SettingsDiscoveryViewModelType.swift */, - B125FE1C231D5DE400B72806 /* SettingsDiscoveryViewModel.swift */, - B125FE20231D5E1D00B72806 /* SettingsDiscoveryViewAction.swift */, - B125FE22231D5E4300B72806 /* SettingsDiscoveryViewState.swift */, - B157FA9623264AE800EBFBD4 /* ThreePidDetails */, - ); - path = Discovery; - sourceTree = ""; - }; - B126767A2523E4D100BE6B98 /* Reset */ = { - isa = PBXGroup; - children = ( - B126767B2523E4D100BE6B98 /* SecretsResetCoordinator.swift */, - B126767C2523E4D100BE6B98 /* SecretsResetViewModelType.swift */, - B126767D2523E4D100BE6B98 /* SecretsResetViewController.swift */, - B126767E2523E4D100BE6B98 /* SecretsResetCoordinatorType.swift */, - B126767F2523E4D100BE6B98 /* SecretsResetViewController.storyboard */, - B12676802523E4D100BE6B98 /* SecretsResetViewState.swift */, - B12676812523E4D100BE6B98 /* SecretsResetViewAction.swift */, - B12676822523E4D100BE6B98 /* SecretsResetViewModel.swift */, - ); - path = Reset; - sourceTree = ""; - }; - B12C56ED2396CB0100FAC6DE /* RoomMessageLinkParser */ = { - isa = PBXGroup; - children = ( - B12C56EE2396CB5E00FAC6DE /* RoomMessageURLParser.swift */, - ); - path = RoomMessageLinkParser; - sourceTree = ""; - }; - B12D79F223E2426800FACEDC /* Start */ = { - isa = PBXGroup; - children = ( - B12D79F323E2462000FACEDC /* UserVerificationStartCoordinator.swift */, - B12D79F823E2462200FACEDC /* UserVerificationStartCoordinatorType.swift */, - B12D79FA23E2462200FACEDC /* UserVerificationStartViewAction.swift */, - B12D79F423E2462100FACEDC /* UserVerificationStartViewController.storyboard */, - B12D79F623E2462100FACEDC /* UserVerificationStartViewController.swift */, - B12D79F923E2462200FACEDC /* UserVerificationStartViewModel.swift */, - B12D79F523E2462100FACEDC /* UserVerificationStartViewModelType.swift */, - B12D79F723E2462100FACEDC /* UserVerificationStartViewState.swift */, - ); - path = Start; - sourceTree = ""; - }; - B14F142522144F6400FA0595 /* RecoveryKey */ = { - isa = PBXGroup; - children = ( - B14F142622144F6400FA0595 /* KeyBackupRecoverFromRecoveryKeyViewController.storyboard */, - B14F142722144F6400FA0595 /* KeyBackupRecoverFromRecoveryKeyViewModelType.swift */, - B14F142822144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyCoordinatorType.swift */, - B14F142922144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyViewState.swift */, - B14F142A22144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyCoordinator.swift */, - B14F142B22144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyViewModel.swift */, - B14F142C22144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyViewAction.swift */, - B14F142D22144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyViewController.swift */, - ); - path = RecoveryKey; - sourceTree = ""; - }; - B152C72922DCEA670041315A /* EmojiPicker */ = { - isa = PBXGroup; - children = ( - B1DCC61F22E5EDA400625807 /* EmojiPickerCoordinatorBridgePresenter.swift */, - B1DCC61322E5E16D00625807 /* EmojiPickerCoordinator.swift */, - B1DCC61122E5E16A00625807 /* EmojiPickerCoordinatorType.swift */, - B1DCC61422E5E16E00625807 /* EmojiPickerViewAction.swift */, - B1DCC61222E5E16C00625807 /* EmojiPickerViewController.swift */, - B1DCC60F22E5E16900625807 /* EmojiPickerViewController.storyboard */, - B1DCC61622E5E17000625807 /* EmojiPickerViewModel.swift */, - B1DCC61522E5E16F00625807 /* EmojiPickerViewModelType.swift */, - B1DCC61022E5E16900625807 /* EmojiPickerViewState.swift */, - B1DCC62322E60CA800625807 /* EmojiPickerCategoryViewData.swift */, - B1DCC62122E60BE000625807 /* EmojiPickerItemViewData.swift */, - B1DCC62F22E7026F00625807 /* EmojiPickerHeaderView.swift */, - B1DCC63022E7026F00625807 /* EmojiPickerHeaderView.xib */, - B1DCC62B22E61EAF00625807 /* EmojiPickerViewCell.swift */, - B1DCC62C22E61EAF00625807 /* EmojiPickerViewCell.xib */, - B152C72C22DF21880041315A /* Data */, - ); - path = EmojiPicker; - sourceTree = ""; - }; - B152C72C22DF21880041315A /* Data */ = { - isa = PBXGroup; - children = ( - B1B9DEDD22E9D9890065E677 /* EmojiServiceType.swift */, - B1DCC64022E9B37400625807 /* Store */, - B1B9DED722E9B56C0065E677 /* EmojiMart */, - ); - path = Data; - sourceTree = ""; - }; - B1550FC52420E8F400CE097B /* QRCode */ = { - isa = PBXGroup; - children = ( - B1550FC62420E8F400CE097B /* Reader */, - B1550FC92420E8F400CE097B /* QRCodeGenerator.swift */, - ); - path = QRCode; - sourceTree = ""; - }; - B1550FC62420E8F400CE097B /* Reader */ = { - isa = PBXGroup; - children = ( - B1550FC72420E8F400CE097B /* QRCodeReaderViewController.storyboard */, - B1550FC82420E8F400CE097B /* QRCodeReaderViewController.swift */, - ); - path = Reader; - sourceTree = ""; - }; - B1550FCF242148FA00CE097B /* KeyVerification */ = { - isa = PBXGroup; - children = ( - B1CE83B4242259ED00D07506 /* Common */, - B1B335122421497000B4A6B5 /* User */, - B1B335112421496800B4A6B5 /* Device */, - ); - path = KeyVerification; - sourceTree = ""; - }; - B1560DA024B65A9500490F50 /* LaunchLoading */ = { - isa = PBXGroup; - children = ( - B10A3E8A24FE4367007C380F /* LoadingAnimation */, - B1560DA124B65AFA00490F50 /* LaunchLoadingView.swift */, - B1560DA324B65B3700490F50 /* LaunchLoadingView.xib */, - ); - path = LaunchLoading; - sourceTree = ""; - }; - B157FA9623264AE800EBFBD4 /* ThreePidDetails */ = { - isa = PBXGroup; - children = ( - B157FAA723264BED00EBFBD4 /* SettingsDiscoveryThreePidDetailsCoordinatorBridgePresenter.swift */, - B157FA9923264AE800EBFBD4 /* SettingsDiscoveryThreePidDetailsCoordinatorType.swift */, - B157FA9723264AE800EBFBD4 /* SettingsDiscoveryThreePidDetailsCoordinator.swift */, - B157FA9823264AE800EBFBD4 /* SettingsDiscoveryThreePidDetailsViewModelType.swift */, - B157FA9D23264AE800EBFBD4 /* SettingsDiscoveryThreePidDetailsViewModel.swift */, - B157FA9A23264AE800EBFBD4 /* SettingsDiscoveryThreePidDetailsViewAction.swift */, - B157FA9B23264AE800EBFBD4 /* SettingsDiscoveryThreePidDetailsViewState.swift */, - B157FA9E23264AE800EBFBD4 /* SettingsDiscoveryThreePidDetailsViewController.swift */, - B157FA9C23264AE800EBFBD4 /* SettingsDiscoveryThreePidDetailsViewController.storyboard */, - ); - path = ThreePidDetails; - sourceTree = ""; - }; - B1664BAB20F4E67500808783 /* Modules */ = { - isa = PBXGroup; - children = ( - B1664BB020F4E67500808783 /* Main */, - B1664BAC20F4E67500808783 /* Fallback */, - B1664BB320F4E67500808783 /* Share */, - ); - path = Modules; - sourceTree = ""; - }; - B1664BAC20F4E67500808783 /* Fallback */ = { - isa = PBXGroup; - children = ( - B1664BAF20F4E67500808783 /* FallbackViewController.h */, - B1664BAE20F4E67500808783 /* FallbackViewController.m */, - B1664BAD20F4E67500808783 /* FallbackViewController.xib */, - ); - path = Fallback; - sourceTree = ""; - }; - B1664BB020F4E67500808783 /* Main */ = { - isa = PBXGroup; - children = ( - B1664BB120F4E67500808783 /* SharePresentingViewController.h */, - B1664BB220F4E67500808783 /* SharePresentingViewController.m */, - ); - path = Main; - sourceTree = ""; - }; - B1664BB320F4E67500808783 /* Share */ = { - isa = PBXGroup; - children = ( - B1664BC120F4E67500808783 /* ShareViewController.h */, - B1664BB820F4E67500808783 /* ShareViewController.m */, - B1664BB720F4E67500808783 /* ShareViewController.xib */, - B1664BB420F4E67500808783 /* DataSources */, - B1664BB920F4E67500808783 /* Listing */, - ); - path = Share; - sourceTree = ""; - }; - B1664BB420F4E67500808783 /* DataSources */ = { - isa = PBXGroup; - children = ( - B1664BB620F4E67500808783 /* ShareDataSource.h */, - B1664BB520F4E67500808783 /* ShareDataSource.m */, - ); - path = DataSources; - sourceTree = ""; - }; - B1664BB920F4E67500808783 /* Listing */ = { - isa = PBXGroup; - children = ( - B1664BBB20F4E67500808783 /* RoomsListViewController.h */, - B1664BBC20F4E67500808783 /* RoomsListViewController.m */, - B1664BBA20F4E67500808783 /* RoomsListViewController.xib */, - B1664BBD20F4E67500808783 /* Views */, - ); - path = Listing; - sourceTree = ""; - }; - B1664BBD20F4E67500808783 /* Views */ = { - isa = PBXGroup; - children = ( - B1664BC020F4E67500808783 /* RecentRoomTableViewCell.h */, - B1664BBE20F4E67500808783 /* RecentRoomTableViewCell.m */, - B1664BBF20F4E67500808783 /* RecentRoomTableViewCell.xib */, - ); - path = Views; - sourceTree = ""; - }; - B1664BC220F4E67600808783 /* Managers */ = { - isa = PBXGroup; - children = ( - B1664BC320F4E67600808783 /* ShareExtensionManager.h */, - B1664BC420F4E67600808783 /* ShareExtensionManager.m */, - ); - path = Managers; - sourceTree = ""; - }; - B1664BD020F4E80000808783 /* SupportingFiles */ = { - isa = PBXGroup; - children = ( - B1664BD120F4E82700808783 /* RiotShareExtension-Bridging-Header.h */, - B1664BD220F4E82800808783 /* RiotShareExtension.entitlements */, - B1664BD320F4E82800808783 /* Info.plist */, - EC1CA8D524D8108700DE9EBF /* ShareExtension-Common.xcconfig */, - EC1CA8B824D1AD1600DE9EBF /* ShareExtension-Debug.xcconfig */, - EC1CA8B924D1AD1600DE9EBF /* ShareExtension-Release.xcconfig */, - ); - path = SupportingFiles; - sourceTree = ""; - }; - B1664DA520F4FE1B00808783 /* Localizations */ = { - isa = PBXGroup; - children = ( - B1664D5720F4EBEC00808783 /* InfoPlist.strings */, - B1664D5920F4EBEC00808783 /* Localizable.strings */, - B1664D5520F4EBEC00808783 /* Vector.strings */, - ); - name = Localizations; - sourceTree = ""; - }; - B169329D20F3A21B00746532 /* SupportingFiles */ = { - isa = PBXGroup; - children = ( - B169329E20F3A21B00746532 /* Riot-Bridging-Header.h */, - B16932A020F3A21B00746532 /* Riot.entitlements */, - B16932A120F3A21B00746532 /* Info.plist */, - B16932A220F3A21B00746532 /* empty.mm */, - EC1CA8D324D8103400DE9EBF /* App-Common.xcconfig */, - EC1CA8B424D1AA8700DE9EBF /* App-Debug.xcconfig */, - EC1CA8B624D1AA8D00DE9EBF /* App-Release.xcconfig */, - ); - path = SupportingFiles; - sourceTree = ""; - }; - B16932AE20F3AC9200746532 /* DataSources */ = { - isa = PBXGroup; - children = ( - B16932B020F3AC9200746532 /* RoomSearchDataSource.h */, - B16932AF20F3AC9200746532 /* RoomSearchDataSource.m */, - ); - path = DataSources; - sourceTree = ""; - }; - B16932E320F3C12B00746532 /* DataSources */ = { - isa = PBXGroup; - children = ( - B16932E820F3C39000746532 /* UnifiedSearchRecentsDataSource.h */, - B16932E920F3C39000746532 /* UnifiedSearchRecentsDataSource.m */, - ); - path = DataSources; - sourceTree = ""; - }; - B16932E420F3C29100746532 /* DataSources */ = { - isa = PBXGroup; - children = ( - B16932E520F3C37100746532 /* HomeMessagesSearchDataSource.h */, - B16932E620F3C37100746532 /* HomeMessagesSearchDataSource.m */, - ); - path = DataSources; - sourceTree = ""; - }; - B16932EB20F3C39A00746532 /* CellData */ = { - isa = PBXGroup; - children = ( - B16932ED20F3C3C800746532 /* FilesSearchCellData.h */, - B16932EC20F3C3C800746532 /* FilesSearchCellData.m */, - ); - path = CellData; - sourceTree = ""; - }; - B16932EF20F3C45700746532 /* DataSources */ = { - isa = PBXGroup; - children = ( - B16932F020F3C49D00746532 /* GroupsDataSource.h */, - B16932F120F3C49E00746532 /* GroupsDataSource.m */, - ); - path = DataSources; - sourceTree = ""; - }; - B16932F320F3C4B800746532 /* DataSources */ = { - isa = PBXGroup; - children = ( - B16932F520F3C50E00746532 /* RecentsDataSource.h */, - B16932F620F3C50E00746532 /* RecentsDataSource.m */, - ); - path = DataSources; - sourceTree = ""; - }; - B16932F420F3C4C000746532 /* CellData */ = { - isa = PBXGroup; - children = ( - B16932F820F3C51900746532 /* RecentCellData.h */, - B16932F920F3C51900746532 /* RecentCellData.m */, - ); - path = CellData; - sourceTree = ""; - }; - B16932FB20F3C8C400746532 /* DataSources */ = { - isa = PBXGroup; - children = ( - B16932FE20F3C97D00746532 /* RoomDataSource.h */, - B16932FF20F3C97D00746532 /* RoomDataSource.m */, - ); - path = DataSources; - sourceTree = ""; - }; - B16932FD20F3C8D300746532 /* CellData */ = { - isa = PBXGroup; - children = ( - B169330220F3C98900746532 /* RoomBubbleCellData.h */, - B169330120F3C98800746532 /* RoomBubbleCellData.m */, - ); - path = CellData; - sourceTree = ""; - }; - B169330420F3C9B000746532 /* Contact */ = { - isa = PBXGroup; - children = ( - B169330920F3CA3900746532 /* Contact.h */, - B169330A20F3CA3900746532 /* Contact.m */, - ); - path = Contact; - sourceTree = ""; - }; - B169330520F3C9C000746532 /* DataSources */ = { - isa = PBXGroup; - children = ( - B169330720F3CA0D00746532 /* ContactsDataSource.h */, - B169330620F3CA0D00746532 /* ContactsDataSource.m */, - ); - path = DataSources; - sourceTree = ""; - }; - B169330C20F3CA6000746532 /* PublicRoomList */ = { - isa = PBXGroup; - children = ( - B169331120F3CAFC00746532 /* DataSources */, - B169330D20F3CAFC00746532 /* Views */, - ); - path = PublicRoomList; - sourceTree = ""; - }; - B169330D20F3CAFC00746532 /* Views */ = { - isa = PBXGroup; - children = ( - B169331020F3CAFC00746532 /* PublicRoomTableViewCell.h */, - B169330E20F3CAFC00746532 /* PublicRoomTableViewCell.m */, - B169330F20F3CAFC00746532 /* PublicRoomTableViewCell.xib */, - ); - path = Views; - sourceTree = ""; - }; - B169331120F3CAFC00746532 /* DataSources */ = { - isa = PBXGroup; - children = ( - B169331320F3CAFC00746532 /* PublicRoomsDirectoryDataSource.h */, - B169331220F3CAFC00746532 /* PublicRoomsDirectoryDataSource.m */, - ); - path = DataSources; - sourceTree = ""; - }; - B16DC2192587AED2004DAB1A /* SSO */ = { - isa = PBXGroup; - children = ( - B1945CC8258C04F20020D8D6 /* SSOAuthenticationPresenter.swift */, - B1A15BDA25A6680E00BDCA36 /* SSOURLConstants.swift */, - B16DC22A2587DC35004DAB1A /* SSOAuthenticationService.swift */, - B12742B9258C46DC00731DA6 /* SSOAuthentificationSessionProtocol.swift */, - B1945CCA258C244F0020D8D6 /* SSOAuthentificationSession.swift */, - B12742BB258C472800731DA6 /* LegacySSOAuthentificationSession.swift */, - ); - path = SSO; - sourceTree = ""; - }; - B16DC236258A7516004DAB1A /* SocialLogin */ = { - isa = PBXGroup; - children = ( - B16DC237258A7595004DAB1A /* SocialLoginButtonStyle.swift */, - B16DC239258A75B7004DAB1A /* SocialLoginButtonViewData.swift */, - B14EED1C257D85DF00448735 /* SocialLoginButton.swift */, - B16D6353257D8FB0008BDC97 /* SocialLoginButtonFactory.swift */, - B1945CC6258B77520020D8D6 /* SocialLoginDataSource.swift */, - B14EED18257992D600448735 /* SocialLoginListView.swift */, - B14EED1A2579933100448735 /* SocialLoginListView.xib */, - ); - path = SocialLogin; - sourceTree = ""; - }; - B17982FD2119FEA7001FD722 /* GDPR */ = { - isa = PBXGroup; - children = ( - B17982FE2119FED2001FD722 /* GDPRConsentViewController.swift */, - ); - path = GDPR; - sourceTree = ""; - }; - B1798300211B137B001FD722 /* OnBoarding */ = { - isa = PBXGroup; - children = ( - B1798301211B13B3001FD722 /* OnBoardingManager.swift */, - ); - path = OnBoarding; - sourceTree = ""; - }; - B180A645255DF59800F5E6FF /* Room */ = { - isa = PBXGroup; - children = ( - B124BBD625645F3F0028996D /* RoomIdComponents.swift */, - ); - path = Room; - sourceTree = ""; - }; - B183226923F59F3E0035B2E8 /* Buttons */ = { - isa = PBXGroup; - children = ( - B183226A23F59F4F0035B2E8 /* Close */, - ); - path = Buttons; - sourceTree = ""; - }; - B183226A23F59F4F0035B2E8 /* Close */ = { - isa = PBXGroup; - children = ( - B183226B23F59F810035B2E8 /* CloseButton.swift */, - EC85D6AD2477DC89002C44C9 /* RoundedButton.swift */, - ); - path = Close; - sourceTree = ""; - }; - B185145324B7CF9500EE19EA /* AppVersion */ = { - isa = PBXGroup; - children = ( - B185145424B7CFA700EE19EA /* AppVersion.swift */, - ); - path = AppVersion; - sourceTree = ""; - }; - B18DEDAB243372560075FEF7 /* SelfVerifyWait */ = { - isa = PBXGroup; - children = ( - B18DEDD0243377C00075FEF7 /* KeyVerificationSelfVerifyWaitCoordinatorType.swift */, - B18DEDCE243377C00075FEF7 /* KeyVerificationSelfVerifyWaitCoordinator.swift */, - B18DEDD3243377C10075FEF7 /* KeyVerificationSelfVerifyWaitViewAction.swift */, - B18DEDD2243377C10075FEF7 /* KeyVerificationSelfVerifyWaitViewState.swift */, - B18DEDCC243377C00075FEF7 /* KeyVerificationSelfVerifyWaitViewModelType.swift */, - B18DEDCD243377C00075FEF7 /* KeyVerificationSelfVerifyWaitViewModel.swift */, - B18DEDD1243377C10075FEF7 /* KeyVerificationSelfVerifyWaitViewController.swift */, - B18DEDCF243377C00075FEF7 /* KeyVerificationSelfVerifyWaitViewController.storyboard */, - ); - path = SelfVerifyWait; - sourceTree = ""; - }; - B1963B24228F1C4800CBA17F /* BubbleReactions */ = { - isa = PBXGroup; - children = ( - 329E746522CD02EA006F9797 /* BubbleReactionActionViewCell.swift */, - 329E746422CD02EA006F9797 /* BubbleReactionActionViewCell.xib */, - B1963B31228F1C6B00CBA17F /* BubbleReactionsViewModelType.swift */, - B1963B27228F1C4800CBA17F /* BubbleReactionsViewModel.swift */, - B1B4E9C324D47206004D5C33 /* BubbleReactionsViewModelBuilder.swift */, - B1963B25228F1C4800CBA17F /* BubbleReactionsView.swift */, - B1963B2A228F1C4800CBA17F /* BubbleReactionsView.xib */, - B1963B28228F1C4800CBA17F /* BubbleReactionViewData.swift */, - B1963B29228F1C4800CBA17F /* BubbleReactionViewCell.swift */, - B1963B26228F1C4800CBA17F /* BubbleReactionViewCell.xib */, - B1B4E9C124D471FD004D5C33 /* BubbleReactionsViewSizer.h */, - B1B4E9C024D471FD004D5C33 /* BubbleReactionsViewSizer.m */, - ); - path = BubbleReactions; - sourceTree = ""; - }; - B1963B3622933B9500CBA17F /* CollectionView */ = { - isa = PBXGroup; - children = ( - B1963B3722933BC800CBA17F /* AutosizedCollectionView.swift */, - ); - name = CollectionView; - path = Riot/Modules/Common/CollectionView; - sourceTree = SOURCE_ROOT; - }; - B1A12C64239AB74500AA2B86 /* CrossSigning */ = { - isa = PBXGroup; - children = ( - ); - path = CrossSigning; - sourceTree = ""; - }; - B1A12C65239ABBDB00AA2B86 /* KeyVerification */ = { - isa = PBXGroup; - children = ( - B1C543A3239E98E400DCA1FA /* KeyVerificationCellInnerContentView.swift */, - B1C543A5239E999700DCA1FA /* KeyVerificationCellInnerContentView.xib */, - B1C543AF23A2871300DCA1FA /* KeyVerificationBaseBubbleCell.swift */, - B108932023AB8D7D00802670 /* KeyVerificationIncomingRequestApprovalViewData.swift */, - B108931E23AB80EF00802670 /* KeyVerificationIncomingRequestApprovalBubbleCell.swift */, - B14084CD23BFA0990010F692 /* KeyVerificationIncomingRequestApprovalWithPaginationTitleBubbleCell.swift */, - B108932223AB908A00802670 /* KeyVerificationRequestStatusViewData.swift */, - B1C543AD23A286A000DCA1FA /* KeyVerificationRequestStatusBubbleCell.swift */, - B14084C923BF89310010F692 /* KeyVerificationRequestStatusWithPaginationTitleBubbleCell.swift */, - B108932423AB93A200802670 /* KeyVerificationConclusionViewData.swift */, - B1C543B123A2913F00DCA1FA /* KeyVerificationConclusionBubbleCell.swift */, - B14084CB23BF9DE90010F692 /* KeyVerificationConclusionWithPaginationTitleBubbleCell.swift */, - ); - path = KeyVerification; - sourceTree = ""; - }; - B1A15BD725A664F400BDCA36 /* DeepLink */ = { - isa = PBXGroup; - children = ( - B1A15BD825A6652800BDCA36 /* DeepLinkOption.swift */, - B16C028C25A71CA3008CA7B1 /* CustomSchemeURLConstants.swift */, - B1A15BD325A4BAA800BDCA36 /* CustomSchemeURLParser.swift */, - ); - path = DeepLink; - sourceTree = ""; - }; - B1A6805224B7C60900E312CC /* MajorUpdate */ = { - isa = PBXGroup; - children = ( - B1A6805324B7C65200E312CC /* MajorUpdateManager.swift */, - B185145A24B8C98200EE19EA /* MajorUpdateViewController.swift */, - B185145C24B8C9A400EE19EA /* MajorUpdateViewController.storyboard */, - ); - path = MajorUpdate; - sourceTree = ""; - }; - B1A6C10523881ECB002882FD /* SlidingModal */ = { - isa = PBXGroup; - children = ( - B1A6C10623881EF2002882FD /* SlidingModalPresenter.swift */, - B11291E9238D35590077B478 /* SlidingModalPresentable.swift */, - B1A6C108238828A6002882FD /* SlidingModalPresentationDelegate.swift */, - B1A6C10A23882B6C002882FD /* SlidingModalPresentationAnimator.swift */, - B1A6C10C23882D1D002882FD /* SlidingModalPresentationController.swift */, - B1A6C110238BD236002882FD /* SlidingModalContainerView.swift */, - B1A6C112238BD245002882FD /* SlidingModalContainerView.xib */, - EC51E7912510C0A500AAE7DB /* SpanningSlidingModalContainerView.swift */, - EC51E7932510C0D000AAE7DB /* SpanningSlidingModalContainerView.xib */, - B1BD71B4238DCBF700BA92E2 /* SlidingModalEmptyViewController.swift */, - ); - path = SlidingModal; - sourceTree = ""; - }; - B1B335112421496800B4A6B5 /* Device */ = { - isa = PBXGroup; - children = ( - EC85D71C2477DCF2002C44C9 /* ManuallyVerify */, - B1B336B5242B718B00F95EC4 /* SelfVerifyStart */, - B18DEDAB243372560075FEF7 /* SelfVerifyWait */, - 324A2046225FC571004FE8B0 /* Incoming */, - 3232AB96225730E100AD6A5C /* Start */, - ); - path = Device; - sourceTree = ""; - }; - B1B335122421497000B4A6B5 /* User */ = { - isa = PBXGroup; - children = ( - B1BEE71123DF2ACF0003A4CB /* UserVerificationCoordinatorType.swift */, - B1BEE71223DF2ACF0003A4CB /* UserVerificationCoordinator.swift */, - B1BEE71323DF2ACF0003A4CB /* UserVerificationCoordinatorBridgePresenter.swift */, - B12D79F223E2426800FACEDC /* Start */, - B1BEE71723DF2B8A0003A4CB /* SessionsStatus */, - B1BEE73D23E08AC30003A4CB /* SessionStatus */, - ); - path = User; - sourceTree = ""; - }; - B1B336B5242B718B00F95EC4 /* SelfVerifyStart */ = { - isa = PBXGroup; - children = ( - B1B336B9242B933500F95EC4 /* KeyVerificationSelfVerifyStartCoordinatorType.swift */, - B1B336BB242B933500F95EC4 /* KeyVerificationSelfVerifyStartCoordinator.swift */, - B1B336BC242B933600F95EC4 /* KeyVerificationSelfVerifyStartViewAction.swift */, - B1B336B6242B933300F95EC4 /* KeyVerificationSelfVerifyStartViewState.swift */, - B1B336B8242B933400F95EC4 /* KeyVerificationSelfVerifyStartViewModelType.swift */, - B1B336BD242B933600F95EC4 /* KeyVerificationSelfVerifyStartViewModel.swift */, - B1B336B7242B933300F95EC4 /* KeyVerificationSelfVerifyStartViewController.swift */, - B1B336BA242B933500F95EC4 /* KeyVerificationSelfVerifyStartViewController.storyboard */, - ); - path = SelfVerifyStart; - sourceTree = ""; - }; - B1B4E9B524D46EB3004D5C33 /* SizableCell */ = { - isa = PBXGroup; - children = ( - B1B4E9B624D46EB3004D5C33 /* SizingViewHeight.swift */, - B1B4E9B724D46EB3004D5C33 /* SizableBubbleCell.swift */, - B1B4E9B824D46EB3004D5C33 /* SizingViewHeightStore.swift */, - ); - path = SizableCell; - sourceTree = ""; - }; - B1B5567620EE6C4C00210D55 /* Modules */ = { - isa = PBXGroup; - children = ( - ECF57A3725090C23004BBF9D /* CreateRoom */, - B1BB648724FD07B3008238AE /* Application */, - B10A3E9524FE86AE007C380F /* SplitView */, - EC1CA84F24C1DEC400DE9EBF /* SetPinCode */, - EC3B066324AC6ADD000DF9BF /* CrossSigning */, - EC711BB424A63C11008F830C /* AuthenticatedSession */, - EC711B9A24A63B58008F830C /* SecureBackup */, - EC711B4724A63B36008F830C /* Secrets */, - B1560DA024B65A9500490F50 /* LaunchLoading */, - B1B556CA20EE6C4C00210D55 /* TabBar */, - B1B556F920EE6C4C00210D55 /* Authentication */, - B17982FD2119FEA7001FD722 /* GDPR */, - B1A6805224B7C60900E312CC /* MajorUpdate */, - B1B5568420EE6C4C00210D55 /* Home */, - B1B556C720EE6C4C00210D55 /* Favorites */, - B1B556E720EE6C4C00210D55 /* People */, - B1B556F420EE6C4C00210D55 /* Rooms */, - B1B556B420EE6C4C00210D55 /* Communities */, - B1B5567720EE6C4C00210D55 /* Settings */, - B1B5570C20EE6C4C00210D55 /* GlobalSearch */, - B1B556E020EE6C4C00210D55 /* StartChat */, - B169330C20F3CA6000746532 /* PublicRoomList */, - B1B5568E20EE6C4C00210D55 /* Room */, - B1B5575F20EE702800210D55 /* Integrations */, - B1B556DC20EE6C4C00210D55 /* Call */, - B1B5568720EE6C4C00210D55 /* Contacts */, - B1B556ED20EE6C4C00210D55 /* MediaPicker */, - B1C3361A22F328AE0021BA8D /* Camera */, - B1B556E420EE6C4C00210D55 /* UserDevices */, - B1B5596B20EFA85C00210D55 /* EncryptionInfo */, - B1B556FD20EE6C4C00210D55 /* RoomKeyRequest */, - B1B556B020EE6C4C00210D55 /* BugReport */, - B1098BE921ECFE64000DDA48 /* KeyBackup */, - B1550FCF242148FA00CE097B /* KeyVerification */, - B1A12C64239AB74500AA2B86 /* CrossSigning */, - B1A6C10523881ECB002882FD /* SlidingModal */, - 32DB556722FDADE50016329E /* ServiceTerms */, - B1550FC52420E8F400CE097B /* QRCode */, - B1A15BD725A664F400BDCA36 /* DeepLink */, - B1B556CD20EE6C4C00210D55 /* Common */, - ); - path = Modules; - sourceTree = ""; - }; - B1B5567720EE6C4C00210D55 /* Settings */ = { - isa = PBXGroup; - children = ( - B1B5567F20EE6C4C00210D55 /* SettingsViewController.h */, - B1B5567E20EE6C4C00210D55 /* SettingsViewController.m */, - B1B5578120EF564900210D55 /* Views */, - 32BF994D21FA1C6300698084 /* KeyBackup */, - B125FE19231D5B5600B72806 /* Discovery */, - B1C45A7A232A8C2600165425 /* IdentityServer */, - B1B5567B20EE6C4C00210D55 /* Language */, - B1B5567820EE6C4C00210D55 /* PhoneCountry */, - B1B5568020EE6C4C00210D55 /* DeactivateAccount */, - 3291DC8823E0BE380009732F /* Security */, - B1CE9EFB22148681000FAE6A /* SignOut */, - ); - path = Settings; - sourceTree = ""; - }; - B1B5567820EE6C4C00210D55 /* PhoneCountry */ = { - isa = PBXGroup; - children = ( - B1B5567920EE6C4C00210D55 /* CountryPickerViewController.h */, - B1B5567A20EE6C4C00210D55 /* CountryPickerViewController.m */, - ); - path = PhoneCountry; - sourceTree = ""; - }; - B1B5567B20EE6C4C00210D55 /* Language */ = { - isa = PBXGroup; - children = ( - B1B5567D20EE6C4C00210D55 /* LanguagePickerViewController.h */, - B1B5567C20EE6C4C00210D55 /* LanguagePickerViewController.m */, - ); - path = Language; - sourceTree = ""; - }; - B1B5568020EE6C4C00210D55 /* DeactivateAccount */ = { - isa = PBXGroup; - children = ( - B1B5568220EE6C4C00210D55 /* DeactivateAccountViewController.h */, - B1B5568120EE6C4C00210D55 /* DeactivateAccountViewController.m */, - B1B5568320EE6C4C00210D55 /* DeactivateAccountViewController.storyboard */, - ); - path = DeactivateAccount; - sourceTree = ""; - }; - B1B5568420EE6C4C00210D55 /* Home */ = { - isa = PBXGroup; - children = ( - 323AB944232BD71900C1451F /* Fallback */, - B1B5568620EE6C4C00210D55 /* HomeViewController.h */, - B1B5568520EE6C4C00210D55 /* HomeViewController.m */, - B1B5593D20EF7BD000210D55 /* Views */, - ); - path = Home; - sourceTree = ""; - }; - B1B5568720EE6C4C00210D55 /* Contacts */ = { - isa = PBXGroup; - children = ( - B1B5568920EE6C4C00210D55 /* ContactsTableViewController.h */, - B1B5568C20EE6C4C00210D55 /* ContactsTableViewController.m */, - B1B5568D20EE6C4C00210D55 /* ContactsTableViewController.xib */, - B169330520F3C9C000746532 /* DataSources */, - B1B5577620EE70D200210D55 /* Details */, - B1B5579D20EF58AC00210D55 /* Views */, - ); - path = Contacts; - sourceTree = ""; - }; - B1B5568E20EE6C4C00210D55 /* Room */ = { - isa = PBXGroup; - children = ( - EC51E7B12514D34200AAE7DB /* RoomInfo */, - ECFBD605250FA98900DD5F5A /* CreationModal */, - 32A6000C22C661100042C1D9 /* EditHistory */, - B1B5568F20EE6C4C00210D55 /* RoomViewController.h */, - B1B556A020EE6C4C00210D55 /* RoomViewController.m */, - B1B5569620EE6C4C00210D55 /* RoomViewController.xib */, - B16932FB20F3C8C400746532 /* DataSources */, - B16932FD20F3C8D300746532 /* CellData */, - B1B557AE20EF5AEF00210D55 /* Views */, - B1B5569320EE6C4C00210D55 /* Attachements */, - B1B556AC20EE6C4C00210D55 /* ReadReceiptsDetail */, - B1B5569720EE6C4C00210D55 /* Search */, - B1B556A120EE6C4C00210D55 /* Files */, - B1B556A420EE6C4C00210D55 /* Members */, - B1B5569020EE6C4C00210D55 /* Settings */, - B1C562D7228C0B4C0037F12A /* ContextualMenu */, - B1963B24228F1C4800CBA17F /* BubbleReactions */, - B152C72922DCEA670041315A /* EmojiPicker */, - B1B9DEDF22EB34ED0065E677 /* ReactionHistory */, - ); - path = Room; - sourceTree = ""; - }; - B1B5569020EE6C4C00210D55 /* Settings */ = { - isa = PBXGroup; - children = ( - B1B5569120EE6C4C00210D55 /* RoomSettingsViewController.h */, - B1B5569220EE6C4C00210D55 /* RoomSettingsViewController.m */, - B1B5592D20EF7BAC00210D55 /* Views */, - ); - path = Settings; - sourceTree = ""; - }; - B1B5569320EE6C4C00210D55 /* Attachements */ = { - isa = PBXGroup; - children = ( - B1B5569420EE6C4C00210D55 /* AttachmentsViewController.h */, - B1B5569520EE6C4C00210D55 /* AttachmentsViewController.m */, - ); - path = Attachements; - sourceTree = ""; - }; - B1B5569720EE6C4C00210D55 /* Search */ = { - isa = PBXGroup; - children = ( - B1B5569B20EE6C4C00210D55 /* RoomSearchViewController.h */, - B1B5569F20EE6C4C00210D55 /* RoomSearchViewController.m */, - B16932AE20F3AC9200746532 /* DataSources */, - B1B5569820EE6C4C00210D55 /* Messages */, - B1B5569C20EE6C4C00210D55 /* Files */, - ); - path = Search; - sourceTree = ""; - }; - B1B5569820EE6C4C00210D55 /* Messages */ = { - isa = PBXGroup; - children = ( - B1B5569920EE6C4C00210D55 /* RoomMessagesSearchViewController.h */, - B1B5569A20EE6C4C00210D55 /* RoomMessagesSearchViewController.m */, - ); - path = Messages; - sourceTree = ""; - }; - B1B5569C20EE6C4C00210D55 /* Files */ = { - isa = PBXGroup; - children = ( - B1B5569D20EE6C4C00210D55 /* RoomFilesSearchViewController.h */, - B1B5569E20EE6C4C00210D55 /* RoomFilesSearchViewController.m */, - ); - path = Files; - sourceTree = ""; - }; - B1B556A120EE6C4C00210D55 /* Files */ = { - isa = PBXGroup; - children = ( - B1B556A320EE6C4C00210D55 /* RoomFilesViewController.h */, - B1B556A220EE6C4C00210D55 /* RoomFilesViewController.m */, - ); - path = Files; - sourceTree = ""; - }; - B1B556A420EE6C4C00210D55 /* Members */ = { - isa = PBXGroup; - children = ( - B1B556A520EE6C4C00210D55 /* RoomParticipantsViewController.h */, - B1B556AA20EE6C4C00210D55 /* RoomParticipantsViewController.m */, - B1B556AB20EE6C4C00210D55 /* RoomParticipantsViewController.xib */, - B1B556A620EE6C4C00210D55 /* Detail */, - ); - path = Members; - sourceTree = ""; - }; - B1B556A620EE6C4C00210D55 /* Detail */ = { - isa = PBXGroup; - children = ( - B1BEE73C23E070300003A4CB /* UserEncryptionTrustLevel.h */, - B1B556A720EE6C4C00210D55 /* RoomMemberDetailsViewController.h */, - B1B556A820EE6C4C00210D55 /* RoomMemberDetailsViewController.m */, - B1B556A920EE6C4C00210D55 /* RoomMemberDetailsViewController.xib */, - B1B5582120EF638A00210D55 /* Views */, - ); - path = Detail; - sourceTree = ""; - }; - B1B556AC20EE6C4C00210D55 /* ReadReceiptsDetail */ = { - isa = PBXGroup; - children = ( - B1B556AD20EE6C4C00210D55 /* ReadReceiptsViewController.h */, - B1B556AF20EE6C4C00210D55 /* ReadReceiptsViewController.m */, - B1B556AE20EE6C4C00210D55 /* ReadReceiptsViewController.xib */, - ); - path = ReadReceiptsDetail; - sourceTree = ""; - }; - B1B556B020EE6C4C00210D55 /* BugReport */ = { - isa = PBXGroup; - children = ( - B1B556B220EE6C4C00210D55 /* BugReportViewController.h */, - B1B556B320EE6C4C00210D55 /* BugReportViewController.m */, - B1B556B120EE6C4C00210D55 /* BugReportViewController.xib */, - ); - path = BugReport; - sourceTree = ""; - }; - B1B556B420EE6C4C00210D55 /* Communities */ = { - isa = PBXGroup; - children = ( - B1B556B920EE6C4C00210D55 /* GroupsViewController.h */, - B1B556BE20EE6C4C00210D55 /* GroupsViewController.m */, - B16932EF20F3C45700746532 /* DataSources */, - B1B5578720EF568D00210D55 /* Views */, - B1B556BA20EE6C4C00210D55 /* TabDetail */, - B1B556B520EE6C4C00210D55 /* Home */, - B1B556BF20EE6C4C00210D55 /* Members */, - B1B556C320EE6C4C00210D55 /* Rooms */, - ); - path = Communities; - sourceTree = ""; - }; - B1B556B520EE6C4C00210D55 /* Home */ = { - isa = PBXGroup; - children = ( - B1B556B620EE6C4C00210D55 /* GroupHomeViewController.h */, - B1B556B720EE6C4C00210D55 /* GroupHomeViewController.m */, - B1B556B820EE6C4C00210D55 /* GroupHomeViewController.xib */, - ); - path = Home; - sourceTree = ""; - }; - B1B556BA20EE6C4C00210D55 /* TabDetail */ = { - isa = PBXGroup; - children = ( - B1B556BC20EE6C4C00210D55 /* GroupDetailsViewController.h */, - B1B556BD20EE6C4C00210D55 /* GroupDetailsViewController.m */, - B1B556BB20EE6C4C00210D55 /* GroupDetailsViewController.xib */, - ); - path = TabDetail; - sourceTree = ""; - }; - B1B556BF20EE6C4C00210D55 /* Members */ = { - isa = PBXGroup; - children = ( - B1B556C020EE6C4C00210D55 /* GroupParticipantsViewController.xib */, - B1B556C120EE6C4C00210D55 /* GroupParticipantsViewController.m */, - B1B556C220EE6C4C00210D55 /* GroupParticipantsViewController.h */, - ); - path = Members; - sourceTree = ""; - }; - B1B556C320EE6C4C00210D55 /* Rooms */ = { - isa = PBXGroup; - children = ( - B1B556C420EE6C4C00210D55 /* GroupRoomsViewController.h */, - B1B556C520EE6C4C00210D55 /* GroupRoomsViewController.xib */, - B1B556C620EE6C4C00210D55 /* GroupRoomsViewController.m */, - B1B5583920EF6E7F00210D55 /* Views */, - ); - path = Rooms; - sourceTree = ""; - }; - B1B556C720EE6C4C00210D55 /* Favorites */ = { - isa = PBXGroup; - children = ( - B1B556C820EE6C4C00210D55 /* FavouritesViewController.h */, - B1B556C920EE6C4C00210D55 /* FavouritesViewController.m */, - ); - path = Favorites; - sourceTree = ""; - }; - B1B556CA20EE6C4C00210D55 /* TabBar */ = { - isa = PBXGroup; - children = ( - B1C7822E2500EAF500337EB9 /* TabBarCoordinatorType.swift */, - B1C7822D2500EAF400337EB9 /* TabBarCoordinator.swift */, - B1B556CB20EE6C4C00210D55 /* MasterTabBarController.h */, - B1B556CC20EE6C4C00210D55 /* MasterTabBarController.m */, - ); - path = TabBar; - sourceTree = ""; - }; - B1B556CD20EE6C4C00210D55 /* Common */ = { - isa = PBXGroup; - children = ( - EC51E78E2510B7B900AAE7DB /* TableView */, - ECF57A5F25093B04004BBF9D /* SectionHeaders */, - ECF57A5C2509264B004BBF9D /* Views */, - ECAE7AEA24EC223D002FA813 /* Models */, - B183226923F59F3E0035B2E8 /* Buttons */, - B1963B3622933B9500CBA17F /* CollectionView */, - B1B556CE20EE6C4C00210D55 /* WebViewController */, - B1B556D120EE6C4C00210D55 /* NavigationController */, - B1B556D420EE6C4C00210D55 /* SegmentedViewController */, - B1B556D820EE6C4C00210D55 /* Recents */, - B1B5592720EF7A5D00210D55 /* Cells */, - B1D4752421EE4E620067973F /* KeyboardAvoiding */, - B110871E21F098EF003554A5 /* ActivityIndicator */, - ); - path = Common; - sourceTree = ""; - }; - B1B556CE20EE6C4C00210D55 /* WebViewController */ = { - isa = PBXGroup; - children = ( - B1B556CF20EE6C4C00210D55 /* WebViewViewController.h */, - B1B556D020EE6C4C00210D55 /* WebViewViewController.m */, - ); - path = WebViewController; - sourceTree = ""; - }; - B1B556D120EE6C4C00210D55 /* NavigationController */ = { - isa = PBXGroup; - children = ( - B1B556D220EE6C4C00210D55 /* RiotNavigationController.h */, - B1B556D320EE6C4C00210D55 /* RiotNavigationController.m */, - ); - path = NavigationController; - sourceTree = ""; - }; - B1B556D420EE6C4C00210D55 /* SegmentedViewController */ = { - isa = PBXGroup; - children = ( - B1B556D520EE6C4C00210D55 /* SegmentedViewController.h */, - B1B556D720EE6C4C00210D55 /* SegmentedViewController.m */, - B1B556D620EE6C4C00210D55 /* SegmentedViewController.xib */, - ); - path = SegmentedViewController; - sourceTree = ""; - }; - B1B556D820EE6C4C00210D55 /* Recents */ = { - isa = PBXGroup; - children = ( - B1B556DB20EE6C4C00210D55 /* RecentsViewController.h */, - B1B556D920EE6C4C00210D55 /* RecentsViewController.m */, - B1B556DA20EE6C4C00210D55 /* RecentsViewController.xib */, - B1F9072C255CDA1200DD14E5 /* RecentsViewController+RoomInvite.swift */, - B16932F320F3C4B800746532 /* DataSources */, - B16932F420F3C4C000746532 /* CellData */, - B1B5594E20EF9A8600210D55 /* Views */, - ); - path = Recents; - sourceTree = ""; - }; - B1B556DC20EE6C4C00210D55 /* Call */ = { - isa = PBXGroup; - children = ( - B1B556DD20EE6C4C00210D55 /* CallViewController.h */, - B1B556DF20EE6C4C00210D55 /* CallViewController.m */, - B1B556DE20EE6C4C00210D55 /* CallViewController.xib */, - B1B5578020EE84E700210D55 /* Views */, - ); - path = Call; - sourceTree = ""; - }; - B1B556E020EE6C4C00210D55 /* StartChat */ = { - isa = PBXGroup; - children = ( - B1B556E120EE6C4C00210D55 /* StartChatViewController.h */, - B1B556E220EE6C4C00210D55 /* StartChatViewController.m */, - B1B556E320EE6C4C00210D55 /* StartChatViewController.xib */, - ); - path = StartChat; - sourceTree = ""; - }; - B1B556E420EE6C4C00210D55 /* UserDevices */ = { - isa = PBXGroup; - children = ( - B1B556E620EE6C4C00210D55 /* UsersDevicesViewController.h */, - B1B556E520EE6C4C00210D55 /* UsersDevicesViewController.m */, - B1B557A320EF5A1B00210D55 /* Views */, - ); - path = UserDevices; - sourceTree = ""; - }; - B1B556E720EE6C4C00210D55 /* People */ = { - isa = PBXGroup; - children = ( - B1B556E920EE6C4C00210D55 /* PeopleViewController.h */, - B1B556E820EE6C4C00210D55 /* PeopleViewController.m */, - B1B5597120EFB02900210D55 /* Views */, - ); - path = People; - sourceTree = ""; - }; - B1B556ED20EE6C4C00210D55 /* MediaPicker */ = { - isa = PBXGroup; - children = ( - B1C335FF22F1ED5F0021BA8D /* MediaPickerCoordinatorBridgePresenter.swift */, - B1C335FE22F1ED5F0021BA8D /* MediaPickerCoordinatorType.swift */, - B1C3360022F1ED600021BA8D /* MediaPickerCoordinator.swift */, - B1B556F320EE6C4C00210D55 /* MediaPickerViewController.h */, - B1B556EF20EE6C4C00210D55 /* MediaPickerViewController.m */, - B1B556F220EE6C4C00210D55 /* MediaPickerViewController.xib */, - B1B5577720EE724200210D55 /* Library */, - B1B557CD20EF5E3500210D55 /* Views */, - B1C3361B22F32B4A0021BA8D /* SingleImagePickerPresenter.swift */, - ); - path = MediaPicker; - sourceTree = ""; - }; - B1B556F420EE6C4C00210D55 /* Rooms */ = { - isa = PBXGroup; - children = ( - ECFBD5B5250A7AAE00DD5F5A /* RoomsDirectoryCoordinator.swift */, - ECFBD5C7250A7AAF00DD5F5A /* RoomsDirectoryCoordinatorBridgePresenter.swift */, - ECFBD5C8250A7AAF00DD5F5A /* RoomsDirectoryCoordinatorType.swift */, - ECFBD5B6250A7AAF00DD5F5A /* ShowDirectory */, - B1B556F620EE6C4C00210D55 /* RoomsViewController.h */, - B1B556F820EE6C4C00210D55 /* RoomsViewController.m */, - B1B5577820EE75ED00210D55 /* DirectoryPicker */, - ); - path = Rooms; - sourceTree = ""; - }; - B1B556F920EE6C4C00210D55 /* Authentication */ = { - isa = PBXGroup; - children = ( - B1B556FA20EE6C4C00210D55 /* AuthenticationViewController.h */, - B1B556FC20EE6C4C00210D55 /* AuthenticationViewController.m */, - B1B556FB20EE6C4C00210D55 /* AuthenticationViewController.xib */, - B16DC236258A7516004DAB1A /* SocialLogin */, - B16DC2192587AED2004DAB1A /* SSO */, - B1B5579220EF575A00210D55 /* Views */, - ); - path = Authentication; - sourceTree = ""; - }; - B1B556FD20EE6C4C00210D55 /* RoomKeyRequest */ = { - isa = PBXGroup; - children = ( - B1B556FF20EE6C4C00210D55 /* RoomKeyRequestViewController.h */, - B1B556FE20EE6C4C00210D55 /* RoomKeyRequestViewController.m */, - ); - path = RoomKeyRequest; - sourceTree = ""; - }; - B1B5570C20EE6C4C00210D55 /* GlobalSearch */ = { - isa = PBXGroup; - children = ( - B1B5571020EE6C4C00210D55 /* UnifiedSearchViewController.h */, - B1B5571120EE6C4C00210D55 /* UnifiedSearchViewController.m */, - B16932E320F3C12B00746532 /* DataSources */, - B1B5582720EF666100210D55 /* Views */, - B1B5571520EE6C4C00210D55 /* Rooms */, - B1B5570D20EE6C4C00210D55 /* Messages */, - B1B5571220EE6C4C00210D55 /* Files */, - ); - path = GlobalSearch; - sourceTree = ""; - }; - B1B5570D20EE6C4C00210D55 /* Messages */ = { - isa = PBXGroup; - children = ( - B1B5570E20EE6C4C00210D55 /* HomeMessagesSearchViewController.h */, - B1B5570F20EE6C4C00210D55 /* HomeMessagesSearchViewController.m */, - B16932E420F3C29100746532 /* DataSources */, - B1B557DF20EF60B900210D55 /* Views */, - ); - path = Messages; - sourceTree = ""; - }; - B1B5571220EE6C4C00210D55 /* Files */ = { - isa = PBXGroup; - children = ( - B1B5571320EE6C4C00210D55 /* HomeFilesSearchViewController.h */, - B1B5571420EE6C4C00210D55 /* HomeFilesSearchViewController.m */, - B16932EB20F3C39A00746532 /* CellData */, - B1B557D920EF5FBA00210D55 /* Views */, - ); - path = Files; - sourceTree = ""; - }; - B1B5571520EE6C4C00210D55 /* Rooms */ = { - isa = PBXGroup; - children = ( - B1B5571720EE6C4C00210D55 /* DirectoryViewController.h */, - B1B5571620EE6C4C00210D55 /* DirectoryViewController.m */, - ); - path = Rooms; - sourceTree = ""; - }; - B1B5575F20EE702800210D55 /* Integrations */ = { - isa = PBXGroup; - children = ( - B1B5576420EE702800210D55 /* IntegrationManagerViewController.h */, - B1B5576020EE702800210D55 /* IntegrationManagerViewController.m */, - B11291ED238DC8C80077B478 /* WidgetPermission */, - B1B5576120EE702800210D55 /* WidgetPicker */, - B1B5576520EE702800210D55 /* Widgets */, - ); - path = Integrations; - sourceTree = ""; - }; - B1B5576120EE702800210D55 /* WidgetPicker */ = { - isa = PBXGroup; - children = ( - B1B5576220EE702800210D55 /* WidgetPickerViewController.m */, - B1B5576320EE702800210D55 /* WidgetPickerViewController.h */, - ); - path = WidgetPicker; - sourceTree = ""; - }; - B1B5576520EE702800210D55 /* Widgets */ = { - isa = PBXGroup; - children = ( - B1B5576E20EE702800210D55 /* WidgetViewController.h */, - B1B5576D20EE702800210D55 /* WidgetViewController.m */, - B1B5576620EE702800210D55 /* StickerPicker */, - B1B5576920EE702800210D55 /* Jitsi */, - ); - path = Widgets; - sourceTree = ""; - }; - B1B5576620EE702800210D55 /* StickerPicker */ = { - isa = PBXGroup; - children = ( - B1B5576720EE702800210D55 /* StickerPickerViewController.h */, - B1B5576820EE702800210D55 /* StickerPickerViewController.m */, - ); - path = StickerPicker; - sourceTree = ""; - }; - B1B5576920EE702800210D55 /* Jitsi */ = { - isa = PBXGroup; - children = ( - B10CFBC22268D99D00A5842E /* JitsiService.swift */, - B1E5EF9C2541C06000E8A883 /* JitsiWellKnown.swift */, - B1562CE62541DE25002F8436 /* JitsiAuthenticationType.swift */, - B158E72225485EAB000A7F75 /* JitsiJWTTokenBuilder.swift */, - B1C456C82548CF09002E5734 /* JitsiJWTPayload.swift */, - B1B5576A20EE702800210D55 /* JitsiViewController.h */, - B1B5576C20EE702800210D55 /* JitsiViewController.m */, - B1B5576B20EE702800210D55 /* JitsiViewController.xib */, - ); - path = Jitsi; - sourceTree = ""; - }; - B1B5577620EE70D200210D55 /* Details */ = { - isa = PBXGroup; - children = ( - B1B5568B20EE6C4C00210D55 /* ContactDetailsViewController.h */, - B1B5568820EE6C4C00210D55 /* ContactDetailsViewController.m */, - B1B5568A20EE6C4C00210D55 /* ContactDetailsViewController.xib */, - B1B5596120EF9E9A00210D55 /* Views */, - ); - path = Details; - sourceTree = ""; - }; - B1B5577720EE724200210D55 /* Library */ = { - isa = PBXGroup; - children = ( - B1B556EE20EE6C4C00210D55 /* MediaAlbumContentViewController.h */, - B1B556F020EE6C4C00210D55 /* MediaAlbumContentViewController.m */, - B1B556F120EE6C4C00210D55 /* MediaAlbumContentViewController.xib */, - ); - path = Library; - sourceTree = ""; - }; - B1B5577820EE75ED00210D55 /* DirectoryPicker */ = { - isa = PBXGroup; - children = ( - B1B556F520EE6C4C00210D55 /* DirectoryServerPickerViewController.h */, - B1B556F720EE6C4C00210D55 /* DirectoryServerPickerViewController.m */, - B1B557C220EF5CD400210D55 /* Views */, - ); - path = DirectoryPicker; - sourceTree = ""; - }; - B1B5578020EE84E700210D55 /* Views */ = { - isa = PBXGroup; - children = ( - B1B5577920EE84BC00210D55 /* CircleButton.h */, - B1B5577B20EE84BE00210D55 /* CircleButton.m */, - B1B5577A20EE84BD00210D55 /* IncomingCallView.h */, - B1B5577C20EE84BF00210D55 /* IncomingCallView.m */, - ); - path = Views; - sourceTree = ""; - }; - B1B5578120EF564900210D55 /* Views */ = { - isa = PBXGroup; - children = ( - B1B5578220EF564900210D55 /* GroupTableViewCellWithSwitch.h */, - B1B5578320EF564900210D55 /* GroupTableViewCellWithSwitch.xib */, - B1B5578420EF564900210D55 /* GroupTableViewCellWithSwitch.m */, - B1B5590C20EF782700210D55 /* TableViewCellWithPhoneNumberTextField.h */, - B1B5590E20EF782800210D55 /* TableViewCellWithPhoneNumberTextField.m */, - B1B5590D20EF782800210D55 /* TableViewCellWithPhoneNumberTextField.xib */, - B1B557A920EF5A6C00210D55 /* DeviceView.h */, - B1B557AA20EF5A6C00210D55 /* DeviceView.m */, - B1B557AB20EF5A6C00210D55 /* DeviceView.xib */, - ); - path = Views; - sourceTree = ""; - }; - B1B5578720EF568D00210D55 /* Views */ = { - isa = PBXGroup; - children = ( - B1B5578C20EF568D00210D55 /* GroupInviteTableViewCell.h */, - B1B5578B20EF568D00210D55 /* GroupInviteTableViewCell.m */, - B1B5578820EF568D00210D55 /* GroupInviteTableViewCell.xib */, - B1B5578D20EF568D00210D55 /* GroupTableViewCell.h */, - B1B5578920EF568D00210D55 /* GroupTableViewCell.m */, - B1B5578A20EF568D00210D55 /* GroupTableViewCell.xib */, - ); - path = Views; - sourceTree = ""; - }; - B1B5579220EF575A00210D55 /* Views */ = { - isa = PBXGroup; - children = ( - B1B5579520EF575A00210D55 /* AuthInputsView.h */, - B1B5579320EF575A00210D55 /* AuthInputsView.m */, - B1B5579620EF575A00210D55 /* AuthInputsView.xib */, - B1B5579720EF575A00210D55 /* ForgotPasswordInputsView.h */, - B1B5579420EF575A00210D55 /* ForgotPasswordInputsView.m */, - B1B5579820EF575A00210D55 /* ForgotPasswordInputsView.xib */, - 32B1FEDA21A46F2C00637127 /* TermsView.xib */, - 3275FD8B21A5A2C500B9C13D /* TermsView.swift */, - ); - path = Views; - sourceTree = ""; - }; - B1B5579D20EF58AC00210D55 /* Views */ = { - isa = PBXGroup; - children = ( - EC85D7362477DD97002C44C9 /* LocalContactsSectionHeaderContainerView.h */, - EC85D7352477DD97002C44C9 /* LocalContactsSectionHeaderContainerView.m */, - B1B557A020EF58AC00210D55 /* ContactTableViewCell.h */, - B1B5579E20EF58AC00210D55 /* ContactTableViewCell.m */, - B1B5579F20EF58AC00210D55 /* ContactTableViewCell.xib */, - ); - path = Views; - sourceTree = ""; - }; - B1B557A320EF5A1B00210D55 /* Views */ = { - isa = PBXGroup; - children = ( - B1B557A420EF5A1B00210D55 /* DeviceTableViewCell.h */, - B1B557A620EF5A1B00210D55 /* DeviceTableViewCell.m */, - B1B557A520EF5A1B00210D55 /* DeviceTableViewCell.xib */, - ); - path = Views; - sourceTree = ""; - }; - B1B557AE20EF5AEF00210D55 /* Views */ = { - isa = PBXGroup; - children = ( - B1B557EA20EF61C000210D55 /* Title */, - B1B557B520EF5B4400210D55 /* InputToolbar */, - B1B557AF20EF5AEF00210D55 /* Event */, - B1B557D320EF5EA900210D55 /* Activities */, - B1B5583F20EF768E00210D55 /* BubbleCells */, - ); - path = Views; - sourceTree = ""; - }; - B1B557AF20EF5AEF00210D55 /* Event */ = { - isa = PBXGroup; - children = ( - B1B557B020EF5AEF00210D55 /* EventDetailsView.h */, - B1B557B120EF5AEF00210D55 /* EventDetailsView.xib */, - B1B557B220EF5AEF00210D55 /* EventDetailsView.m */, - ); - path = Event; - sourceTree = ""; - }; - B1B557B520EF5B4400210D55 /* InputToolbar */ = { - isa = PBXGroup; - children = ( - B1B557B620EF5B4400210D55 /* KeyboardGrowingTextView.m */, - B1B557B720EF5B4400210D55 /* RoomInputToolbarView.m */, - B1B557B820EF5B4400210D55 /* DisabledRoomInputToolbarView.m */, - B1B557B920EF5B4400210D55 /* RoomInputToolbarView.xib */, - B1B557BA20EF5B4400210D55 /* DisabledRoomInputToolbarView.xib */, - B1B557BB20EF5B4400210D55 /* DisabledRoomInputToolbarView.h */, - B1B557BC20EF5B4400210D55 /* RoomInputToolbarView.h */, - ); - path = InputToolbar; - sourceTree = ""; - }; - B1B557C220EF5CD400210D55 /* Views */ = { - isa = PBXGroup; - children = ( - B1B557C820EF5D7F00210D55 /* DirectoryServerTableViewCell.h */, - B1B557CA20EF5D7F00210D55 /* DirectoryServerTableViewCell.m */, - B1B557C920EF5D7F00210D55 /* DirectoryServerTableViewCell.xib */, - B1B557C320EF5CD400210D55 /* DirectoryServerDetailTableViewCell.h */, - B1B557C420EF5CD400210D55 /* DirectoryServerDetailTableViewCell.m */, - B1B557C520EF5CD400210D55 /* DirectoryServerDetailTableViewCell.xib */, - ); - path = Views; - sourceTree = ""; - }; - B1B557CD20EF5E3500210D55 /* Views */ = { - isa = PBXGroup; - children = ( - B1B557CE20EF5E3500210D55 /* MediaAlbumTableCell.m */, - B1B557CF20EF5E3500210D55 /* MediaAlbumTableCell.h */, - B1B557D020EF5E3500210D55 /* MediaAlbumTableCell.xib */, - ); - path = Views; - sourceTree = ""; - }; - B1B557D320EF5EA900210D55 /* Activities */ = { - isa = PBXGroup; - children = ( - B1B557D420EF5EA900210D55 /* RoomActivitiesView.h */, - B1B557D520EF5EA900210D55 /* RoomActivitiesView.xib */, - B1B557D620EF5EA900210D55 /* RoomActivitiesView.m */, - ); - path = Activities; - sourceTree = ""; - }; - B1B557D920EF5FBA00210D55 /* Views */ = { - isa = PBXGroup; - children = ( - B1B557DB20EF5FBA00210D55 /* FilesSearchTableViewCell.h */, - B1B557DC20EF5FBA00210D55 /* FilesSearchTableViewCell.m */, - B1B557DA20EF5FBA00210D55 /* FilesSearchTableViewCell.xib */, - ); - path = Views; - sourceTree = ""; - }; - B1B557DF20EF60B900210D55 /* Views */ = { - isa = PBXGroup; - children = ( - B1B557E220EF60B900210D55 /* MessagesSearchResultAttachmentBubbleCell.h */, - B1B557E020EF60B900210D55 /* MessagesSearchResultAttachmentBubbleCell.m */, - B1B557E120EF60B900210D55 /* MessagesSearchResultAttachmentBubbleCell.xib */, - B1B557E720EF60F500210D55 /* MessagesSearchResultTextMsgBubbleCell.h */, - B1B557E620EF60F400210D55 /* MessagesSearchResultTextMsgBubbleCell.m */, - B1B557E520EF60F400210D55 /* MessagesSearchResultTextMsgBubbleCell.xib */, - ); - path = Views; - sourceTree = ""; - }; - B1B557EA20EF61C000210D55 /* Title */ = { - isa = PBXGroup; - children = ( - B1B5581620EF625700210D55 /* RoomTitleView.h */, - B1B5580820EF625600210D55 /* RoomTitleView.m */, - B1B5581120EF625700210D55 /* RoomTitleView.xib */, - B1B5581220EF625700210D55 /* Simple */, - B1B5580920EF625600210D55 /* Expanded */, - B1B5580420EF625600210D55 /* Preview */, - B1B5580D20EF625700210D55 /* Avatar */, - ); - path = Title; - sourceTree = ""; - }; - B1B5580420EF625600210D55 /* Preview */ = { - isa = PBXGroup; - children = ( - B1B5580520EF625600210D55 /* PreviewRoomTitleView.h */, - B1B5580620EF625600210D55 /* PreviewRoomTitleView.m */, - B1B5580720EF625600210D55 /* PreviewRoomTitleView.xib */, - ); - path = Preview; - sourceTree = ""; - }; - B1B5580920EF625600210D55 /* Expanded */ = { - isa = PBXGroup; - children = ( - B1B5580A20EF625600210D55 /* ExpandedRoomTitleView.m */, - B1B5580B20EF625600210D55 /* ExpandedRoomTitleView.xib */, - B1B5580C20EF625600210D55 /* ExpandedRoomTitleView.h */, - ); - path = Expanded; - sourceTree = ""; - }; - B1B5580D20EF625700210D55 /* Avatar */ = { - isa = PBXGroup; - children = ( - B1B5580E20EF625700210D55 /* RoomAvatarTitleView.h */, - B1B5580F20EF625700210D55 /* RoomAvatarTitleView.m */, - B1B5581020EF625700210D55 /* RoomAvatarTitleView.xib */, - ); - path = Avatar; - sourceTree = ""; - }; - B1B5581220EF625700210D55 /* Simple */ = { - isa = PBXGroup; - children = ( - B1B5581320EF625700210D55 /* SimpleRoomTitleView.m */, - B1B5581420EF625700210D55 /* SimpleRoomTitleView.xib */, - B1B5581520EF625700210D55 /* SimpleRoomTitleView.h */, - ); - path = Simple; - sourceTree = ""; - }; - B1B5582120EF638A00210D55 /* Views */ = { - isa = PBXGroup; - children = ( - B1B5582420EF638A00210D55 /* RoomMemberTitleView.h */, - B1B5582220EF638A00210D55 /* RoomMemberTitleView.m */, - B1B5582320EF638A00210D55 /* RoomMemberTitleView.xib */, - ); - path = Views; - sourceTree = ""; - }; - B1B5582720EF666100210D55 /* Views */ = { - isa = PBXGroup; - children = ( - B1B5582920EF666100210D55 /* DirectoryRecentTableViewCell.h */, - B1B5582A20EF666100210D55 /* DirectoryRecentTableViewCell.m */, - B1B5582820EF666100210D55 /* DirectoryRecentTableViewCell.xib */, - B1B5582D20EF66BA00210D55 /* RoomIdOrAliasTableViewCell.h */, - B1B5582F20EF66BA00210D55 /* RoomIdOrAliasTableViewCell.m */, - B1B5582E20EF66BA00210D55 /* RoomIdOrAliasTableViewCell.xib */, - ); - path = Views; - sourceTree = ""; - }; - B1B5583920EF6E7F00210D55 /* Views */ = { - isa = PBXGroup; - children = ( - B1B5583C20EF6E7F00210D55 /* GroupRoomTableViewCell.h */, - B1B5583B20EF6E7F00210D55 /* GroupRoomTableViewCell.m */, - B1B5583A20EF6E7F00210D55 /* GroupRoomTableViewCell.xib */, - ); - path = Views; - sourceTree = ""; - }; - B1B5583F20EF768E00210D55 /* BubbleCells */ = { - isa = PBXGroup; - children = ( - ECFBD5E6250F97FC00DD5F5A /* RoomCreationCollapsedBubbleCell.h */, - ECFBD5E9250F97FC00DD5F5A /* RoomCreationCollapsedBubbleCell.m */, - ECFBD5E4250F97FC00DD5F5A /* RoomCreationCollapsedBubbleCell.xib */, - ECFBD5E7250F97FC00DD5F5A /* RoomCreationWithPaginationCollapsedBubbleCell.h */, - ECFBD5E5250F97FC00DD5F5A /* RoomCreationWithPaginationCollapsedBubbleCell.m */, - ECFBD5E8250F97FC00DD5F5A /* RoomCreationWithPaginationCollapsedBubbleCell.xib */, - B108932623ABE82C00802670 /* BaseBubbleCell */, - B1B4E9B524D46EB3004D5C33 /* SizableCell */, - B1A12C65239ABBDB00AA2B86 /* KeyVerification */, - B1B5584220EF768E00210D55 /* Encryption */, - B1B5589220EF768E00210D55 /* RoomEmptyBubbleCell.h */, - B1B558B620EF768E00210D55 /* RoomEmptyBubbleCell.m */, - B1B5587F20EF768E00210D55 /* RoomEmptyBubbleCell.xib */, - B1B5589A20EF768E00210D55 /* RoomIncomingAttachmentBubbleCell.h */, - B1B5587720EF768E00210D55 /* RoomIncomingAttachmentBubbleCell.m */, - B1B558A720EF768E00210D55 /* RoomIncomingAttachmentBubbleCell.xib */, - B1B5589E20EF768E00210D55 /* RoomIncomingAttachmentWithoutSenderInfoBubbleCell.h */, - B1B5588320EF768E00210D55 /* RoomIncomingAttachmentWithoutSenderInfoBubbleCell.m */, - B1B558A520EF768E00210D55 /* RoomIncomingAttachmentWithoutSenderInfoBubbleCell.xib */, - B1B558AF20EF768E00210D55 /* RoomIncomingAttachmentWithPaginationTitleBubbleCell.h */, - B1B5588720EF768E00210D55 /* RoomIncomingAttachmentWithPaginationTitleBubbleCell.m */, - B1B5589420EF768E00210D55 /* RoomIncomingAttachmentWithPaginationTitleBubbleCell.xib */, - B1B5588B20EF768E00210D55 /* RoomIncomingTextMsgBubbleCell.h */, - B1B558A920EF768E00210D55 /* RoomIncomingTextMsgBubbleCell.m */, - B1B5587D20EF768E00210D55 /* RoomIncomingTextMsgBubbleCell.xib */, - B1B5588620EF768E00210D55 /* RoomIncomingTextMsgWithoutSenderInfoBubbleCell.h */, - B1B558B120EF768E00210D55 /* RoomIncomingTextMsgWithoutSenderInfoBubbleCell.m */, - B1B5588520EF768E00210D55 /* RoomIncomingTextMsgWithoutSenderInfoBubbleCell.xib */, - B1B558B720EF768E00210D55 /* RoomIncomingTextMsgWithoutSenderNameBubbleCell.h */, - B1B5588F20EF768E00210D55 /* RoomIncomingTextMsgWithoutSenderNameBubbleCell.m */, - B1B5589520EF768E00210D55 /* RoomIncomingTextMsgWithoutSenderNameBubbleCell.xib */, - B1B5588D20EF768E00210D55 /* RoomIncomingTextMsgWithPaginationTitleBubbleCell.h */, - B1B558A620EF768E00210D55 /* RoomIncomingTextMsgWithPaginationTitleBubbleCell.m */, - B1B5588C20EF768E00210D55 /* RoomIncomingTextMsgWithPaginationTitleBubbleCell.xib */, - B1B5588120EF768E00210D55 /* RoomIncomingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.h */, - B1B558A120EF768E00210D55 /* RoomIncomingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m */, - B1B5589F20EF768E00210D55 /* RoomIncomingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib */, - B1B5587C20EF768E00210D55 /* RoomMembershipBubbleCell.h */, - B1B558A420EF768E00210D55 /* RoomMembershipBubbleCell.m */, - B1B5584120EF768E00210D55 /* RoomMembershipBubbleCell.xib */, - B1B5589720EF768E00210D55 /* RoomMembershipCollapsedBubbleCell.h */, - B1B5587B20EF768E00210D55 /* RoomMembershipCollapsedBubbleCell.m */, - B1B5588E20EF768E00210D55 /* RoomMembershipCollapsedBubbleCell.xib */, - B1B5588420EF768E00210D55 /* RoomMembershipCollapsedWithPaginationTitleBubbleCell.h */, - B1B558B220EF768E00210D55 /* RoomMembershipCollapsedWithPaginationTitleBubbleCell.m */, - B1B5589120EF768E00210D55 /* RoomMembershipCollapsedWithPaginationTitleBubbleCell.xib */, - B1B558A020EF768E00210D55 /* RoomMembershipExpandedBubbleCell.h */, - B1B5588220EF768E00210D55 /* RoomMembershipExpandedBubbleCell.m */, - B1B558BA20EF768E00210D55 /* RoomMembershipExpandedBubbleCell.xib */, - B1B5588A20EF768E00210D55 /* RoomMembershipExpandedWithPaginationTitleBubbleCell.h */, - B1B558AB20EF768E00210D55 /* RoomMembershipExpandedWithPaginationTitleBubbleCell.m */, - B1B558A820EF768E00210D55 /* RoomMembershipExpandedWithPaginationTitleBubbleCell.xib */, - B1B558A220EF768E00210D55 /* RoomMembershipWithPaginationTitleBubbleCell.h */, - B1B5588020EF768E00210D55 /* RoomMembershipWithPaginationTitleBubbleCell.m */, - B1B558B420EF768E00210D55 /* RoomMembershipWithPaginationTitleBubbleCell.xib */, - B1B558B820EF768E00210D55 /* RoomOutgoingAttachmentBubbleCell.h */, - B1B5589020EF768E00210D55 /* RoomOutgoingAttachmentBubbleCell.m */, - B1B558B020EF768E00210D55 /* RoomOutgoingAttachmentBubbleCell.xib */, - B1B5587A20EF768E00210D55 /* RoomOutgoingAttachmentWithoutSenderInfoBubbleCell.h */, - B1B5589620EF768E00210D55 /* RoomOutgoingAttachmentWithoutSenderInfoBubbleCell.m */, - B1B558B920EF768E00210D55 /* RoomOutgoingAttachmentWithoutSenderInfoBubbleCell.xib */, - B1B558B520EF768E00210D55 /* RoomOutgoingAttachmentWithPaginationTitleBubbleCell.h */, - B1B5589320EF768E00210D55 /* RoomOutgoingAttachmentWithPaginationTitleBubbleCell.m */, - B1B558AD20EF768E00210D55 /* RoomOutgoingAttachmentWithPaginationTitleBubbleCell.xib */, - B1B5589920EF768E00210D55 /* RoomOutgoingTextMsgBubbleCell.h */, - B1B5587920EF768E00210D55 /* RoomOutgoingTextMsgBubbleCell.m */, - B1B5589D20EF768E00210D55 /* RoomOutgoingTextMsgBubbleCell.xib */, - B1B5589820EF768E00210D55 /* RoomOutgoingTextMsgWithoutSenderInfoBubbleCell.h */, - B1B5587820EF768E00210D55 /* RoomOutgoingTextMsgWithoutSenderInfoBubbleCell.m */, - B1B5584020EF768E00210D55 /* RoomOutgoingTextMsgWithoutSenderInfoBubbleCell.xib */, - B1B5587E20EF768E00210D55 /* RoomOutgoingTextMsgWithoutSenderNameBubbleCell.h */, - B1B558A320EF768E00210D55 /* RoomOutgoingTextMsgWithoutSenderNameBubbleCell.m */, - B1B558AA20EF768E00210D55 /* RoomOutgoingTextMsgWithoutSenderNameBubbleCell.xib */, - B1B5587620EF768E00210D55 /* RoomOutgoingTextMsgWithPaginationTitleBubbleCell.h */, - B1B5589C20EF768E00210D55 /* RoomOutgoingTextMsgWithPaginationTitleBubbleCell.m */, - B1B5588920EF768E00210D55 /* RoomOutgoingTextMsgWithPaginationTitleBubbleCell.xib */, - B1B5587520EF768E00210D55 /* RoomOutgoingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.h */, - B1B5589B20EF768E00210D55 /* RoomOutgoingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m */, - B1B558B320EF768E00210D55 /* RoomOutgoingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib */, - B1B558AC20EF768E00210D55 /* RoomSelectedStickerBubbleCell.h */, - B1B5588820EF768E00210D55 /* RoomSelectedStickerBubbleCell.m */, - B1B558AE20EF768E00210D55 /* RoomSelectedStickerBubbleCell.xib */, - B1D250D62118AA0A000F4E93 /* RoomPredecessorBubbleCell.h */, - B1D250D72118AA0A000F4E93 /* RoomPredecessorBubbleCell.m */, - B1B9194A2118984300FE25B5 /* RoomPredecessorBubbleCell.xib */, - ); - path = BubbleCells; - sourceTree = ""; - }; - B1B5584220EF768E00210D55 /* Encryption */ = { - isa = PBXGroup; - children = ( - B1A68592229E807800D6C09A /* RoomBubbleCellLayout.swift */, - B1B5584320EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithPaginationTitleBubbleCell.h */, - B1B5584420EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.h */, - B1B5584520EF768E00210D55 /* RoomOutgoingEncryptedAttachmentBubbleCell.h */, - B1B5584620EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithoutSenderNameBubbleCell.m */, - B1B5584720EF768E00210D55 /* RoomOutgoingEncryptedAttachmentWithPaginationTitleBubbleCell.m */, - B1B5584820EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithoutSenderNameBubbleCell.xib */, - B1B5584920EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithoutSenderInfoBubbleCell.xib */, - B1B5584A20EF768E00210D55 /* RoomOutgoingEncryptedAttachmentWithoutSenderInfoBubbleCell.h */, - B1B5584B20EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithoutSenderInfoBubbleCell.h */, - B1B5584C20EF768E00210D55 /* RoomIncomingEncryptedAttachmentWithPaginationTitleBubbleCell.m */, - B1B5584D20EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithoutSenderInfoBubbleCell.h */, - B1B5584E20EF768E00210D55 /* RoomOutgoingEncryptedTextMsgBubbleCell.h */, - B1B5584F20EF768E00210D55 /* RoomIncomingEncryptedTextMsgBubbleCell.xib */, - B1B5585020EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithoutSenderNameBubbleCell.m */, - B1B5585120EF768E00210D55 /* RoomEncryptedDataBubbleCell.h */, - B1B5585220EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m */, - B1B5585320EF768E00210D55 /* RoomOutgoingEncryptedTextMsgBubbleCell.xib */, - B1B5585420EF768E00210D55 /* RoomIncomingEncryptedAttachmentBubbleCell.xib */, - B1B5585520EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithPaginationTitleBubbleCell.m */, - B1B5585620EF768E00210D55 /* RoomIncomingEncryptedAttachmentBubbleCell.m */, - B1B5585720EF768E00210D55 /* RoomIncomingEncryptedTextMsgBubbleCell.h */, - B1B5585820EF768E00210D55 /* RoomIncomingEncryptedAttachmentWithoutSenderInfoBubbleCell.m */, - B1B5585920EF768E00210D55 /* RoomOutgoingEncryptedAttachmentWithoutSenderInfoBubbleCell.xib */, - B1B5585A20EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithoutSenderInfoBubbleCell.m */, - B1B5585B20EF768E00210D55 /* RoomOutgoingEncryptedAttachmentWithoutSenderInfoBubbleCell.m */, - B1B5585C20EF768E00210D55 /* RoomOutgoingEncryptedAttachmentWithPaginationTitleBubbleCell.xib */, - B1B5585D20EF768E00210D55 /* RoomOutgoingEncryptedAttachmentWithPaginationTitleBubbleCell.h */, - B1B5585E20EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithoutSenderNameBubbleCell.h */, - B1B5585F20EF768E00210D55 /* RoomOutgoingEncryptedAttachmentBubbleCell.m */, - B1B5586020EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithPaginationTitleBubbleCell.m */, - B1B5586120EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m */, - B1B5586220EF768E00210D55 /* RoomIncomingEncryptedAttachmentWithoutSenderInfoBubbleCell.xib */, - B1B5586320EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.h */, - B1B5586420EF768E00210D55 /* RoomEncryptedDataBubbleCell.m */, - B1B5586520EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithoutSenderNameBubbleCell.h */, - B1B5586620EF768E00210D55 /* RoomOutgoingEncryptedTextMsgBubbleCell.m */, - B1B5586720EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithoutSenderInfoBubbleCell.m */, - B1B5586820EF768E00210D55 /* RoomIncomingEncryptedAttachmentWithPaginationTitleBubbleCell.h */, - B1B5586920EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib */, - B1B5586A20EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib */, - B1B5586B20EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithPaginationTitleBubbleCell.xib */, - B1B5586C20EF768E00210D55 /* RoomIncomingEncryptedAttachmentWithPaginationTitleBubbleCell.xib */, - B1B5586D20EF768E00210D55 /* RoomOutgoingEncryptedAttachmentBubbleCell.xib */, - B1B5586E20EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithPaginationTitleBubbleCell.h */, - B1B5586F20EF768E00210D55 /* RoomOutgoingEncryptedTextMsgWithoutSenderInfoBubbleCell.xib */, - B1B5587020EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithoutSenderNameBubbleCell.xib */, - B1B5587120EF768E00210D55 /* RoomIncomingEncryptedAttachmentWithoutSenderInfoBubbleCell.h */, - B1B5587220EF768E00210D55 /* RoomIncomingEncryptedTextMsgWithPaginationTitleBubbleCell.xib */, - B1B5587320EF768E00210D55 /* RoomIncomingEncryptedTextMsgBubbleCell.m */, - B1B5587420EF768E00210D55 /* RoomIncomingEncryptedAttachmentBubbleCell.h */, - ); - path = Encryption; - sourceTree = ""; - }; - B1B5592720EF7A5D00210D55 /* Cells */ = { - isa = PBXGroup; - children = ( - B1B5592820EF7A5D00210D55 /* TableViewCellWithButton.h */, - B1B5592A20EF7A5D00210D55 /* TableViewCellWithButton.m */, - B1B5592920EF7A5D00210D55 /* TableViewCellWithButton.xib */, - ECF57A58250925AC004BBF9D /* TextFieldTableViewCell.swift */, - ECF57A59250925AC004BBF9D /* TextFieldTableViewCell.xib */, - ECF57A86250A6872004BBF9D /* TextViewTableViewCell.swift */, - ECF57A88250A687B004BBF9D /* TextViewTableViewCell.xib */, - ); - path = Cells; - sourceTree = ""; - }; - B1B5592D20EF7BAC00210D55 /* Views */ = { - isa = PBXGroup; - children = ( - B1B5593120EF7BAC00210D55 /* TableViewCellWithCheckBoxAndLabel.h */, - B1B5593420EF7BAC00210D55 /* TableViewCellWithCheckBoxAndLabel.m */, - B1B5592E20EF7BAC00210D55 /* TableViewCellWithCheckBoxAndLabel.xib */, - B1B5593020EF7BAC00210D55 /* TableViewCellWithCheckBoxes.h */, - B1B5593520EF7BAC00210D55 /* TableViewCellWithCheckBoxes.m */, - B1B5593220EF7BAC00210D55 /* TableViewCellWithCheckBoxes.xib */, - B1B5593620EF7BAC00210D55 /* TableViewCellWithLabelAndLargeTextView.h */, - B1B5592F20EF7BAC00210D55 /* TableViewCellWithLabelAndLargeTextView.m */, - B1B5593320EF7BAC00210D55 /* TableViewCellWithLabelAndLargeTextView.xib */, - ); - path = Views; - sourceTree = ""; - }; - B1B5593D20EF7BD000210D55 /* Views */ = { - isa = PBXGroup; - children = ( - B1B5593E20EF7BD000210D55 /* RoomCollectionViewCell.h */, - B1B5594220EF7BD000210D55 /* RoomCollectionViewCell.m */, - B1B5594120EF7BD000210D55 /* RoomCollectionViewCell.xib */, - B1B5594320EF7BD000210D55 /* TableViewCellWithCollectionView.h */, - B1B5594020EF7BD000210D55 /* TableViewCellWithCollectionView.m */, - B1B5593F20EF7BD000210D55 /* TableViewCellWithCollectionView.xib */, - ); - path = Views; - sourceTree = ""; - }; - B1B5594E20EF9A8600210D55 /* Views */ = { - isa = PBXGroup; - children = ( - EC85D7382477DDB8002C44C9 /* DirectorySectionHeaderContainerView.h */, - EC85D7392477DDB8002C44C9 /* DirectorySectionHeaderContainerView.m */, - B1B5594F20EF9A8600210D55 /* RecentTableViewCell.h */, - B1B5595020EF9A8600210D55 /* RecentTableViewCell.m */, - B1B5595120EF9A8600210D55 /* RecentTableViewCell.xib */, - B11F4D2025681500009F1586 /* RootTabEmptyView.swift */, - B11F4D1E256814E5009F1586 /* RootTabEmptyView.xib */, - ); - path = Views; - sourceTree = ""; - }; - B1B5596120EF9E9A00210D55 /* Views */ = { - isa = PBXGroup; - children = ( - B1B5596220EF9E9A00210D55 /* RoomTableViewCell.h */, - B1B5596420EF9E9A00210D55 /* RoomTableViewCell.m */, - B1B5596320EF9E9A00210D55 /* RoomTableViewCell.xib */, - ); - path = Views; - sourceTree = ""; - }; - B1B5596B20EFA85C00210D55 /* EncryptionInfo */ = { - isa = PBXGroup; - children = ( - B1B5596D20EFA85C00210D55 /* EncryptionInfoView.h */, - B1B5596C20EFA85C00210D55 /* EncryptionInfoView.m */, - B1B5596E20EFA85C00210D55 /* EncryptionInfoView.xib */, - ); - path = EncryptionInfo; - sourceTree = ""; - }; - B1B5597120EFB02900210D55 /* Views */ = { - isa = PBXGroup; - children = ( - B1B5597420EFB02900210D55 /* InviteRecentTableViewCell.h */, - B1F9072E255CE06000DD14E5 /* InviteRecentTableViewCell+ButtonViewsUpdate.swift */, - B1B5597220EFB02900210D55 /* InviteRecentTableViewCell.m */, - B1B5597320EFB02900210D55 /* InviteRecentTableViewCell.xib */, - ); - path = Views; - sourceTree = ""; - }; - B1B5597C20EFC3DF00210D55 /* Managers */ = { - isa = PBXGroup; - children = ( - 3AA7D00A2587FEE500420A72 /* EncryptionKeyManager */, - EC1CA87824C8840B00DE9EBF /* LocalAuthentication */, - EC1CA87324C8257F00DE9EBF /* KeyValueStorage */, - B185145324B7CF9500EE19EA /* AppVersion */, - EC85D73B2477DDD0002C44C9 /* PushNotification */, - B12C56ED2396CB0100FAC6DE /* RoomMessageLinkParser */, - B1B9DED822E9B7120065E677 /* Serialization */, - B1FDF56321F68C0700BA3834 /* PasswordStrength */, - B1798300211B137B001FD722 /* OnBoarding */, - B1B5598B20EFC5E400210D55 /* Analytics */, - B1B5598920EFC41100210D55 /* BugReport */, - B1B5598A20EFC42100210D55 /* Settings */, - 32242F0B21E8FBA900725742 /* Theme */, - B1B5598020EFC3DF00210D55 /* Widgets */, - B180A645255DF59800F5E6FF /* Room */, - ); - path = Managers; - sourceTree = ""; - }; - B1B5598020EFC3DF00210D55 /* Widgets */ = { - isa = PBXGroup; - children = ( - EC85D72D2477DD33002C44C9 /* JSONModels */, - B1B5598220EFC3DF00210D55 /* WidgetManager.h */, - B1B5598420EFC3DF00210D55 /* WidgetManager.m */, - B1B5598120EFC3DF00210D55 /* Widget.h */, - B1B5598320EFC3DF00210D55 /* Widget.m */, - 322C110722BBC6F80043FEAC /* WidgetManagerConfig.swift */, - ); - path = Widgets; - sourceTree = ""; - }; - B1B5598920EFC41100210D55 /* BugReport */ = { - isa = PBXGroup; - children = ( - B1B5597D20EFC3DF00210D55 /* RageShakeManager.h */, - B1B5597E20EFC3DF00210D55 /* RageShakeManager.m */, - ); - path = BugReport; - sourceTree = ""; - }; - B1B5598A20EFC42100210D55 /* Settings */ = { - isa = PBXGroup; - children = ( - 32863A572384070300D07C4A /* Shared */, - B1B5597F20EFC3DF00210D55 /* RiotSettings.swift */, - ); - path = Settings; - sourceTree = ""; - }; - B1B5598B20EFC5E400210D55 /* Analytics */ = { - isa = PBXGroup; - children = ( - B1B5599020EFC5E400210D55 /* Analytics.h */, - B1B5598C20EFC5E400210D55 /* Analytics.m */, - B1B5598F20EFC5E400210D55 /* DecryptionFailure.h */, - B1B5598D20EFC5E400210D55 /* DecryptionFailure.m */, - B1B5598E20EFC5E400210D55 /* DecryptionFailureTracker.h */, - B1B5599120EFC5E400210D55 /* DecryptionFailureTracker.m */, - ); - path = Analytics; - sourceTree = ""; - }; - B1B9DED722E9B56C0065E677 /* EmojiMart */ = { - isa = PBXGroup; - children = ( - B1DCC62922E60D1000625807 /* EmojiMartService.swift */, - B1DCC63822E85E9A00625807 /* EmojiMartStore.swift */, - B1DCC63A22E85EF800625807 /* EmojiMartCategory.swift */, - B1DCC63E22E9A3AE00625807 /* EmojiItem+EmojiMart.swift */, - ); - path = EmojiMart; - sourceTree = ""; - }; - B1B9DED822E9B7120065E677 /* Serialization */ = { - isa = PBXGroup; - children = ( - B1B9DEDB22E9B7440065E677 /* SerializationServiceType.swift */, - B1B9DED922E9B7350065E677 /* SerializationService.swift */, - ); - path = Serialization; - sourceTree = ""; - }; - B1B9DEDF22EB34ED0065E677 /* ReactionHistory */ = { - isa = PBXGroup; - children = ( - B120863622EF375F001F89E0 /* ReactionHistoryBridgeCoordinatorPresenter.swift */, - B1B9DEE022EB34ED0065E677 /* ReactionHistoryCoordinatorType.swift */, - B1B9DEE522EB34EE0065E677 /* ReactionHistoryCoordinator.swift */, - B1B9DEE122EB34EE0065E677 /* ReactionHistoryViewController.swift */, - B1B9DEE222EB34EE0065E677 /* ReactionHistoryViewController.storyboard */, - B1B9DEE422EB34EE0065E677 /* ReactionHistoryViewModelType.swift */, - B1B9DEE322EB34EE0065E677 /* ReactionHistoryViewModel.swift */, - B1B9DEE622EB34EE0065E677 /* ReactionHistoryViewAction.swift */, - B1B9DEE722EB34EE0065E677 /* ReactionHistoryViewState.swift */, - B1B9DEF022EB396B0065E677 /* ReactionHistoryViewData.swift */, - B1B9DEF222EB426D0065E677 /* ReactionHistoryViewCell.swift */, - B1B9DEF322EB426D0065E677 /* ReactionHistoryViewCell.xib */, - ); - path = ReactionHistory; - sourceTree = ""; - }; - B1BB648724FD07B3008238AE /* Application */ = { - isa = PBXGroup; - children = ( - B1BB649224FD428A008238AE /* AppDelegate.swift */, - F083BB0C1E7009EC00A9B29C /* LegacyAppDelegate.h */, - F083BB0D1E7009EC00A9B29C /* LegacyAppDelegate.m */, - B10A3E9224FE8254007C380F /* AppCoordinatorType.swift */, - B10A3E9124FE8254007C380F /* AppCoordinator.swift */, - ); - path = Application; - sourceTree = ""; - }; - B1BEE71723DF2B8A0003A4CB /* SessionsStatus */ = { - isa = PBXGroup; - children = ( - B1BEE73323DF44A60003A4CB /* UserVerificationSessionsStatusCoordinator.swift */, - B1BEE72E23DF44A30003A4CB /* UserVerificationSessionsStatusCoordinatorType.swift */, - B1BEE73023DF44A40003A4CB /* UserVerificationSessionsStatusViewAction.swift */, - B1BEE73223DF44A50003A4CB /* UserVerificationSessionsStatusViewController.storyboard */, - B1BEE73123DF44A50003A4CB /* UserVerificationSessionsStatusViewController.swift */, - B1BEE72D23DF44A30003A4CB /* UserVerificationSessionsStatusViewModel.swift */, - B1BEE72C23DF44A20003A4CB /* UserVerificationSessionsStatusViewModelType.swift */, - B1BEE72F23DF44A40003A4CB /* UserVerificationSessionsStatusViewState.swift */, - B1BEE72823DF38B10003A4CB /* UserVerificationSessionStatusCell.swift */, - B1BEE72923DF38B20003A4CB /* UserVerificationSessionStatusCell.xib */, - ); - path = SessionsStatus; - sourceTree = ""; - }; - B1BEE73D23E08AC30003A4CB /* SessionStatus */ = { - isa = PBXGroup; - children = ( - B1BEE74523E093260003A4CB /* UserVerificationSessionStatusCoordinator.swift */, - B1BEE74223E093240003A4CB /* UserVerificationSessionStatusCoordinatorType.swift */, - B1BEE74323E093250003A4CB /* UserVerificationSessionStatusViewAction.swift */, - B1BEE74123E093230003A4CB /* UserVerificationSessionStatusViewController.storyboard */, - B1BEE74423E093250003A4CB /* UserVerificationSessionStatusViewController.swift */, - B1BEE74023E093230003A4CB /* UserVerificationSessionStatusViewModel.swift */, - B1BEE73F23E093230003A4CB /* UserVerificationSessionStatusViewModelType.swift */, - B1BEE73E23E093220003A4CB /* UserVerificationSessionStatusViewState.swift */, - ); - path = SessionStatus; - sourceTree = ""; - }; - B1C3361A22F328AE0021BA8D /* Camera */ = { - isa = PBXGroup; - children = ( - B1C335CC22F1C1320021BA8D /* CameraPresenter.swift */, - B183226723F561380035B2E8 /* CameraAccessAlertPresenter.swift */, - B183226523F55D6B0035B2E8 /* CameraAccessManager.swift */, - ); - path = Camera; - sourceTree = ""; - }; - B1C45A7A232A8C2600165425 /* IdentityServer */ = { - isa = PBXGroup; - children = ( - B1C45A81232A8C2600165425 /* SettingsIdentityServerCoordinatorBridgePresenter.swift */, - B1C45A7B232A8C2600165425 /* SettingsIdentityServerCoordinatorType.swift */, - B1C45A7E232A8C2600165425 /* SettingsIdentityServerCoordinator.swift */, - B1C45A7D232A8C2600165425 /* SettingsIdentityServerViewModelType.swift */, - B1C45A82232A8C2600165425 /* SettingsIdentityServerViewModel.swift */, - B1C45A83232A8C2600165425 /* SettingsIdentityServerViewAction.swift */, - B1C45A7F232A8C2600165425 /* SettingsIdentityServerViewState.swift */, - B1C45A80232A8C2600165425 /* SettingsIdentityServerViewController.swift */, - B1C45A7C232A8C2600165425 /* SettingsIdentityServerViewController.storyboard */, - ); - path = IdentityServer; - sourceTree = ""; - }; - B1C562D7228C0B4C0037F12A /* ContextualMenu */ = { - isa = PBXGroup; - children = ( - 32B94DF0228EC26400716A26 /* ReactionsMenu */, - B1C562DA228C0BB00037F12A /* RoomContextualMenuAction.swift */, - B1C562D8228C0B760037F12A /* RoomContextualMenuItem.swift */, - B1C562DE228C7C8B0037F12A /* RoomContextualMenuPresenter.swift */, - B1C562DD228C7C8A0037F12A /* RoomContextualMenuViewController.swift */, - B1C562E0228C7C8C0037F12A /* RoomContextualMenuViewController.storyboard */, - B1C562E6228C7CF10037F12A /* ContextualMenuItemView.swift */, - B1C562E7228C7CF20037F12A /* ContextualMenuItemView.xib */, - B1C562DC228C7C890037F12A /* RoomContextualMenuToolbarView.swift */, - B1C562DF228C7C8C0037F12A /* RoomContextualMenuToolbarView.xib */, - ); - path = ContextualMenu; - sourceTree = ""; - }; - B1CE83B4242259ED00D07506 /* Common */ = { - isa = PBXGroup; - children = ( - EC85D70B2477DCD7002C44C9 /* ScanConfirmation */, - 32891D72226728EE00C82226 /* Loading */, - B1CE83BE2422817100D07506 /* Verify */, - B1CE83BB2422817000D07506 /* Verified */, - B1CE83B72422815900D07506 /* KeyVerificationKind.swift */, - B18DEDDC2433967C0075FEF7 /* KeyVerificationFlow.swift */, - B1CE83B82422815A00D07506 /* KeyVerificationService.swift */, - 3232AB95225730E100AD6A5C /* KeyVerificationCoordinatorType.swift */, - 3232ABA0225730E100AD6A5C /* KeyVerificationCoordinator.swift */, - B1CE83B52422812000D07506 /* KeyVerificationCoordinatorBridgePresenter.swift */, - ); - path = Common; - sourceTree = ""; - }; - B1CE83BB2422817000D07506 /* Verified */ = { - isa = PBXGroup; - children = ( - B1CE83BC2422817000D07506 /* KeyVerificationVerifiedViewController.storyboard */, - B1CE83BD2422817000D07506 /* KeyVerificationVerifiedViewController.swift */, - ); - path = Verified; - sourceTree = ""; - }; - B1CE83BE2422817100D07506 /* Verify */ = { - isa = PBXGroup; - children = ( - B1CE83BF2422817100D07506 /* Scanning */, - B1CE83C82422817100D07506 /* SAS */, - ); - path = Verify; - sourceTree = ""; - }; - B1CE83BF2422817100D07506 /* Scanning */ = { - isa = PBXGroup; - children = ( - B1CE83C32422817100D07506 /* KeyVerificationVerifyByScanningCoordinatorType.swift */, - B1CE83C12422817100D07506 /* KeyVerificationVerifyByScanningCoordinator.swift */, - B1CE83C42422817100D07506 /* KeyVerificationVerifyByScanningViewAction.swift */, - B1CE83C72422817100D07506 /* KeyVerificationVerifyByScanningViewState.swift */, - B1CE83C22422817100D07506 /* KeyVerificationVerifyByScanningViewModelType.swift */, - B1CE83C52422817100D07506 /* KeyVerificationVerifyByScanningViewModel.swift */, - B1CE83C02422817100D07506 /* KeyVerificationVerifyByScanningViewController.swift */, - B1CE83C62422817100D07506 /* KeyVerificationVerifyByScanningViewController.storyboard */, - ); - path = Scanning; - sourceTree = ""; - }; - B1CE83C82422817100D07506 /* SAS */ = { - isa = PBXGroup; - children = ( - B1CE83CF2422817100D07506 /* Views */, - B1CE83CB2422817100D07506 /* KeyVerificationVerifyBySASCoordinatorType.swift */, - B1CE83CD2422817100D07506 /* KeyVerificationVerifyBySASCoordinator.swift */, - B1CE83C92422817100D07506 /* KeyVerificationVerifyBySASViewAction.swift */, - B1CE83CE2422817100D07506 /* KeyVerificationVerifyBySASViewState.swift */, - B1CE83CA2422817100D07506 /* KeyVerificationVerifyBySASViewModelType.swift */, - B1CE83D22422817100D07506 /* KeyVerificationVerifyBySASViewModel.swift */, - B1CE83CC2422817100D07506 /* KeyVerificationVerifyBySASViewController.swift */, - B1CE83D12422817100D07506 /* KeyVerificationVerifyBySASViewController.storyboard */, - ); - path = SAS; - sourceTree = ""; - }; - B1CE83CF2422817100D07506 /* Views */ = { - isa = PBXGroup; - children = ( - B1CE83D02422817100D07506 /* VerifyEmojiCollectionViewCell.swift */, - ); - path = Views; - sourceTree = ""; - }; - B1CE9EFB22148681000FAE6A /* SignOut */ = { - isa = PBXGroup; - children = ( - B1CE9EFC22148703000FAE6A /* SignOutAlertPresenter.swift */, - ); - path = SignOut; - sourceTree = ""; - }; - B1CE9F042216FB09000FAE6A /* ManualExport */ = { - isa = PBXGroup; - children = ( - B1CE9F052216FB09000FAE6A /* EncryptionKeysExportPresenter.swift */, - ); - path = ManualExport; - sourceTree = ""; - }; - B1D4752421EE4E620067973F /* KeyboardAvoiding */ = { - isa = PBXGroup; - children = ( - B1D4752521EE4E620067973F /* KeyboardAvoider.swift */, - B1D4752621EE4E620067973F /* KeyboardNotification.swift */, - ); - path = KeyboardAvoiding; - sourceTree = ""; - }; - B1DCC64022E9B37400625807 /* Store */ = { - isa = PBXGroup; - children = ( - B1DCC63622E8541700625807 /* EmojiStore.swift */, - B1DCC62722E60CE300625807 /* EmojiCategory.swift */, - B1DCC62522E60CC600625807 /* EmojiItem.swift */, - ); - path = Store; - sourceTree = ""; - }; - B1E5368A21FB6FC0001F3AFF /* Passphrase */ = { - isa = PBXGroup; - children = ( - B139C22221FF01B200BB68EC /* KeyBackupRecoverFromPassphraseCoordinatorType.swift */, - B139C22421FF01C100BB68EC /* KeyBackupRecoverFromPassphraseCoordinator.swift */, - B139C21C21FE5BF500BB68EC /* KeyBackupRecoverFromPassphraseViewModelType.swift */, - B139C21A21FE5B9100BB68EC /* KeyBackupRecoverFromPassphraseViewModel.swift */, - B139C21E21FE5D6600BB68EC /* KeyBackupRecoverFromPassphraseViewAction.swift */, - B139C22021FE5D9D00BB68EC /* KeyBackupRecoverFromPassphraseViewState.swift */, - B1E5368C21FB7245001F3AFF /* KeyBackupRecoverFromPassphraseViewController.swift */, - B1E5368E21FB7258001F3AFF /* KeyBackupRecoverFromPassphraseViewController.storyboard */, - ); - path = Passphrase; - sourceTree = ""; - }; - B1FDF56321F68C0700BA3834 /* PasswordStrength */ = { - isa = PBXGroup; - children = ( - B1098BEB21ECFE64000DDA48 /* PasswordStrength.swift */, - B1098BF121ECFE64000DDA48 /* PasswordStrengthManager.swift */, - ); - path = PasswordStrength; - sourceTree = ""; - }; - B1FDF56421F726AD00BA3834 /* Recover */ = { - isa = PBXGroup; - children = ( - B19EFA3821F8BB2C00FC070E /* KeyBackupRecoverCoordinatorType.swift */, - B19EFA3A21F8BB4100FC070E /* KeyBackupRecoverCoordinator.swift */, - B140B4A721F8AB4600E3F5FE /* KeyBackupRecoverCoordinatorBridgePresenter.swift */, - 32607D63243E0A55006674CC /* PrivateKey */, - B1E5368A21FB6FC0001F3AFF /* Passphrase */, - B14F142522144F6400FA0595 /* RecoveryKey */, - B1107EC62200B0190038014B /* Success */, - ); - path = Recover; - sourceTree = ""; - }; - EC1CA84F24C1DEC400DE9EBF /* SetPinCode */ = { - isa = PBXGroup; - children = ( - EC1CA88C24C9C9A200DE9EBF /* SetupBiometrics */, - EC1CA85024C1DEC400DE9EBF /* EnterPinCode */, - EC1CA85A24C1DEC400DE9EBF /* SetPinCoordinatorBridgePresenter.swift */, - EC1CA85B24C1DEC400DE9EBF /* SetPinCoordinator.swift */, - EC1CA85E24C1DEC400DE9EBF /* SetPinCoordinatorType.swift */, - EC1CA86D24C5BA4500DE9EBF /* PinCodePreferences.swift */, - ); - path = SetPinCode; - sourceTree = ""; - }; - EC1CA85024C1DEC400DE9EBF /* EnterPinCode */ = { - isa = PBXGroup; - children = ( - EC1CA85124C1DEC400DE9EBF /* EnterPinCodeViewModelType.swift */, - EC1CA85224C1DEC400DE9EBF /* EnterPinCodeViewAction.swift */, - EC1CA85324C1DEC400DE9EBF /* EnterPinCodeViewModel.swift */, - EC1CA85424C1DEC400DE9EBF /* EnterPinCodeViewState.swift */, - EC1CA85524C1DEC400DE9EBF /* EnterPinCodeCoordinatorType.swift */, - EC1CA85624C1DEC400DE9EBF /* EnterPinCodeCoordinator.swift */, - EC1CA85724C1DEC400DE9EBF /* EnterPinCodeViewController.storyboard */, - EC1CA85824C1DEC400DE9EBF /* EnterPinCodeViewController.swift */, - ); - path = EnterPinCode; - sourceTree = ""; - }; - EC1CA87324C8257F00DE9EBF /* KeyValueStorage */ = { - isa = PBXGroup; - children = ( - EC1CA87124C823E700DE9EBF /* KeyValueStore.swift */, - EC1CA87424C8259700DE9EBF /* KeychainStore.swift */, - EC1CA87624C82D0E00DE9EBF /* MemoryStore.swift */, - ECB5D98D255420EA000AD89C /* Extensions */, - ); - path = KeyValueStorage; - sourceTree = ""; - }; - EC1CA87824C8840B00DE9EBF /* LocalAuthentication */ = { - isa = PBXGroup; - children = ( - EC1CA87924C8841C00DE9EBF /* LocalAuthenticationService.swift */, - ); - path = LocalAuthentication; - sourceTree = ""; - }; - EC1CA88C24C9C9A200DE9EBF /* SetupBiometrics */ = { - isa = PBXGroup; - children = ( - EC31F0992524A60E00D407DA /* BiometricsAuthenticationPresenter.swift */, - EC1CA88D24C9C9A200DE9EBF /* SetupBiometricsViewController.swift */, - EC1CA88E24C9C9A200DE9EBF /* SetupBiometricsCoordinator.swift */, - EC1CA88F24C9C9A200DE9EBF /* SetupBiometricsViewModelType.swift */, - EC1CA89024C9C9A200DE9EBF /* SetupBiometricsViewAction.swift */, - EC1CA89124C9C9A200DE9EBF /* SetupBiometricsViewController.storyboard */, - EC1CA89224C9C9A200DE9EBF /* SetupBiometricsCoordinatorType.swift */, - EC1CA89324C9C9A200DE9EBF /* SetupBiometricsViewState.swift */, - EC1CA89424C9C9A200DE9EBF /* SetupBiometricsViewModel.swift */, - ); - path = SetupBiometrics; - sourceTree = ""; - }; - EC3B066324AC6ADD000DF9BF /* CrossSigning */ = { - isa = PBXGroup; - children = ( - EC3B066424AC6ADD000DF9BF /* CrossSigningService.swift */, - EC3B066524AC6ADD000DF9BF /* Banners */, - ); - path = CrossSigning; - sourceTree = ""; - }; - EC3B066524AC6ADD000DF9BF /* Banners */ = { - isa = PBXGroup; - children = ( - EC3B066624AC6ADD000DF9BF /* CrossSigningSetupBannerCell.xib */, - EC3B066724AC6ADD000DF9BF /* CrossSigningBannerPreferences.swift */, - EC3B066824AC6ADD000DF9BF /* CrossSigningSetupBannerCell.swift */, - ); - path = Banners; - sourceTree = ""; - }; - EC49F5F32514FFCA003894A6 /* Views */ = { - isa = PBXGroup; - children = ( - EC49F5F82515016F003894A6 /* RoomInfoBasicViewData.swift */, - EC31F013251B53AD00D407DA /* RoomInfoBasicView.swift */, - EC31F015251B53BC00D407DA /* RoomInfoBasicView.xib */, - ); - path = Views; - sourceTree = ""; - }; - EC51E78B250FC12A00AAE7DB /* Models */ = { - isa = PBXGroup; - children = ( - EC51E78C250FC15000AAE7DB /* RoomCreationEventRowViewModel.swift */, - ); - path = Models; - sourceTree = ""; - }; - EC51E78E2510B7B900AAE7DB /* TableView */ = { - isa = PBXGroup; - children = ( - EC51E78F2510B7C700AAE7DB /* AutosizedTableView.swift */, - ); - path = TableView; - sourceTree = ""; - }; - EC51E79C2514D2E100AAE7DB /* RoomInfoList */ = { - isa = PBXGroup; - children = ( - EC49F5F32514FFCA003894A6 /* Views */, - EC51E79D2514D2E100AAE7DB /* RoomInfoListViewController.swift */, - EC51E79E2514D2E100AAE7DB /* RoomInfoListViewModelType.swift */, - EC51E79F2514D2E100AAE7DB /* RoomInfoListViewController.storyboard */, - EC51E7A02514D2E100AAE7DB /* RoomInfoListViewState.swift */, - EC31F011251B4DBD00D407DA /* RoomInfoListViewData.swift */, - EC51E7A12514D2E100AAE7DB /* RoomInfoListCoordinatorType.swift */, - EC51E7A22514D2E100AAE7DB /* RoomInfoListCoordinator.swift */, - EC51E7A32514D2E100AAE7DB /* RoomInfoListViewModel.swift */, - EC51E7A42514D2E100AAE7DB /* RoomInfoListViewAction.swift */, - ); - path = RoomInfoList; - sourceTree = ""; - }; - EC51E7B12514D34200AAE7DB /* RoomInfo */ = { - isa = PBXGroup; - children = ( - EC51E79B2514D2E000AAE7DB /* RoomInfoCoordinator.swift */, - EC51E79A2514D2E000AAE7DB /* RoomInfoCoordinatorBridgePresenter.swift */, - EC51E7A52514D2E100AAE7DB /* RoomInfoCoordinatorType.swift */, - EC51E79C2514D2E100AAE7DB /* RoomInfoList */, - ); - path = RoomInfo; - sourceTree = ""; - }; - EC711B4724A63B36008F830C /* Secrets */ = { - isa = PBXGroup; - children = ( - EC711B4824A63B36008F830C /* Setup */, - EC711B5C24A63B36008F830C /* Recover */, - B126767A2523E4D100BE6B98 /* Reset */, - ); - path = Secrets; - sourceTree = ""; - }; - EC711B4824A63B36008F830C /* Setup */ = { - isa = PBXGroup; - children = ( - EC711B4924A63B36008F830C /* RecoveryKey */, - EC711B5224A63B36008F830C /* RecoveryPassphrase */, - ); - path = Setup; - sourceTree = ""; - }; - EC711B4924A63B36008F830C /* RecoveryKey */ = { - isa = PBXGroup; - children = ( - EC711B4A24A63B36008F830C /* SecretsSetupRecoveryKeyViewModelType.swift */, - EC711B4B24A63B36008F830C /* SecretsSetupRecoveryKeyCoordinatorType.swift */, - EC711B4C24A63B36008F830C /* SecretsSetupRecoveryKeyViewState.swift */, - EC711B4D24A63B36008F830C /* SecretsSetupRecoveryKeyViewController.storyboard */, - EC711B4E24A63B36008F830C /* SecretsSetupRecoveryKeyViewModel.swift */, - EC711B4F24A63B36008F830C /* SecretsSetupRecoveryKeyViewController.swift */, - EC711B5024A63B36008F830C /* SecretsSetupRecoveryKeyViewAction.swift */, - EC711B5124A63B36008F830C /* SecretsSetupRecoveryKeyCoordinator.swift */, - ); - path = RecoveryKey; - sourceTree = ""; - }; - EC711B5224A63B36008F830C /* RecoveryPassphrase */ = { - isa = PBXGroup; - children = ( - EC711B5324A63B36008F830C /* SecretsSetupRecoveryPassphraseViewController.storyboard */, - EC711B5424A63B36008F830C /* SecretsSetupRecoveryPassphraseViewModel.swift */, - EC711B5524A63B36008F830C /* SecretsSetupRecoveryPassphraseCoordinatorType.swift */, - EC711B5624A63B36008F830C /* SecretsSetupRecoveryPassphraseViewController.swift */, - EC711B5724A63B36008F830C /* SecretsSetupRecoveryPassphraseViewState.swift */, - EC711B5824A63B36008F830C /* SecretsSetupRecoveryPassphraseViewAction.swift */, - EC711B5924A63B36008F830C /* SecretsSetupRecoveryPassphraseViewModelType.swift */, - EC711B5A24A63B36008F830C /* SecretsSetupRecoveryPassphraseCoordinator.swift */, - EC711B5B24A63B36008F830C /* SecretsSetupRecoveryPassphraseInputMode.swift */, - ); - path = RecoveryPassphrase; - sourceTree = ""; - }; - EC711B5C24A63B36008F830C /* Recover */ = { - isa = PBXGroup; - children = ( - EC711B5D24A63B36008F830C /* RecoverWithPassphrase */, - EC711B6624A63B36008F830C /* SecretsRecoveryGoal.swift */, - EC711B6724A63B36008F830C /* SecretsRecoveryMode.swift */, - EC711B6824A63B36008F830C /* RecoverWithKey */, - EC711B7124A63B36008F830C /* SecretsRecoveryCoordinatorType.swift */, - EC711B7224A63B36008F830C /* SecretsRecoveryCoordinatorBridgePresenter.swift */, - EC711B7324A63B36008F830C /* SecretsRecoveryCoordinator.swift */, - ); - path = Recover; - sourceTree = ""; - }; - EC711B5D24A63B36008F830C /* RecoverWithPassphrase */ = { - isa = PBXGroup; - children = ( - EC711B5E24A63B36008F830C /* SecretsRecoveryWithPassphraseCoordinator.swift */, - EC711B5F24A63B36008F830C /* SecretsRecoveryWithPassphraseCoordinatorType.swift */, - EC711B6024A63B36008F830C /* SecretsRecoveryWithPassphraseViewModelType.swift */, - EC711B6124A63B36008F830C /* SecretsRecoveryWithPassphraseViewAction.swift */, - EC711B6224A63B36008F830C /* SecretsRecoveryWithPassphraseViewModel.swift */, - EC711B6324A63B36008F830C /* SecretsRecoveryWithPassphraseViewController.swift */, - EC711B6424A63B36008F830C /* SecretsRecoveryWithPassphraseViewState.swift */, - EC711B6524A63B36008F830C /* SecretsRecoveryWithPassphraseViewController.storyboard */, - ); - path = RecoverWithPassphrase; - sourceTree = ""; - }; - EC711B6824A63B36008F830C /* RecoverWithKey */ = { - isa = PBXGroup; - children = ( - EC711B6924A63B36008F830C /* SecretsRecoveryWithKeyViewController.storyboard */, - EC711B6A24A63B36008F830C /* SecretsRecoveryWithKeyCoordinator.swift */, - EC711B6B24A63B36008F830C /* SecretsRecoveryWithKeyCoordinatorType.swift */, - EC711B6C24A63B36008F830C /* SecretsRecoveryWithKeyViewModel.swift */, - EC711B6D24A63B36008F830C /* SecretsRecoveryWithKeyViewController.swift */, - EC711B6E24A63B36008F830C /* SecretsRecoveryWithKeyViewAction.swift */, - EC711B6F24A63B36008F830C /* SecretsRecoveryWithKeyViewModelType.swift */, - EC711B7024A63B36008F830C /* SecretsRecoveryWithKeyViewState.swift */, - ); - path = RecoverWithKey; - sourceTree = ""; - }; - EC711B9A24A63B58008F830C /* SecureBackup */ = { - isa = PBXGroup; - children = ( - EC711B9B24A63B58008F830C /* Setup */, - EC711BA424A63B58008F830C /* Banners */, - ); - path = SecureBackup; - sourceTree = ""; - }; - EC711B9B24A63B58008F830C /* Setup */ = { - isa = PBXGroup; - children = ( - EC711B9C24A63B58008F830C /* SecureBackupSetupCoordinatorBridgePresenter.swift */, - EC711B9D24A63B58008F830C /* Intro */, - EC711BA224A63B58008F830C /* SecureBackupSetupCoordinator.swift */, - EC711BA324A63B58008F830C /* SecureBackupSetupCoordinatorType.swift */, - ); - path = Setup; - sourceTree = ""; - }; - EC711B9D24A63B58008F830C /* Intro */ = { - isa = PBXGroup; - children = ( - EC711B9E24A63B58008F830C /* SecureBackupSetupIntroCell.xib */, - EC711B9F24A63B58008F830C /* SecureBackupSetupIntroViewController.swift */, - EC711BA024A63B58008F830C /* SecureBackupSetupIntroCell.swift */, - EC711BA124A63B58008F830C /* SecureBackupSetupIntroViewController.storyboard */, - B1284E3D2535FEA6003529D7 /* SecureBackupSetupIntroViewModelType.swift */, - B1284E3F2535FEBA003529D7 /* SecureBackupSetupIntroViewModel.swift */, - ); - path = Intro; - sourceTree = ""; - }; - EC711BA424A63B58008F830C /* Banners */ = { - isa = PBXGroup; - children = ( - EC711BA524A63B58008F830C /* SecureBackupBannerCell.swift */, - EC711BA624A63B58008F830C /* SecureBackupBannerPreferences.swift */, - EC711BA824A63B58008F830C /* SecureBackupBannerCell.xib */, - ); - path = Banners; - sourceTree = ""; - }; - EC711BB424A63C11008F830C /* AuthenticatedSession */ = { - isa = PBXGroup; - children = ( - EC711BB524A63C11008F830C /* AuthenticatedSessionViewControllerFactory.swift */, - ); - path = AuthenticatedSession; - sourceTree = ""; - }; - EC85D70B2477DCD7002C44C9 /* ScanConfirmation */ = { - isa = PBXGroup; - children = ( - EC85D70C2477DCD7002C44C9 /* KeyVerificationScanConfirmationViewState.swift */, - EC85D70D2477DCD7002C44C9 /* KeyVerificationScanConfirmationViewController.swift */, - EC85D70E2477DCD7002C44C9 /* KeyVerificationScanConfirmationViewAction.swift */, - EC85D70F2477DCD7002C44C9 /* KeyVerificationScanConfirmationViewModel.swift */, - EC85D7102477DCD7002C44C9 /* KeyVerificationScanConfirmationViewModelType.swift */, - EC85D7112477DCD7002C44C9 /* KeyVerificationScanConfirmationViewController.storyboard */, - EC85D7122477DCD7002C44C9 /* KeyVerificationScanConfirmationCoordinator.swift */, - EC85D7132477DCD7002C44C9 /* KeyVerificationScanConfirmationCoordinatorType.swift */, - ); - path = ScanConfirmation; - sourceTree = ""; - }; - EC85D71C2477DCF2002C44C9 /* ManuallyVerify */ = { - isa = PBXGroup; - children = ( - EC85D71D2477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewAction.swift */, - EC85D71E2477DCF2002C44C9 /* KeyVerificationManuallyVerifyCoordinator.swift */, - EC85D71F2477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewController.swift */, - EC85D7202477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewController.storyboard */, - EC85D7212477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewModelType.swift */, - EC85D7222477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewModel.swift */, - EC85D7232477DCF2002C44C9 /* KeyVerificationManuallyVerifyCoordinatorType.swift */, - EC85D7242477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewState.swift */, - ); - path = ManuallyVerify; - sourceTree = ""; - }; - EC85D72D2477DD33002C44C9 /* JSONModels */ = { - isa = PBXGroup; - children = ( - EC85D72E2477DD33002C44C9 /* JitsiWidgetData.h */, - EC85D72F2477DD33002C44C9 /* JitsiWidgetData.m */, - ); - path = JSONModels; - sourceTree = ""; - }; - EC85D73B2477DDD0002C44C9 /* PushNotification */ = { - isa = PBXGroup; - children = ( - EC85D73C2477DDD0002C44C9 /* PushNotificationService.h */, - EC85D73D2477DDD0002C44C9 /* PushNotificationService.m */, - EC9A3EC424E1616900A8CFAE /* PushNotificationStore.swift */, - ); - path = PushNotification; - sourceTree = ""; - }; - EC85D7442477E5F7002C44C9 /* RiotNSE */ = { - isa = PBXGroup; - children = ( - EC85D74E2477E614002C44C9 /* RiotNSE.entitlements */, - EC85D7452477E5F7002C44C9 /* NotificationService.swift */, - EC85D7472477E5F7002C44C9 /* Info.plist */, - EC1CA8D924D811B400DE9EBF /* NSE-Common.xcconfig */, - EC1CA8BC24D1B4CF00DE9EBF /* NSE-Debug.xcconfig */, - EC1CA8BD24D1B4CF00DE9EBF /* NSE-Release.xcconfig */, - ); - path = RiotNSE; - sourceTree = ""; - }; - ECAE7AEA24EC223D002FA813 /* Models */ = { - isa = PBXGroup; - children = ( - B16DC234258A723B004DAB1A /* SourceImage.swift */, - ECAE7AE424EC0E01002FA813 /* TableViewSections.swift */, - ECAE7AE624EC15F7002FA813 /* Section.swift */, - ECAE7AE824EC1888002FA813 /* Row.swift */, - ); - path = Models; - sourceTree = ""; - }; - ECB5D98D255420EA000AD89C /* Extensions */ = { - isa = PBXGroup; - children = ( - ECB5D98E255420F8000AD89C /* Keychain.swift */, - ); - path = Extensions; - sourceTree = ""; - }; - ECF57A3725090C23004BBF9D /* CreateRoom */ = { - isa = PBXGroup; - children = ( - ECF57A3825090C23004BBF9D /* CreateRoomCoordinatorBridgePresenter.swift */, - ECF57A3925090C23004BBF9D /* CreateRoomCoordinatorType.swift */, - ECF57A3A25090C23004BBF9D /* CreateRoomCoordinator.swift */, - ECF57A5325091B3F004BBF9D /* Models */, - ECF57A3B25090C23004BBF9D /* EnterNewRoomDetails */, - ); - path = CreateRoom; - sourceTree = ""; - }; - ECF57A3B25090C23004BBF9D /* EnterNewRoomDetails */ = { - isa = PBXGroup; - children = ( - ECFBD5DD250B683300DD5F5A /* Cells */, - ECF57A3C25090C23004BBF9D /* EnterNewRoomDetailsViewController.storyboard */, - ECF57A3D25090C23004BBF9D /* EnterNewRoomDetailsCoordinatorType.swift */, - ECF57A3E25090C23004BBF9D /* EnterNewRoomDetailsViewState.swift */, - ECF57A3F25090C23004BBF9D /* EnterNewRoomDetailsViewController.swift */, - ECF57A4025090C23004BBF9D /* EnterNewRoomDetailsViewModel.swift */, - ECF57A4125090C23004BBF9D /* EnterNewRoomDetailsViewAction.swift */, - ECF57A4225090C23004BBF9D /* EnterNewRoomDetailsCoordinator.swift */, - ECF57A4325090C23004BBF9D /* EnterNewRoomDetailsViewModelType.swift */, - ); - path = EnterNewRoomDetails; - sourceTree = ""; - }; - ECF57A5325091B3F004BBF9D /* Models */ = { - isa = PBXGroup; - children = ( - ECF57A5425091B4D004BBF9D /* RoomCreationParameters.swift */, - ); - path = Models; - sourceTree = ""; - }; - ECF57A5C2509264B004BBF9D /* Views */ = { - isa = PBXGroup; - children = ( - ECF57A5D2509265A004BBF9D /* InsettedTextField.swift */, - ECF57A84250A64F0004BBF9D /* PlaceholderedTextView.swift */, - ); - path = Views; - sourceTree = ""; - }; - ECF57A5F25093B04004BBF9D /* SectionHeaders */ = { - isa = PBXGroup; - children = ( - ECF57A6025093B04004BBF9D /* SectionHeaderView.m */, - ECF57A6125093B04004BBF9D /* SectionHeaderView.h */, - ECFBD5DB250A82B200DD5F5A /* TextViewTableViewHeaderFooterView.swift */, - ); - path = SectionHeaders; - sourceTree = ""; - }; - ECFBD5B6250A7AAF00DD5F5A /* ShowDirectory */ = { - isa = PBXGroup; - children = ( - ECFBD5B7250A7AAF00DD5F5A /* ShowDirectoryViewController.storyboard */, - ECFBD5B8250A7AAF00DD5F5A /* Cells */, - ECFBD5C0250A7AAF00DD5F5A /* ShowDirectoryViewModel.swift */, - ECFBD5C1250A7AAF00DD5F5A /* ShowDirectoryViewController.swift */, - ECFBD5C2250A7AAF00DD5F5A /* ShowDirectoryViewState.swift */, - ECFBD5C3250A7AAF00DD5F5A /* ShowDirectoryCoordinator.swift */, - ECFBD5C4250A7AAF00DD5F5A /* ShowDirectoryCoordinatorType.swift */, - ECFBD5C5250A7AAF00DD5F5A /* ShowDirectoryViewModelType.swift */, - ECFBD5C6250A7AAF00DD5F5A /* ShowDirectoryViewAction.swift */, - ); - path = ShowDirectory; - sourceTree = ""; - }; - ECFBD5B8250A7AAF00DD5F5A /* Cells */ = { - isa = PBXGroup; - children = ( - ECFBD5B9250A7AAF00DD5F5A /* Room */, - ECFBD5BD250A7AAF00DD5F5A /* Network */, - ); - path = Cells; - sourceTree = ""; - }; - ECFBD5B9250A7AAF00DD5F5A /* Room */ = { - isa = PBXGroup; - children = ( - ECFBD5BA250A7AAF00DD5F5A /* DirectoryRoomTableViewCellVM.swift */, - ECFBD5BB250A7AAF00DD5F5A /* DirectoryRoomTableViewCell.swift */, - ECFBD5BC250A7AAF00DD5F5A /* DirectoryRoomTableViewCell.xib */, - ); - path = Room; - sourceTree = ""; - }; - ECFBD5BD250A7AAF00DD5F5A /* Network */ = { - isa = PBXGroup; - children = ( - ECFBD5BE250A7AAF00DD5F5A /* DirectoryNetworkTableHeaderFooterView.xib */, - ECFBD5BF250A7AAF00DD5F5A /* DirectoryNetworkTableHeaderFooterView.swift */, - ); - path = Network; - sourceTree = ""; - }; - ECFBD5DD250B683300DD5F5A /* Cells */ = { - isa = PBXGroup; - children = ( - ECFBD5DE250B684E00DD5F5A /* ChooseAvatarTableViewCell.swift */, - ECFBD5DF250B684E00DD5F5A /* ChooseAvatarTableViewCell.xib */, - ECFBD5E2250B6CAB00DD5F5A /* ChooseAvatarTableViewCellVM.swift */, - ); - path = Cells; - sourceTree = ""; - }; - ECFBD5EE250FA59B00DD5F5A /* RoomCreationEventsModal */ = { - isa = PBXGroup; - children = ( - EC51E78B250FC12A00AAE7DB /* Models */, - ECFBD5EF250FA59B00DD5F5A /* RoomCreationEventsModalViewController.storyboard */, - ECFBD5F0250FA59B00DD5F5A /* RoomCreationEventsModalCoordinator.swift */, - ECFBD5F1250FA59B00DD5F5A /* RoomCreationEventsModalViewModelType.swift */, - ECFBD5F2250FA59B00DD5F5A /* RoomCreationEventsModalCoordinatorType.swift */, - ECFBD5F3250FA59B00DD5F5A /* RoomCreationEventsModalViewAction.swift */, - ECFBD5F4250FA59B00DD5F5A /* RoomCreationEventsModalViewState.swift */, - ECFBD5F5250FA59B00DD5F5A /* RoomCreationEventsModalViewController.swift */, - ECFBD5F6250FA59B00DD5F5A /* RoomCreationEventsModalViewModel.swift */, - ); - path = RoomCreationEventsModal; - sourceTree = ""; - }; - ECFBD605250FA98900DD5F5A /* CreationModal */ = { - isa = PBXGroup; - children = ( - ECFBD600250FA98100DD5F5A /* RoomCreationModalCoordinatorBridgePresenter.swift */, - ECFBD5FF250FA98100DD5F5A /* RoomCreationModalCoordinatorType.swift */, - ECFBD5EE250FA59B00DD5F5A /* RoomCreationEventsModal */, - ); - path = CreationModal; - sourceTree = ""; - }; - F083BB021E7005FD00A9B29C /* RiotTests */ = { - isa = PBXGroup; - children = ( - F083BB041E7005FD00A9B29C /* RiotTests.m */, - B152C73022DF561E0041315A /* EmojiServiceTests.swift */, - B1562CE42541D113002F8436 /* JitsiWellKnownTests.swift */, - F083BB071E70067700A9B29C /* Supporting Files */, - ); - path = RiotTests; - sourceTree = ""; - }; - F083BB071E70067700A9B29C /* Supporting Files */ = { - isa = PBXGroup; - children = ( - B152C72D22DF55D80041315A /* RiotTests-Bridging-Header.h */, - F083BB031E7005FD00A9B29C /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - F083BB081E7009EC00A9B29C /* Riot */ = { - isa = PBXGroup; - children = ( - B1098BD921ECE09E000DDA48 /* Generated */, - F083BBE41E7009EC00A9B29C /* Categories */, - B1098BE621ECFE51000DDA48 /* Coordinators */, - B1098C0721ED07E4000DDA48 /* Routers */, - F083BBF21E7009EC00A9B29C /* Model */, - B1B5597C20EFC3DF00210D55 /* Managers */, - B1B5567620EE6C4C00210D55 /* Modules */, - F083BC0F1E7009EC00A9B29C /* Utils */, - F083BB0E1E7009EC00A9B29C /* Assets */, - B169329D20F3A21B00746532 /* SupportingFiles */, - ); - path = Riot; - sourceTree = ""; - usesTabs = 0; - }; - F083BB0E1E7009EC00A9B29C /* Assets */ = { - isa = PBXGroup; - children = ( - B1664DA520F4FE1B00808783 /* Localizations */, - F083BBDA1E7009EC00A9B29C /* Sounds */, - 32935CB21F628B98006888C8 /* js */, - F083BBEF1E7009EC00A9B29C /* Images.xcassets */, - B169328620F3954A00746532 /* SharedImages.xcassets */, - B152C73422DF599B0041315A /* apple_emojis_data.json */, - B169329320F39E6200746532 /* LaunchScreen.storyboard */, - B169329520F39E6300746532 /* Main.storyboard */, - F083BC0E1E7009EC00A9B29C /* third_party_licenses.html */, - F083BC181E7009EC00A9B29C /* Riot-Defaults.plist */, - ); - path = Assets; - sourceTree = ""; - }; - F083BBDA1E7009EC00A9B29C /* Sounds */ = { - isa = PBXGroup; - children = ( - F083BBDB1E7009EC00A9B29C /* busy.mp3 */, - F083BBDC1E7009EC00A9B29C /* callend.mp3 */, - F083BBDD1E7009EC00A9B29C /* message.caf */, - F083BBDE1E7009EC00A9B29C /* ring.mp3 */, - F083BBDF1E7009EC00A9B29C /* ringback.mp3 */, - ); - path = Sounds; - sourceTree = ""; - }; - F083BBE41E7009EC00A9B29C /* Categories */ = { - isa = PBXGroup; - children = ( - ECFBD5D9250A7ABD00DD5F5A /* MXThirdPartyProtocolInstance.swift */, - EC711B4524A63B13008F830C /* MXRecoveryService.swift */, - ECB1012E2477CFDB00CF8C11 /* UIDevice.swift */, - ECB1012D2477CFDB00CF8C11 /* UILabel.swift */, - ECB1012C2477CFDB00CF8C11 /* UITableView.swift */, - ECB1012F2477CFDB00CF8C11 /* UITableViewCell.swift */, - F05927C81FDED835009F2A68 /* MXGroup+Riot.h */, - F05927C71FDED835009F2A68 /* MXGroup+Riot.m */, - F083BBE51E7009EC00A9B29C /* MXKRoomBubbleTableViewCell+Riot.h */, - F083BBE61E7009EC00A9B29C /* MXKRoomBubbleTableViewCell+Riot.m */, - F083BBE71E7009EC00A9B29C /* MXRoom+Riot.h */, - F083BBE81E7009EC00A9B29C /* MXRoom+Riot.m */, - F0D2AD9F1F6AA5FD00A7097D /* MXRoomSummary+Riot.h */, - F0D2ADA01F6AA5FD00A7097D /* MXRoomSummary+Riot.m */, - F083BBE91E7009EC00A9B29C /* UINavigationController+Riot.h */, - F083BBEA1E7009EC00A9B29C /* UINavigationController+Riot.m */, - F083BBEB1E7009EC00A9B29C /* UIViewController+RiotSearch.h */, - F083BBEC1E7009EC00A9B29C /* UIViewController+RiotSearch.m */, - 926FA53D1F4C132000F826C2 /* MXSession+Riot.h */, - 926FA53E1F4C132000F826C2 /* MXSession+Riot.m */, - 32242F0821E8B05F00725742 /* UIColor.swift */, - EC85D750247C0E8F002C44C9 /* UNUserNotificationCenter.swift */, - B1CA3A2621EF6913000D1D89 /* UIViewController.swift */, - B1CA3A2821EF692B000D1D89 /* UIView.swift */, - B140B4A121F87F7100E3F5FE /* OperationQueue.swift */, - B1E5368821FB1E20001F3AFF /* UIButton.swift */, - EC619C1824DAD96000663A80 /* UIScrollView.swift */, - 3281BCF62201FA4200F4A383 /* UIControl.swift */, - B109D6F0222D8C400061B6D9 /* UIApplication.swift */, - B1DB4F05223015080065DBFA /* Character.swift */, - B1DB4F0A223131600065DBFA /* String.swift */, - B1A5B33D227ADF2A004CBA85 /* UIImage.swift */, - B1C562C92289C2690037F12A /* UIGestureRecognizer.swift */, - B1C562CB228AB3510037F12A /* UIStackView.swift */, - B1B12B2822942315002CB419 /* UITouch.swift */, - B1DCC63322E72C1B00625807 /* UISearchBar.swift */, - B11291EB238D704C0077B478 /* FloatingPoint.swift */, - 32FD757524D2C9BA00BA7B37 /* Bundle.swift */, - ECAE7AED24EFDD1F002FA813 /* MXSessionState.swift */, - ECF57A4F250913E4004BBF9D /* MXKTableViewCellWithLabelAndSwitch.swift */, - ECF57A5625091ECC004BBF9D /* MXKTableViewCellWithTextView.swift */, - B1A15BD525A526A200BDCA36 /* URLComponents.swift */, - ); - path = Categories; - sourceTree = ""; - }; - F083BBF21E7009EC00A9B29C /* Model */ = { - isa = PBXGroup; - children = ( - B169330420F3C9B000746532 /* Contact */, - F083BBF61E7009EC00A9B29C /* Room */, - ); - path = Model; - sourceTree = ""; - }; - F083BBF61E7009EC00A9B29C /* Room */ = { - isa = PBXGroup; - children = ( - F083BBFB1E7009EC00A9B29C /* RoomEmailInvitation.h */, - F083BBFC1E7009EC00A9B29C /* RoomEmailInvitation.m */, - F083BBFD1E7009EC00A9B29C /* RoomPreviewData.h */, - F083BBFE1E7009EC00A9B29C /* RoomPreviewData.m */, - B1D44998243CD73700959523 /* RoomPowerLevel.swift */, - ); - path = Room; - sourceTree = ""; - }; - F083BC0F1E7009EC00A9B29C /* Utils */ = { - isa = PBXGroup; - children = ( - EC85D753247C0F5B002C44C9 /* Constants.swift */, - ECB101342477D00700CF8C11 /* UniversalLink.h */, - ECB101352477D00700CF8C11 /* UniversalLink.m */, - F083BC101E7009EC00A9B29C /* AvatarGenerator.h */, - F083BC111E7009EC00A9B29C /* AvatarGenerator.m */, - F083BC121E7009EC00A9B29C /* EventFormatter.h */, - F083BC131E7009EC00A9B29C /* EventFormatter.m */, - B15825392475350A00604D79 /* EventFormatter+DTCoreTextFix.h */, - B158253A2475350A00604D79 /* EventFormatter+DTCoreTextFix.m */, - F083BC141E7009EC00A9B29C /* Tools.h */, - F083BC151E7009EC00A9B29C /* Tools.m */, - B1DB4F0D22316FFF0065DBFA /* UserNameColorGenerator.swift */, - B197B7C5243DE947005ABBF3 /* EncryptionTrustLevelBadgeImageHelper.swift */, - EC2B4EF024A1EEBD005EB739 /* DataProtectionHelper.swift */, - ECDC15F124AF41D2003437CF /* FormattedBodyParser.swift */, - B158E72025485B9E000A7F75 /* Base32Coder.swift */, - ECE36F7E258B578300122124 /* Memory.swift */, - ); - path = Utils; - sourceTree = ""; - }; - F094A9991B78D8F000B1FBBF = { - isa = PBXGroup; - children = ( - B1B7F22824F3F8E900FD567B /* README.md */, - 3267EFB320E379FD00FF1CAA /* CHANGES.rst */, - 3267EFB520E379FD00FF1CAA /* AUTHORS.rst */, - 3267EFB420E379FD00FF1CAA /* Podfile */, - 32FD754E24D073E400BA7B37 /* Config */, - F083BB081E7009EC00A9B29C /* Riot */, - F083BB021E7005FD00A9B29C /* RiotTests */, - 24CBEC4F1F0EAD310093EABB /* RiotShareExtension */, - 92726A441F58737A004AD26F /* SiriIntents */, - EC85D7442477E5F7002C44C9 /* RiotNSE */, - F094A9A31B78D8F000B1FBBF /* Products */, - 5FC42FA41F5186AFFB6A2404 /* Frameworks */, - 3232AAFE22564D9100AD6A5C /* Tools */, - 4220F60B660591FD80AF3428 /* Pods */, - ); - sourceTree = ""; - usesTabs = 0; - }; - F094A9A31B78D8F000B1FBBF /* Products */ = { - isa = PBXGroup; - children = ( - F094A9A21B78D8F000B1FBBF /* Riot.app */, - F094A9BE1B78D8F000B1FBBF /* RiotTests.xctest */, - 24CBEC4E1F0EAD310093EABB /* RiotShareExtension.appex */, - 92726A431F58737A004AD26F /* SiriIntents.appex */, - EC85D7432477E5F7002C44C9 /* RiotNSE.appex */, - ); - name = Products; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 24CBEC4D1F0EAD310093EABB /* RiotShareExtension */ = { - isa = PBXNativeTarget; - buildConfigurationList = 24CBEC5C1F0EAD310093EABB /* Build configuration list for PBXNativeTarget "RiotShareExtension" */; - buildPhases = ( - A34C7B2CCE489F3A560A540A /* [CP] Check Pods Manifest.lock */, - 24CBEC4A1F0EAD310093EABB /* Sources */, - 24CBEC4B1F0EAD310093EABB /* Frameworks */, - 24CBEC4C1F0EAD310093EABB /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = RiotShareExtension; - productName = "Riot Share Extension"; - productReference = 24CBEC4E1F0EAD310093EABB /* RiotShareExtension.appex */; - productType = "com.apple.product-type.app-extension"; - }; - 92726A421F58737A004AD26F /* SiriIntents */ = { - isa = PBXNativeTarget; - buildConfigurationList = 92726A4E1F58737A004AD26F /* Build configuration list for PBXNativeTarget "SiriIntents" */; - buildPhases = ( - FF06981FDA0DB688B8C52A41 /* [CP] Check Pods Manifest.lock */, - 92726A3F1F58737A004AD26F /* Sources */, - 92726A401F58737A004AD26F /* Frameworks */, - 92726A411F58737A004AD26F /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = SiriIntents; - productName = SiriIntents; - productReference = 92726A431F58737A004AD26F /* SiriIntents.appex */; - productType = "com.apple.product-type.app-extension"; - }; - EC85D7422477E5F7002C44C9 /* RiotNSE */ = { - isa = PBXNativeTarget; - buildConfigurationList = EC85D74D2477E5F7002C44C9 /* Build configuration list for PBXNativeTarget "RiotNSE" */; - buildPhases = ( - E96A5016582B740FB3EABBB3 /* [CP] Check Pods Manifest.lock */, - EC85D73F2477E5F7002C44C9 /* Sources */, - EC85D7402477E5F7002C44C9 /* Frameworks */, - EC85D7412477E5F7002C44C9 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = RiotNSE; - productName = RiotNSE; - productReference = EC85D7432477E5F7002C44C9 /* RiotNSE.appex */; - productType = "com.apple.product-type.app-extension"; - }; - F094A9A11B78D8F000B1FBBF /* Riot */ = { - isa = PBXNativeTarget; - buildConfigurationList = F094A9C81B78D8F000B1FBBF /* Build configuration list for PBXNativeTarget "Riot" */; - buildPhases = ( - 47A83697FDBD51DC286B66C0 /* [CP] Check Pods Manifest.lock */, - B1D1AC122225A43600D64A6C /* ⚠️ SwiftLint */, - B1098BD821ECD3ED000DDA48 /* 🛠 SwiftGen */, - F094A99E1B78D8F000B1FBBF /* Sources */, - F094A99F1B78D8F000B1FBBF /* Frameworks */, - F094A9A01B78D8F000B1FBBF /* Resources */, - 24CBEC5D1F0EAD310093EABB /* Embed App Extensions */, - 29FACD15A5CE317A58C9E77E /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 242661F61F12B1BA00D3FC08 /* PBXTargetDependency */, - 92726A4A1F58737A004AD26F /* PBXTargetDependency */, - EC85D7492477E5F7002C44C9 /* PBXTargetDependency */, - ); - name = Riot; - productName = Vector; - productReference = F094A9A21B78D8F000B1FBBF /* Riot.app */; - productType = "com.apple.product-type.application"; - }; - F094A9BD1B78D8F000B1FBBF /* RiotTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = F094A9CB1B78D8F000B1FBBF /* Build configuration list for PBXNativeTarget "RiotTests" */; - buildPhases = ( - CB374E980E51D4490F17AD40 /* [CP] Check Pods Manifest.lock */, - F094A9BA1B78D8F000B1FBBF /* Sources */, - F094A9BB1B78D8F000B1FBBF /* Frameworks */, - F094A9BC1B78D8F000B1FBBF /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - F094A9C01B78D8F000B1FBBF /* PBXTargetDependency */, - ); - name = RiotTests; - productName = VectorTests; - productReference = F094A9BE1B78D8F000B1FBBF /* RiotTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - F094A99A1B78D8F000B1FBBF /* Project object */ = { - isa = PBXProject; - attributes = { - DefaultBuildSystemTypeForWorkspace = Original; - LastSwiftUpdateCheck = 1130; - LastUpgradeCheck = 0940; - ORGANIZATIONNAME = matrix.org; - TargetAttributes = { - 24CBEC4D1F0EAD310093EABB = { - CreatedOnToolsVersion = 8.3.2; - DevelopmentTeam = 7J4U792NQT; - LastSwiftMigration = 1020; - SystemCapabilities = { - com.apple.ApplicationGroups.iOS = { - enabled = 1; - }; - }; - }; - 92726A421F58737A004AD26F = { - CreatedOnToolsVersion = 8.3.3; - DevelopmentTeam = 7J4U792NQT; - SystemCapabilities = { - com.apple.ApplicationGroups.iOS = { - enabled = 1; - }; - }; - }; - EC85D7422477E5F7002C44C9 = { - CreatedOnToolsVersion = 11.3.1; - DevelopmentTeam = 7J4U792NQT; - LastSwiftMigration = 1140; - }; - F094A9A11B78D8F000B1FBBF = { - CreatedOnToolsVersion = 6.2; - DevelopmentTeam = 7J4U792NQT; - LastSwiftMigration = 1020; - SystemCapabilities = { - com.apple.ApplicationGroups.iOS = { - enabled = 1; - }; - com.apple.Push = { - enabled = 1; - }; - com.apple.iCloud = { - enabled = 1; - }; - }; - }; - F094A9BD1B78D8F000B1FBBF = { - CreatedOnToolsVersion = 6.2; - DevelopmentTeam = 7J4U792NQT; - LastSwiftMigration = 1020; - ProvisioningStyle = Manual; - TestTargetID = F094A9A11B78D8F000B1FBBF; - }; - }; - }; - buildConfigurationList = F094A99D1B78D8F000B1FBBF /* Build configuration list for PBXProject "Riot" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - English, - en, - Base, - nl, - de, - fr, - ru, - zh_Hans, - eu, - vi, - ca, - bg, - is, - zh_Hant, - sq, - es, - ja, - hu, - pl, - cy, - it, - et, - ); - mainGroup = F094A9991B78D8F000B1FBBF; - productRefGroup = F094A9A31B78D8F000B1FBBF /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - F094A9A11B78D8F000B1FBBF /* Riot */, - F094A9BD1B78D8F000B1FBBF /* RiotTests */, - 24CBEC4D1F0EAD310093EABB /* RiotShareExtension */, - 92726A421F58737A004AD26F /* SiriIntents */, - EC85D7422477E5F7002C44C9 /* RiotNSE */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 24CBEC4C1F0EAD310093EABB /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B1664BCB20F4E67600808783 /* RoomsListViewController.xib in Resources */, - B169328520F38BE800746532 /* SegmentedViewController.xib in Resources */, - B1664DA420F4F96300808783 /* Vector.strings in Resources */, - EC1CA8D624D8108700DE9EBF /* ShareExtension-Common.xcconfig in Resources */, - B1664BC920F4E67600808783 /* ShareViewController.xib in Resources */, - B169328820F3954A00746532 /* SharedImages.xcassets in Resources */, - B1664BC520F4E67600808783 /* FallbackViewController.xib in Resources */, - B1664BCE20F4E67600808783 /* RecentRoomTableViewCell.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 92726A411F58737A004AD26F /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - EC1CA8D824D8118400DE9EBF /* SiriIntents-Common.xcconfig in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EC85D7412477E5F7002C44C9 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - EC1CA8DA24D811B400DE9EBF /* NSE-Common.xcconfig in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F094A9A01B78D8F000B1FBBF /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B1B5590220EF768F00210D55 /* RoomOutgoingAttachmentWithPaginationTitleBubbleCell.xib in Resources */, - B1B558CA20EF768F00210D55 /* RoomOutgoingEncryptedAttachmentWithoutSenderInfoBubbleCell.xib in Resources */, - B152C73522DF599C0041315A /* apple_emojis_data.json in Resources */, - F083BDE91E7009ED00A9B29C /* ring.mp3 in Resources */, - B1B558F720EF768F00210D55 /* RoomIncomingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib in Resources */, - B1B5592B20EF7A5D00210D55 /* TableViewCellWithButton.xib in Resources */, - B1B5574620EE6C4D00210D55 /* StartChatViewController.xib in Resources */, - B1B5590A20EF768F00210D55 /* RoomOutgoingAttachmentWithoutSenderInfoBubbleCell.xib in Resources */, - B1A6C113238BD245002882FD /* SlidingModalContainerView.xib in Resources */, - B1B5594420EF7BD000210D55 /* TableViewCellWithCollectionView.xib in Resources */, - ECFBD5CA250A7AAF00DD5F5A /* ShowDirectoryViewController.storyboard in Resources */, - B1B558D520EF768F00210D55 /* RoomIncomingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib in Resources */, - B12D79FC23E2462200FACEDC /* UserVerificationStartViewController.storyboard in Resources */, - B1CE83D32422817200D07506 /* KeyVerificationVerifiedViewController.storyboard in Resources */, - B1B5590020EF768F00210D55 /* RoomOutgoingTextMsgWithoutSenderNameBubbleCell.xib in Resources */, - B1B5597020EFA85D00210D55 /* EncryptionInfoView.xib in Resources */, - EC51E7AA2514D2E100AAE7DB /* RoomInfoListViewController.storyboard in Resources */, - B1B558BC20EF768F00210D55 /* RoomMembershipBubbleCell.xib in Resources */, - B1B5571F20EE6C4D00210D55 /* ContactDetailsViewController.xib in Resources */, - B157FAA423264AE900EBFBD4 /* SettingsDiscoveryThreePidDetailsViewController.storyboard in Resources */, - B1B558E220EF768F00210D55 /* RoomIncomingTextMsgBubbleCell.xib in Resources */, - B105778B221304FA00334B1E /* KeyBackupSetupSuccessFromPassphraseViewController.storyboard in Resources */, - B1664DA220F4F95800808783 /* Localizable.strings in Resources */, - B169328720F3954A00746532 /* SharedImages.xcassets in Resources */, - B1664DA120F4F94F00808783 /* InfoPlist.strings in Resources */, - B1B5579B20EF575B00210D55 /* AuthInputsView.xib in Resources */, - B1B5594620EF7BD000210D55 /* RoomCollectionViewCell.xib in Resources */, - EC711BAA24A63B58008F830C /* SecureBackupSetupIntroCell.xib in Resources */, - F083BDE71E7009ED00A9B29C /* callend.mp3 in Resources */, - B1B558EF20EF768F00210D55 /* RoomMembershipCollapsedWithPaginationTitleBubbleCell.xib in Resources */, - EC711B7C24A63B37008F830C /* SecretsSetupRecoveryPassphraseViewController.storyboard in Resources */, - B1B5573420EE6C4D00210D55 /* GroupDetailsViewController.xib in Resources */, - B1B557E420EF60B900210D55 /* MessagesSearchResultAttachmentBubbleCell.xib in Resources */, - B1B336C2242B933700F95EC4 /* KeyVerificationSelfVerifyStartViewController.storyboard in Resources */, - B1B558F220EF768F00210D55 /* RoomIncomingTextMsgWithoutSenderNameBubbleCell.xib in Resources */, - ECFBD5E1250B684E00DD5F5A /* ChooseAvatarTableViewCell.xib in Resources */, - B1B558EA20EF768F00210D55 /* RoomOutgoingTextMsgWithPaginationTitleBubbleCell.xib in Resources */, - B1B558CD20EF768F00210D55 /* RoomOutgoingEncryptedAttachmentWithPaginationTitleBubbleCell.xib in Resources */, - B1B9DEEA22EB34EF0065E677 /* ReactionHistoryViewController.storyboard in Resources */, - B1B9194C2118984300FE25B5 /* RoomPredecessorBubbleCell.xib in Resources */, - EC51E7942510C0D000AAE7DB /* SpanningSlidingModalContainerView.xib in Resources */, - B1C562E9228C7CF20037F12A /* ContextualMenuItemView.xib in Resources */, - B1560DA424B65B3700490F50 /* LaunchLoadingView.xib in Resources */, - B1BEE73A23DF44A60003A4CB /* UserVerificationSessionsStatusViewController.storyboard in Resources */, - B1B5572120EE6C4D00210D55 /* ContactsTableViewController.xib in Resources */, - B1B5593A20EF7BAC00210D55 /* TableViewCellWithLabelAndLargeTextView.xib in Resources */, - B1B558D820EF768F00210D55 /* RoomIncomingEncryptedAttachmentWithPaginationTitleBubbleCell.xib in Resources */, - B1B558DA20EF768F00210D55 /* RoomOutgoingEncryptedTextMsgWithoutSenderInfoBubbleCell.xib in Resources */, - B1B558D620EF768F00210D55 /* RoomOutgoingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib in Resources */, - B1B5593720EF7BAC00210D55 /* TableViewCellWithCheckBoxAndLabel.xib in Resources */, - B190F55B22CE35FD00AEB493 /* EditHistoryHeaderView.xib in Resources */, - EC31F016251B53BC00D407DA /* RoomInfoBasicView.xib in Resources */, - EC1CA86524C1DEC400DE9EBF /* EnterPinCodeViewController.storyboard in Resources */, - B1B5579020EF568D00210D55 /* GroupTableViewCell.xib in Resources */, - B142317B22CCFA2000FFA96A /* EditHistoryCell.xib in Resources */, - B1B5581B20EF625800210D55 /* ExpandedRoomTitleView.xib in Resources */, - B1B558C220EF768F00210D55 /* RoomIncomingEncryptedTextMsgBubbleCell.xib in Resources */, - B1B558F620EF768F00210D55 /* RoomOutgoingTextMsgBubbleCell.xib in Resources */, - B1B5574D20EE6C4D00210D55 /* MediaPickerViewController.xib in Resources */, - B1B5575020EE6C4D00210D55 /* AuthenticationViewController.xib in Resources */, - B1C45A85232A8C2600165425 /* SettingsIdentityServerViewController.storyboard in Resources */, - B14F142E22144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyViewController.storyboard in Resources */, - 32DB557B22FDADE50016329E /* ServiceTermsModalScreenViewController.storyboard in Resources */, - B1B5574320EE6C4D00210D55 /* CallViewController.xib in Resources */, - F083BDEA1E7009ED00A9B29C /* ringback.mp3 in Resources */, - 329E746622CD02EA006F9797 /* BubbleReactionActionViewCell.xib in Resources */, - B1B558E320EF768F00210D55 /* RoomEmptyBubbleCell.xib in Resources */, - EC711B8F24A63B37008F830C /* SecretsRecoveryWithKeyViewController.storyboard in Resources */, - ECFBD5EC250F97FC00DD5F5A /* RoomCreationWithPaginationCollapsedBubbleCell.xib in Resources */, - B1E5368F21FB7258001F3AFF /* KeyBackupRecoverFromPassphraseViewController.storyboard in Resources */, - B1B5590420EF768F00210D55 /* RoomOutgoingAttachmentBubbleCell.xib in Resources */, - B1B558F120EF768F00210D55 /* RoomIncomingAttachmentWithPaginationTitleBubbleCell.xib in Resources */, - B1B557CB20EF5D8000210D55 /* DirectoryServerTableViewCell.xib in Resources */, - B1B558EC20EF768F00210D55 /* RoomMembershipCollapsedBubbleCell.xib in Resources */, - EC711BAD24A63B58008F830C /* SecureBackupSetupIntroViewController.storyboard in Resources */, - B1B558D720EF768F00210D55 /* RoomOutgoingEncryptedTextMsgWithPaginationTitleBubbleCell.xib in Resources */, - EC711B7724A63B37008F830C /* SecretsSetupRecoveryKeyViewController.storyboard in Resources */, - B1B5590820EF768F00210D55 /* RoomMembershipWithPaginationTitleBubbleCell.xib in Resources */, - B18DEDD7243377C10075FEF7 /* KeyVerificationSelfVerifyWaitViewController.storyboard in Resources */, - F083BDE81E7009ED00A9B29C /* message.caf in Resources */, - B1107ECA2200B09F0038014B /* KeyBackupRecoverSuccessViewController.storyboard in Resources */, - B1B9DEF522EB426D0065E677 /* ReactionHistoryViewCell.xib in Resources */, - B1550FCA2420E8F500CE097B /* QRCodeReaderViewController.storyboard in Resources */, - B1B5579C20EF575B00210D55 /* ForgotPasswordInputsView.xib in Resources */, - F083BE011E7009ED00A9B29C /* third_party_licenses.html in Resources */, - ECFBD5EA250F97FC00DD5F5A /* RoomCreationCollapsedBubbleCell.xib in Resources */, - ECF57A89250A687B004BBF9D /* TextViewTableViewCell.xib in Resources */, - EC3B066A24AC6ADE000DF9BF /* CrossSigningSetupBannerCell.xib in Resources */, - B1098BFC21ECFE65000DDA48 /* PasswordStrengthView.xib in Resources */, - B1B5573720EE6C4D00210D55 /* GroupParticipantsViewController.xib in Resources */, - B110872421F098F0003554A5 /* ActivityIndicatorView.xib in Resources */, - B1B5573320EE6C4D00210D55 /* GroupHomeViewController.xib in Resources */, - 3232AB2122564D9100AD6A5C /* README.md in Resources */, - 3291DC8A23E0BE820009732F /* Security.storyboard in Resources */, - B1B5593920EF7BAC00210D55 /* TableViewCellWithCheckBoxes.xib in Resources */, - B1B557C120EF5B4500210D55 /* DisabledRoomInputToolbarView.xib in Resources */, - B1DCC61722E5E17100625807 /* EmojiPickerViewController.storyboard in Resources */, - 32891D6C2264CBA300C82226 /* SimpleScreenTemplateViewController.storyboard in Resources */, - 32D5D16123E1EE2700E3E37C /* ManageSession.storyboard in Resources */, - ECF57A5B250925AC004BBF9D /* TextFieldTableViewCell.xib in Resources */, - B1963B2C228F1C4900CBA17F /* BubbleReactionViewCell.xib in Resources */, - B1664DA320F4F96200808783 /* Vector.strings in Resources */, - B1B557C720EF5CD400210D55 /* DirectoryServerDetailTableViewCell.xib in Resources */, - B1B5582620EF638A00210D55 /* RoomMemberTitleView.xib in Resources */, - 3232AB1522564D9100AD6A5C /* flat-swift4-vector.stencil in Resources */, - F083BDE61E7009ED00A9B29C /* busy.mp3 in Resources */, - EC711BB324A63B58008F830C /* SecureBackupBannerCell.xib in Resources */, - B1B5574C20EE6C4D00210D55 /* MediaAlbumContentViewController.xib in Resources */, - 32607D6F243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewController.storyboard in Resources */, - B1B557E820EF60F500210D55 /* MessagesSearchResultTextMsgBubbleCell.xib in Resources */, - B1B558D920EF768F00210D55 /* RoomOutgoingEncryptedAttachmentBubbleCell.xib in Resources */, - B1B5573020EE6C4D00210D55 /* BugReportViewController.xib in Resources */, - B169329B20F39E6300746532 /* Main.storyboard in Resources */, - B1CE83DB2422817200D07506 /* KeyVerificationVerifyByScanningViewController.storyboard in Resources */, - 3232AB1422564D9100AD6A5C /* swiftgen-config.yml in Resources */, - 324A204F225FC571004FE8B0 /* DeviceVerificationIncomingViewController.storyboard in Resources */, - 3232AB4B2256558300AD6A5C /* TemplateScreenViewController.storyboard in Resources */, - B1D1BDA822BBAFC900831367 /* ReactionsMenuView.xib in Resources */, - 32B1FEDB21A46F2C00637127 /* TermsView.xib in Resources */, - B1BD71BF238EA56700BA92E2 /* WidgetPermissionViewController.storyboard in Resources */, - B1DCC63222E7026F00625807 /* EmojiPickerHeaderView.xib in Resources */, - B1B5578E20EF568D00210D55 /* GroupInviteTableViewCell.xib in Resources */, - B1B5582020EF625800210D55 /* SimpleRoomTitleView.xib in Resources */, - F083BE061E7009ED00A9B29C /* Riot-Defaults.plist in Resources */, - B1B558D120EF768F00210D55 /* RoomIncomingEncryptedAttachmentWithoutSenderInfoBubbleCell.xib in Resources */, - B1B558FE20EF768F00210D55 /* RoomMembershipExpandedWithPaginationTitleBubbleCell.xib in Resources */, - B1B5581D20EF625800210D55 /* RoomAvatarTitleView.xib in Resources */, - B1BEE74923E093260003A4CB /* UserVerificationSessionStatusViewController.storyboard in Resources */, - B1B5590B20EF768F00210D55 /* RoomMembershipExpandedBubbleCell.xib in Resources */, - B1B558E720EF768F00210D55 /* RoomIncomingTextMsgWithoutSenderInfoBubbleCell.xib in Resources */, - B1B558DC20EF768F00210D55 /* RoomIncomingEncryptedTextMsgWithPaginationTitleBubbleCell.xib in Resources */, - B1B5572E20EE6C4D00210D55 /* ReadReceiptsViewController.xib in Resources */, - B1BEE72B23DF38B20003A4CB /* UserVerificationSessionStatusCell.xib in Resources */, - B1B5574220EE6C4D00210D55 /* RecentsViewController.xib in Resources */, - B1B5571C20EE6C4D00210D55 /* DeactivateAccountViewController.storyboard in Resources */, - B1B5596520EF9E9B00210D55 /* RoomTableViewCell.xib in Resources */, - ECFBD5CD250A7AAF00DD5F5A /* DirectoryRoomTableViewCell.xib in Resources */, - B1B557C020EF5B4500210D55 /* RoomInputToolbarView.xib in Resources */, - B1B5583D20EF6E7F00210D55 /* GroupRoomTableViewCell.xib in Resources */, - ECFBD5F7250FA59B00DD5F5A /* RoomCreationEventsModalViewController.storyboard in Resources */, - B1B5572D20EE6C4D00210D55 /* RoomParticipantsViewController.xib in Resources */, - 32A6001C22C661100042C1D9 /* EditHistoryViewController.storyboard in Resources */, - EC85D7282477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewController.storyboard in Resources */, - B1B5577220EE702800210D55 /* JitsiViewController.xib in Resources */, - B1B557D720EF5EA900210D55 /* RoomActivitiesView.xib in Resources */, - B1098BF821ECFE65000DDA48 /* KeyBackupSetupPassphraseViewController.storyboard in Resources */, - F083BDF31E7009ED00A9B29C /* Images.xcassets in Resources */, - B1C562E4228C7C8D0037F12A /* RoomContextualMenuToolbarView.xib in Resources */, - B1DCC62E22E61EAF00625807 /* EmojiPickerViewCell.xib in Resources */, - B1B5590720EF768F00210D55 /* RoomOutgoingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.xib in Resources */, - B169329920F39E6300746532 /* LaunchScreen.storyboard in Resources */, - B1B5595320EF9A8700210D55 /* RecentTableViewCell.xib in Resources */, - B1B557AD20EF5A6D00210D55 /* DeviceView.xib in Resources */, - B1B5573920EE6C4D00210D55 /* GroupRoomsViewController.xib in Resources */, - B1B5597620EFB02A00210D55 /* InviteRecentTableViewCell.xib in Resources */, - B1B558FB20EF768F00210D55 /* RoomIncomingAttachmentWithoutSenderInfoBubbleCell.xib in Resources */, - EC711B8C24A63B37008F830C /* SecretsRecoveryWithPassphraseViewController.storyboard in Resources */, - EC85D7192477DCD7002C44C9 /* KeyVerificationScanConfirmationViewController.storyboard in Resources */, - B1B558BB20EF768F00210D55 /* RoomOutgoingTextMsgWithoutSenderInfoBubbleCell.xib in Resources */, - B1B557A720EF5A1B00210D55 /* DeviceTableViewCell.xib in Resources */, - B14084C823BF76CB0010F692 /* BubbleCellContentView.xib in Resources */, - B1A67947257559D500BB0C69 /* RootTabEmptyView.xib in Resources */, - B1B557D220EF5E3500210D55 /* MediaAlbumTableCell.xib in Resources */, - B1B558C520EF768F00210D55 /* RoomOutgoingEncryptedTextMsgBubbleCell.xib in Resources */, - B1B5582B20EF666100210D55 /* DirectoryRecentTableViewCell.xib in Resources */, - B105778F2213052A00334B1E /* KeyBackupSetupSuccessFromRecoveryKeyViewController.storyboard in Resources */, - EC1CA89924C9C9A200DE9EBF /* SetupBiometricsViewController.storyboard in Resources */, - B1B5590F20EF782800210D55 /* TableViewCellWithPhoneNumberTextField.xib in Resources */, - B1B5578520EF564900210D55 /* GroupTableViewCellWithSwitch.xib in Resources */, - B1B557B320EF5AEF00210D55 /* EventDetailsView.xib in Resources */, - ECF57A4725090C23004BBF9D /* EnterNewRoomDetailsViewController.storyboard in Resources */, - B1963B30228F1C4900CBA17F /* BubbleReactionsView.xib in Resources */, - B1B557DD20EF5FBB00210D55 /* FilesSearchTableViewCell.xib in Resources */, - B1B5590320EF768F00210D55 /* RoomSelectedStickerBubbleCell.xib in Resources */, - B1B5573F20EE6C4D00210D55 /* SegmentedViewController.xib in Resources */, - B1B5581E20EF625800210D55 /* RoomTitleView.xib in Resources */, - B1B558C020EF768F00210D55 /* RoomIncomingEncryptedTextMsgWithoutSenderInfoBubbleCell.xib in Resources */, - B1B5572420EE6C4D00210D55 /* RoomViewController.xib in Resources */, - B169331520F3CAFC00746532 /* PublicRoomTableViewCell.xib in Resources */, - B1C562E5228C7C8D0037F12A /* RoomContextualMenuViewController.storyboard in Resources */, - 3232ABA2225730E100AD6A5C /* DeviceVerificationStartViewController.storyboard in Resources */, - 3284A35120A07C210044F922 /* postMessageAPI.js in Resources */, - EC1CA8D424D8103400DE9EBF /* App-Common.xcconfig in Resources */, - B1B557A220EF58AD00210D55 /* ContactTableViewCell.xib in Resources */, - ECFBD5CE250A7AAF00DD5F5A /* DirectoryNetworkTableHeaderFooterView.xib in Resources */, - B1B558EB20EF768F00210D55 /* RoomIncomingTextMsgWithPaginationTitleBubbleCell.xib in Resources */, - B1C543A6239E999700DCA1FA /* KeyVerificationCellInnerContentView.xib in Resources */, - 32891D76226728EF00C82226 /* KeyVerificationDataLoadingViewController.storyboard in Resources */, - B1B5581820EF625800210D55 /* PreviewRoomTitleView.xib in Resources */, - B1B5583020EF66BA00210D55 /* RoomIdOrAliasTableViewCell.xib in Resources */, - B1B558BF20EF768F00210D55 /* RoomOutgoingEncryptedTextMsgWithoutSenderNameBubbleCell.xib in Resources */, - B1B558FD20EF768F00210D55 /* RoomIncomingAttachmentBubbleCell.xib in Resources */, - B1B558DB20EF768F00210D55 /* RoomIncomingEncryptedTextMsgWithoutSenderNameBubbleCell.xib in Resources */, - B185145D24B8C9A400EE19EA /* MajorUpdateViewController.storyboard in Resources */, - B1CE83E42422817200D07506 /* KeyVerificationVerifyBySASViewController.storyboard in Resources */, - B14EED1B2579933100448735 /* SocialLoginListView.xib in Resources */, - B1B5572B20EE6C4D00210D55 /* RoomMemberDetailsViewController.xib in Resources */, - B1D4752C21EE52C30067973F /* KeyBackupSetupIntroViewController.storyboard in Resources */, - B1B558C620EF768F00210D55 /* RoomIncomingEncryptedAttachmentBubbleCell.xib in Resources */, - B12676872523E4D100BE6B98 /* SecretsResetViewController.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F094A9BC1B78D8F000B1FBBF /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 29FACD15A5CE317A58C9E77E /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-RiotPods-Riot/Pods-RiotPods-Riot-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-RiotPods-Riot/Pods-RiotPods-Riot-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RiotPods-Riot/Pods-RiotPods-Riot-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 47A83697FDBD51DC286B66C0 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RiotPods-Riot-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - A34C7B2CCE489F3A560A540A /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RiotPods-RiotShareExtension-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - B1098BD821ECD3ED000DDA48 /* 🛠 SwiftGen */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - name = "🛠 SwiftGen"; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "${PODS_ROOT}/SwiftGen/bin/swiftgen config run --config Tools/SwiftGen/swiftgen-config.yml\n"; - }; - B1D1AC122225A43600D64A6C /* ⚠️ SwiftLint */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - name = "⚠️ SwiftLint"; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "${PODS_ROOT}/SwiftLint/swiftlint\n"; - }; - CB374E980E51D4490F17AD40 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RiotTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - E96A5016582B740FB3EABBB3 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RiotPods-RiotNSE-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - FF06981FDA0DB688B8C52A41 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RiotPods-SiriIntents-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 24CBEC4A1F0EAD310093EABB /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B169328420F38BE300746532 /* SegmentedViewController.m in Sources */, - 32FD757824D2C9BA00BA7B37 /* Bundle.swift in Sources */, - 32242F1821E8FBF800725742 /* DefaultTheme.swift in Sources */, - ECE36F71258A373900122124 /* EncryptionKeyManager.swift in Sources */, - B1945CC4258A81FB0020D8D6 /* ThemeService.swift in Sources */, - B1945CC5258A81FE0020D8D6 /* ThemeIdentifier.swift in Sources */, - B1664BCA20F4E67600808783 /* ShareViewController.m in Sources */, - ECE36F76258A37EB00122124 /* KeychainStore.swift in Sources */, - ECE36F75258A37D800122124 /* KeyValueStore.swift in Sources */, - B1664BC620F4E67600808783 /* FallbackViewController.m in Sources */, - 32242F1621E8FBCC00725742 /* ThemeService.m in Sources */, - 24EEE5A31F23A8C300B3C705 /* AvatarGenerator.m in Sources */, - 32FD757224D2BEF700BA7B37 /* InfoPlist.swift in Sources */, - B1664BCF20F4E67600808783 /* ShareExtensionManager.m in Sources */, - 32FD756624D2AD5100BA7B37 /* BuildSettings.swift in Sources */, - B1DB4F0722301AF20065DBFA /* Character.swift in Sources */, - 3209451321F1C1D50088CAA2 /* BlackTheme.swift in Sources */, - 24EEE5A21F23A8B400B3C705 /* MXRoom+Riot.m in Sources */, - 32FD755924D15C7A00BA7B37 /* Configurable.swift in Sources */, - B1664BC720F4E67600808783 /* SharePresentingViewController.m in Sources */, - 32FD755224D074C700BA7B37 /* CommonConfiguration.swift in Sources */, - B1DB4F0F223170000065DBFA /* UserNameColorGenerator.swift in Sources */, - F0A8955F1F7D1FEA00BD6C2A /* MXRoomSummary+Riot.m in Sources */, - ECE36F78258A37FA00122124 /* Keychain.swift in Sources */, - 32242F1721E8FBE500725742 /* Theme.swift in Sources */, - B169328320F38AE600746532 /* RiotSettings.swift in Sources */, - 32242F0A21E8B21300725742 /* UIColor.swift in Sources */, - 32242F1921E8FBFB00725742 /* DarkTheme.swift in Sources */, - B1664BC820F4E67600808783 /* ShareDataSource.m in Sources */, - B1DCC63522E72D2200625807 /* UISearchBar.swift in Sources */, - B1664BCD20F4E67600808783 /* RecentRoomTableViewCell.m in Sources */, - B1DB4F0C2231494F0065DBFA /* String.swift in Sources */, - B169331720F3CBE000746532 /* RecentCellData.m in Sources */, - B1664BCC20F4E67600808783 /* RoomsListViewController.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 92726A3F1F58737A004AD26F /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 32FD757324D2BEF700BA7B37 /* InfoPlist.swift in Sources */, - 32FD757924D2C9BA00BA7B37 /* Bundle.swift in Sources */, - 92726A471F58737A004AD26F /* IntentHandler.m in Sources */, - 32FD755324D074C700BA7B37 /* CommonConfiguration.swift in Sources */, - ECE36F72258A373A00122124 /* EncryptionKeyManager.swift in Sources */, - ECE36F79258A37FB00122124 /* Keychain.swift in Sources */, - 32FD756724D2AD5100BA7B37 /* BuildSettings.swift in Sources */, - 32FD755A24D15C7A00BA7B37 /* Configurable.swift in Sources */, - 32FD754C24D06EBE00BA7B37 /* RiotSettings.swift in Sources */, - ECE36F74258A37D800122124 /* KeyValueStore.swift in Sources */, - ECE36F77258A37EC00122124 /* KeychainStore.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EC85D73F2477E5F7002C44C9 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - EC85D74F2477E8EB002C44C9 /* RiotSettings.swift in Sources */, - 32FD756824D2AD5100BA7B37 /* BuildSettings.swift in Sources */, - EC2B4EF224A1EF34005EB739 /* DataProtectionHelper.swift in Sources */, - EC85D7462477E5F7002C44C9 /* NotificationService.swift in Sources */, - 32FD755424D074C700BA7B37 /* CommonConfiguration.swift in Sources */, - EC9A3EC624E1632C00A8CFAE /* PushNotificationStore.swift in Sources */, - EC31F0952521FC4600D407DA /* PinCodePreferences.swift in Sources */, - 32FD757424D2BEF700BA7B37 /* InfoPlist.swift in Sources */, - ECE36F80258B579900122124 /* Memory.swift in Sources */, - ECB5D9902554221F000AD89C /* Keychain.swift in Sources */, - EC31F09C2524AE1400D407DA /* BiometricsAuthenticationPresenter.swift in Sources */, - EC85D752247C0F52002C44C9 /* UNUserNotificationCenter.swift in Sources */, - EC9A3EC724E1634100A8CFAE /* KeyValueStore.swift in Sources */, - 32FD757A24D2C9BA00BA7B37 /* Bundle.swift in Sources */, - EC31F0962521FC5300D407DA /* Strings.swift in Sources */, - EC31F0972521FC6300D407DA /* Images.swift in Sources */, - EC9A3EC824E1634800A8CFAE /* KeychainStore.swift in Sources */, - ECE36F73258A373B00122124 /* EncryptionKeyManager.swift in Sources */, - EC31F0942521FC3700D407DA /* LocalAuthenticationService.swift in Sources */, - 32FD755B24D15C7A00BA7B37 /* Configurable.swift in Sources */, - EC85D755247C0F84002C44C9 /* Constants.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F094A99E1B78D8F000B1FBBF /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - EC711B7B24A63B37008F830C /* SecretsSetupRecoveryKeyCoordinator.swift in Sources */, - B1F9072D255CDA1200DD14E5 /* RecentsViewController+RoomInvite.swift in Sources */, - B1B557D120EF5E3500210D55 /* MediaAlbumTableCell.m in Sources */, - 32607D71243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewState.swift in Sources */, - EC51E7A92514D2E100AAE7DB /* RoomInfoListViewModelType.swift in Sources */, - 324A2053225FC571004FE8B0 /* DeviceVerificationIncomingViewModel.swift in Sources */, - B1B557A120EF58AD00210D55 /* ContactTableViewCell.m in Sources */, - B1CE83DE2422817200D07506 /* KeyVerificationVerifyBySASViewModelType.swift in Sources */, - 32FD757024D2BEF700BA7B37 /* InfoPlist.swift in Sources */, - F083BE021E7009ED00A9B29C /* AvatarGenerator.m in Sources */, - B16DC23E258A8025004DAB1A /* ThemeIdentifier.swift in Sources */, - B157FAA023264AE900EBFBD4 /* SettingsDiscoveryThreePidDetailsViewModelType.swift in Sources */, - B1B5573A20EE6C4D00210D55 /* GroupRoomsViewController.m in Sources */, - B1B558F920EF768F00210D55 /* RoomOutgoingTextMsgWithoutSenderNameBubbleCell.m in Sources */, - B1284E3E2535FEA6003529D7 /* SecureBackupSetupIntroViewModelType.swift in Sources */, - B1FDF56021F5FE5500BA3834 /* KeyBackupSetupPassphraseViewAction.swift in Sources */, - B1B5573120EE6C4D00210D55 /* BugReportViewController.m in Sources */, - ECFBD5CB250A7AAF00DD5F5A /* DirectoryRoomTableViewCellVM.swift in Sources */, - 324A2051225FC571004FE8B0 /* DeviceVerificationIncomingViewState.swift in Sources */, - B1B4E9BF24D4703E004D5C33 /* BaseBubbleCell.swift in Sources */, - ECFBD5FD250FA59B00DD5F5A /* RoomCreationEventsModalViewController.swift in Sources */, - B16932A520F3A21C00746532 /* empty.mm in Sources */, - B1945CCB258C24500020D8D6 /* SSOAuthentificationSession.swift in Sources */, - 3232AB4A2256558300AD6A5C /* FlowTemplateCoordinator.swift in Sources */, - ECF57A4825090C23004BBF9D /* EnterNewRoomDetailsCoordinatorType.swift in Sources */, - ECFBD5D7250A7AAF00DD5F5A /* RoomsDirectoryCoordinatorBridgePresenter.swift in Sources */, - B19EFA3B21F8BB4100FC070E /* KeyBackupRecoverCoordinator.swift in Sources */, - B1B9DEDE22E9D9890065E677 /* EmojiServiceType.swift in Sources */, - EC1CA89724C9C9A200DE9EBF /* SetupBiometricsViewModelType.swift in Sources */, - 3232ABA9225730E100AD6A5C /* DeviceVerificationStartViewModel.swift in Sources */, - ECF57A4425090C23004BBF9D /* CreateRoomCoordinatorBridgePresenter.swift in Sources */, - B1B4E9BB24D46EB4004D5C33 /* SizingViewHeightStore.swift in Sources */, - 32DB557C22FDADE50016329E /* ServiceTermsModalScreenViewModelType.swift in Sources */, - B16932FA20F3C51A00746532 /* RecentCellData.m in Sources */, - EC85D72B2477DCF2002C44C9 /* KeyVerificationManuallyVerifyCoordinatorType.swift in Sources */, - B16932F220F3C49E00746532 /* GroupsDataSource.m in Sources */, - B1B5581C20EF625800210D55 /* RoomAvatarTitleView.m in Sources */, - EC1CA86124C1DEC400DE9EBF /* EnterPinCodeViewModel.swift in Sources */, - B169330820F3CA0E00746532 /* ContactsDataSource.m in Sources */, - EC1CA86924C1DEC400DE9EBF /* SetPinCoordinator.swift in Sources */, - B1B5574B20EE6C4D00210D55 /* MediaAlbumContentViewController.m in Sources */, - ECFBD5CC250A7AAF00DD5F5A /* DirectoryRoomTableViewCell.swift in Sources */, - EC49F5F92515016F003894A6 /* RoomInfoBasicViewData.swift in Sources */, - B1B5598820EFC3E000210D55 /* WidgetManager.m in Sources */, - B1DB4F0E22316FFF0065DBFA /* UserNameColorGenerator.swift in Sources */, - B157FAA123264AE900EBFBD4 /* SettingsDiscoveryThreePidDetailsCoordinatorType.swift in Sources */, - EC85D7302477DD33002C44C9 /* JitsiWidgetData.m in Sources */, - 32607D6C243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewController.swift in Sources */, - B1057789221304EC00334B1E /* KeyBackupSetupSuccessFromPassphraseViewController.swift in Sources */, - B1DCC61922E5E17100625807 /* EmojiPickerCoordinatorType.swift in Sources */, - B1C3360122F1ED600021BA8D /* MediaPickerCoordinatorType.swift in Sources */, - 32F6B96D2270623100BBA352 /* KeyVerificationDataLoadingViewModel.swift in Sources */, - B16932B120F3AC9200746532 /* RoomSearchDataSource.m in Sources */, - B1B5574520EE6C4D00210D55 /* StartChatViewController.m in Sources */, - 3232AB4C2256558300AD6A5C /* TemplateScreenCoordinator.swift in Sources */, - B1B5575920EE6C4D00210D55 /* HomeMessagesSearchViewController.m in Sources */, - B1B558DE20EF768F00210D55 /* RoomIncomingAttachmentBubbleCell.m in Sources */, - B1BEE74D23E093260003A4CB /* UserVerificationSessionStatusCoordinator.swift in Sources */, - B1B5574820EE6C4D00210D55 /* PeopleViewController.m in Sources */, - B1B5598720EFC3E000210D55 /* Widget.m in Sources */, - B1BD71C1238EA92100BA92E2 /* WidgetPermissionViewModel.swift in Sources */, - B1B557E320EF60B900210D55 /* MessagesSearchResultAttachmentBubbleCell.m in Sources */, - B1CE9F062216FB09000FAE6A /* EncryptionKeysExportPresenter.swift in Sources */, - 32607D72243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewAction.swift in Sources */, - B1B5574420EE6C4D00210D55 /* CallViewController.m in Sources */, - EC1CA86024C1DEC400DE9EBF /* EnterPinCodeViewAction.swift in Sources */, - ECFBD5E0250B684E00DD5F5A /* ChooseAvatarTableViewCell.swift in Sources */, - EC31F09A2524A60E00D407DA /* BiometricsAuthenticationPresenter.swift in Sources */, - 32FD757624D2C9BA00BA7B37 /* Bundle.swift in Sources */, - B12D7A0023E2462200FACEDC /* UserVerificationStartCoordinatorType.swift in Sources */, - EC711B9324A63B37008F830C /* SecretsRecoveryWithKeyViewController.swift in Sources */, - B1B5572220EE6C4D00210D55 /* RoomSettingsViewController.m in Sources */, - B1B5577320EE702800210D55 /* JitsiViewController.m in Sources */, - B169331620F3CAFC00746532 /* PublicRoomsDirectoryDataSource.m in Sources */, - B110871D21F087F4003554A5 /* KeyBackupSetupPassphraseViewState.swift in Sources */, - B1098C0121ECFE65000DDA48 /* KeyBackupSetupPassphraseCoordinatorType.swift in Sources */, - 32242F1221E8FBA900725742 /* ThemeService.m in Sources */, - B1B558E820EF768F00210D55 /* RoomIncomingAttachmentWithPaginationTitleBubbleCell.m in Sources */, - B1B558F320EF768F00210D55 /* RoomOutgoingAttachmentWithoutSenderInfoBubbleCell.m in Sources */, - B12D79FE23E2462200FACEDC /* UserVerificationStartViewController.swift in Sources */, - 32FD755724D15C7A00BA7B37 /* Configurable.swift in Sources */, - 32607D73243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyCoordinator.swift in Sources */, - B1B557BD20EF5B4500210D55 /* KeyboardGrowingTextView.m in Sources */, - EC711B9524A63B37008F830C /* SecretsRecoveryWithKeyViewModelType.swift in Sources */, - B1A68593229E807A00D6C09A /* RoomBubbleCellLayout.swift in Sources */, - ECFBD603250FA98200DD5F5A /* RoomCreationModalCoordinatorBridgePresenter.swift in Sources */, - B1B558F420EF768F00210D55 /* RoomOutgoingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m in Sources */, - B12676882523E4D100BE6B98 /* SecretsResetViewState.swift in Sources */, - B1B5572320EE6C4D00210D55 /* AttachmentsViewController.m in Sources */, - B18DEDDD2433967C0075FEF7 /* KeyVerificationFlow.swift in Sources */, - F083BDEE1E7009ED00A9B29C /* MXRoom+Riot.m in Sources */, - 328E410624CB168500DC4490 /* AppConfiguration.swift in Sources */, - B12676842523E4D100BE6B98 /* SecretsResetViewModelType.swift in Sources */, - EC711B9624A63B37008F830C /* SecretsRecoveryWithKeyViewState.swift in Sources */, - B120863722EF375F001F89E0 /* ReactionHistoryBridgeCoordinatorPresenter.swift in Sources */, - EC711B9224A63B37008F830C /* SecretsRecoveryWithKeyViewModel.swift in Sources */, - ECFBD5D0250A7AAF00DD5F5A /* ShowDirectoryViewModel.swift in Sources */, - B1B5598620EFC3E000210D55 /* RiotSettings.swift in Sources */, - B1CE83D52422817200D07506 /* KeyVerificationVerifyByScanningViewController.swift in Sources */, - EC711B8D24A63B37008F830C /* SecretsRecoveryGoal.swift in Sources */, - 3232ABA3225730E100AD6A5C /* DeviceVerificationStartCoordinatorType.swift in Sources */, - 3232AB4D2256558300AD6A5C /* TemplateScreenCoordinatorType.swift in Sources */, - B1B5581720EF625800210D55 /* PreviewRoomTitleView.m in Sources */, - B1DCC63F22E9A3AE00625807 /* EmojiItem+EmojiMart.swift in Sources */, - B16DC235258A723B004DAB1A /* SourceImage.swift in Sources */, - B1DCC61C22E5E17100625807 /* EmojiPickerViewAction.swift in Sources */, - B1098BDF21ECE09F000DDA48 /* Strings.swift in Sources */, - EC3B066924AC6ADE000DF9BF /* CrossSigningService.swift in Sources */, - B1BEE71523DF2ACF0003A4CB /* UserVerificationCoordinator.swift in Sources */, - 32607D70243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewModel.swift in Sources */, - B1B558C420EF768F00210D55 /* RoomIncomingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m in Sources */, - EC1CA86424C1DEC400DE9EBF /* EnterPinCodeCoordinator.swift in Sources */, - B1963B2E228F1C4900CBA17F /* BubbleReactionViewData.swift in Sources */, - B1C3361C22F32B4A0021BA8D /* SingleImagePickerPresenter.swift in Sources */, - B1B5572F20EE6C4D00210D55 /* ReadReceiptsViewController.m in Sources */, - B1BD71BC238E8F9600BA92E2 /* WidgetPermissionViewController.swift in Sources */, - B1B558CB20EF768F00210D55 /* RoomIncomingEncryptedTextMsgWithoutSenderInfoBubbleCell.m in Sources */, - B10A3E9824FE86AF007C380F /* SplitViewCoordinatorType.swift in Sources */, - B11291EA238D35590077B478 /* SlidingModalPresentable.swift in Sources */, - B157FAA823264BED00EBFBD4 /* SettingsDiscoveryThreePidDetailsCoordinatorBridgePresenter.swift in Sources */, - B169330B20F3CA3A00746532 /* Contact.m in Sources */, - B1A5B33E227ADF2A004CBA85 /* UIImage.swift in Sources */, - B113DD3D255E876A0022942A /* JitsiWellKnown.swift in Sources */, - EC51E7AC2514D2E100AAE7DB /* RoomInfoListCoordinatorType.swift in Sources */, - B1D4752A21EE52B10067973F /* KeyBackupSetupIntroViewController.swift in Sources */, - B10A3E9424FE8254007C380F /* AppCoordinatorType.swift in Sources */, - B108931F23AB80EF00802670 /* KeyVerificationIncomingRequestApprovalBubbleCell.swift in Sources */, - EC51E7922510C0A500AAE7DB /* SpanningSlidingModalContainerView.swift in Sources */, - B1CE83D42422817200D07506 /* KeyVerificationVerifiedViewController.swift in Sources */, - B1B5599220EFC5E400210D55 /* Analytics.m in Sources */, - B14F143422144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyViewAction.swift in Sources */, - B1098BF621ECFE65000DDA48 /* KeyBackupSetupPassphraseCoordinator.swift in Sources */, - B1B558C320EF768F00210D55 /* RoomIncomingEncryptedTextMsgWithoutSenderNameBubbleCell.m in Sources */, - B10A3E9D24FE88CB007C380F /* RootRouterType.swift in Sources */, - B1B9DEDC22E9B7440065E677 /* SerializationServiceType.swift in Sources */, - B16DC23C258A7D13004DAB1A /* ThemeService.swift in Sources */, - B110872521F098F0003554A5 /* ActivityIndicatorPresenter.swift in Sources */, - 32242F1521E8FBA900725742 /* DarkTheme.swift in Sources */, - B1A15BD625A526A200BDCA36 /* URLComponents.swift in Sources */, - B1D211E222BD193C00D939BD /* ReactionsMenuViewModel.swift in Sources */, - EC2B4EF124A1EEBD005EB739 /* DataProtectionHelper.swift in Sources */, - B16DC23A258A75B7004DAB1A /* SocialLoginButtonViewData.swift in Sources */, - B140B4A621F89E7600E3F5FE /* KeyBackupSetupCoordinatorBridgePresenter.swift in Sources */, - B1B5577420EE702900210D55 /* WidgetViewController.m in Sources */, - B1DCC63122E7026F00625807 /* EmojiPickerHeaderView.swift in Sources */, - ECB101302477CFDB00CF8C11 /* UITableView.swift in Sources */, - B1CE83DC2422817200D07506 /* KeyVerificationVerifyByScanningViewState.swift in Sources */, - B139C21B21FE5B9200BB68EC /* KeyBackupRecoverFromPassphraseViewModel.swift in Sources */, - EC1CA87224C823E700DE9EBF /* KeyValueStore.swift in Sources */, - B1C45A8C232A8C2600165425 /* SettingsIdentityServerViewAction.swift in Sources */, - 32A6001E22C661100042C1D9 /* EditHistoryCoordinatorBridgePresenter.swift in Sources */, - B1B5574A20EE6C4D00210D55 /* MediaPickerViewController.m in Sources */, - B1BEE74623E093260003A4CB /* UserVerificationSessionStatusViewState.swift in Sources */, - EC711B9724A63B37008F830C /* SecretsRecoveryCoordinatorType.swift in Sources */, - ECFBD5DA250A7ABD00DD5F5A /* MXThirdPartyProtocolInstance.swift in Sources */, - ECB101312477CFDB00CF8C11 /* UILabel.swift in Sources */, - B1B5598520EFC3E000210D55 /* RageShakeManager.m in Sources */, - B1A6C111238BD236002882FD /* SlidingModalContainerView.swift in Sources */, - B1DCC62D22E61EAF00625807 /* EmojiPickerViewCell.swift in Sources */, - 3232ABA8225730E100AD6A5C /* DeviceVerificationStartViewState.swift in Sources */, - ECF57A5525091B4D004BBF9D /* RoomCreationParameters.swift in Sources */, - B1B558D420EF768F00210D55 /* RoomOutgoingEncryptedTextMsgWithoutSenderInfoBubbleCell.m in Sources */, - B169331420F3CAFC00746532 /* PublicRoomTableViewCell.m in Sources */, - 32BF995721FB07A400698084 /* SettingsKeyBackupTableViewSection.swift in Sources */, - 3291DC8D23E0BFF10009732F /* SecurityViewController.m in Sources */, - B18DEDD4243377C10075FEF7 /* KeyVerificationSelfVerifyWaitViewModelType.swift in Sources */, - B1C45A88232A8C2600165425 /* SettingsIdentityServerViewState.swift in Sources */, - B1C782302500EAF500337EB9 /* TabBarCoordinatorType.swift in Sources */, - B1C782322500F96700337EB9 /* SplitViewPresentable.swift in Sources */, - B14F142F22144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyViewModelType.swift in Sources */, - 32DB557822FDADE50016329E /* ServiceTermsModalScreenViewState.swift in Sources */, - B1B558E120EF768F00210D55 /* RoomMembershipCollapsedBubbleCell.m in Sources */, - EC51E7AB2514D2E100AAE7DB /* RoomInfoListViewState.swift in Sources */, - B1B5571A20EE6C4D00210D55 /* SettingsViewController.m in Sources */, - B1CE9EFD22148703000FAE6A /* SignOutAlertPresenter.swift in Sources */, - 32F6B9692270623100BBA352 /* KeyVerificationDataLoadingCoordinator.swift in Sources */, - B125FE1D231D5DE400B72806 /* SettingsDiscoveryViewModel.swift in Sources */, - 32863A5A2384070300D07C4A /* RiotSharedSettings.swift in Sources */, - B1B5594720EF7BD000210D55 /* RoomCollectionViewCell.m in Sources */, - B10CFBC32268D99D00A5842E /* JitsiService.swift in Sources */, - B1A6C10B23882B6C002882FD /* SlidingModalPresentationAnimator.swift in Sources */, - B158E72125485B9E000A7F75 /* Base32Coder.swift in Sources */, - B1B558C120EF768F00210D55 /* RoomIncomingEncryptedAttachmentWithPaginationTitleBubbleCell.m in Sources */, - ECFBD5D8250A7AAF00DD5F5A /* RoomsDirectoryCoordinatorType.swift in Sources */, - B1B5573E20EE6C4D00210D55 /* RiotNavigationController.m in Sources */, - B1B5593B20EF7BAC00210D55 /* TableViewCellWithCheckBoxAndLabel.m in Sources */, - B1B5581A20EF625800210D55 /* ExpandedRoomTitleView.m in Sources */, - B1107EC82200B0720038014B /* KeyBackupRecoverSuccessViewController.swift in Sources */, - B1BEE74C23E093260003A4CB /* UserVerificationSessionStatusViewController.swift in Sources */, - EC711BAB24A63B58008F830C /* SecureBackupSetupIntroViewController.swift in Sources */, - B1B9DEEB22EB34EF0065E677 /* ReactionHistoryViewModel.swift in Sources */, - B1C543B023A2871300DCA1FA /* KeyVerificationBaseBubbleCell.swift in Sources */, - B1963B2F228F1C4900CBA17F /* BubbleReactionViewCell.swift in Sources */, - B1B558E920EF768F00210D55 /* RoomSelectedStickerBubbleCell.m in Sources */, - B1C3360222F1ED600021BA8D /* MediaPickerCoordinatorBridgePresenter.swift in Sources */, - B1B558DF20EF768F00210D55 /* RoomOutgoingTextMsgWithoutSenderInfoBubbleCell.m in Sources */, - F083BE041E7009ED00A9B29C /* Tools.m in Sources */, - 3275FD8C21A5A2C500B9C13D /* TermsView.swift in Sources */, - B1B9DEE822EB34EF0065E677 /* ReactionHistoryCoordinatorType.swift in Sources */, - EC711B7424A63B37008F830C /* SecretsSetupRecoveryKeyViewModelType.swift in Sources */, - B14F143122144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyViewState.swift in Sources */, - B16C028D25A71CA3008CA7B1 /* CustomSchemeURLConstants.swift in Sources */, - 32DB557F22FDADE50016329E /* ServiceTermsModalScreenCoordinator.swift in Sources */, - EC31F014251B53AD00D407DA /* RoomInfoBasicView.swift in Sources */, - EC1CA85F24C1DEC400DE9EBF /* EnterPinCodeViewModelType.swift in Sources */, - B1098C1121ED07E4000DDA48 /* NavigationRouterType.swift in Sources */, - B1B5573D20EE6C4D00210D55 /* WebViewViewController.m in Sources */, - 3209451221F1C1430088CAA2 /* BlackTheme.swift in Sources */, - B1B5572720EE6C4D00210D55 /* RoomSearchViewController.m in Sources */, - B14084C623BF76890010F692 /* BubbleCellContentView.swift in Sources */, - F05927C91FDED836009F2A68 /* MXGroup+Riot.m in Sources */, - B1B5594520EF7BD000210D55 /* TableViewCellWithCollectionView.m in Sources */, - B1A6C109238828A6002882FD /* SlidingModalPresentationDelegate.swift in Sources */, - ECAE7AEE24EFDD1F002FA813 /* MXSessionState.swift in Sources */, - EC31F012251B4DBD00D407DA /* RoomInfoListViewData.swift in Sources */, - 32DB557722FDADE50016329E /* ServiceTermsModalCoordinator.swift in Sources */, - ECF57A4B25090C23004BBF9D /* EnterNewRoomDetailsViewModel.swift in Sources */, - B185145B24B8C98200EE19EA /* MajorUpdateViewController.swift in Sources */, - 32DB557922FDADE50016329E /* ServiceTermsModalScreenViewModel.swift in Sources */, - ECFBD5F8250FA59B00DD5F5A /* RoomCreationEventsModalCoordinator.swift in Sources */, - B1B4E9BA24D46EB4004D5C33 /* SizableBubbleCell.swift in Sources */, - 32891D75226728EE00C82226 /* KeyVerificationDataLoadingViewController.swift in Sources */, - F083BDEF1E7009ED00A9B29C /* UINavigationController+Riot.m in Sources */, - B1B5581F20EF625800210D55 /* SimpleRoomTitleView.m in Sources */, - B1C562E2228C7C8D0037F12A /* RoomContextualMenuViewController.swift in Sources */, - ECFBD5F9250FA59B00DD5F5A /* RoomCreationEventsModalViewModelType.swift in Sources */, - B169330020F3C97D00746532 /* RoomDataSource.m in Sources */, - B1B558ED20EF768F00210D55 /* RoomIncomingTextMsgWithoutSenderNameBubbleCell.m in Sources */, - B1B5571920EE6C4D00210D55 /* LanguagePickerViewController.m in Sources */, - B183226823F561380035B2E8 /* CameraAccessAlertPresenter.swift in Sources */, - 3232AB512256558300AD6A5C /* TemplateScreenViewAction.swift in Sources */, - B1A6805424B7C65200E312CC /* MajorUpdateManager.swift in Sources */, - 3232AB4E2256558300AD6A5C /* TemplateScreenViewModelType.swift in Sources */, - 32DB557D22FDADE50016329E /* ServiceTermsModalScreenCoordinatorType.swift in Sources */, - B1B5590520EF768F00210D55 /* RoomIncomingTextMsgWithoutSenderInfoBubbleCell.m in Sources */, - 3232ABA5225730E100AD6A5C /* DeviceVerificationStartViewModelType.swift in Sources */, - B1B336C1242B933700F95EC4 /* KeyVerificationSelfVerifyStartCoordinatorType.swift in Sources */, - EC85D71B2477DCD7002C44C9 /* KeyVerificationScanConfirmationCoordinatorType.swift in Sources */, - B1B558DD20EF768F00210D55 /* RoomIncomingEncryptedTextMsgBubbleCell.m in Sources */, - B1098BE521ECE1FC000DDA48 /* Storyboards.swift in Sources */, - 3232ABC2225B996200AD6A5C /* Themable.swift in Sources */, - ECFBD5D3250A7AAF00DD5F5A /* ShowDirectoryCoordinator.swift in Sources */, - 32A6001B22C661100042C1D9 /* EditHistoryViewAction.swift in Sources */, - 3232ABA7225730E100AD6A5C /* DeviceVerificationStartCoordinator.swift in Sources */, - B1D4752721EE4E630067973F /* KeyboardAvoider.swift in Sources */, - B1D4752821EE4E630067973F /* KeyboardNotification.swift in Sources */, - B1D1BDA622BBAFB500831367 /* ReactionsMenuView.swift in Sources */, - EC51E7AD2514D2E100AAE7DB /* RoomInfoListCoordinator.swift in Sources */, - EC711B4624A63B13008F830C /* MXRecoveryService.swift in Sources */, - EC1CA86C24C1DEC400DE9EBF /* SetPinCoordinatorType.swift in Sources */, - EC1CA86324C1DEC400DE9EBF /* EnterPinCodeCoordinatorType.swift in Sources */, - B18DEDD6243377C10075FEF7 /* KeyVerificationSelfVerifyWaitCoordinator.swift in Sources */, - 32DB557A22FDADE50016329E /* ServiceTermsModalScreenViewController.swift in Sources */, - B1B9DEF422EB426D0065E677 /* ReactionHistoryViewCell.swift in Sources */, - B1B5573C20EE6C4D00210D55 /* MasterTabBarController.m in Sources */, - B1DCC61B22E5E17100625807 /* EmojiPickerCoordinator.swift in Sources */, - ECF57A4525090C23004BBF9D /* CreateRoomCoordinatorType.swift in Sources */, - EC85D7292477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewModelType.swift in Sources */, - 32F6B96E2270623100BBA352 /* KeyVerificationDataLoadingViewModelType.swift in Sources */, - B185145524B7CFA700EE19EA /* AppVersion.swift in Sources */, - EC711B7E24A63B37008F830C /* SecretsSetupRecoveryPassphraseCoordinatorType.swift in Sources */, - B1B5592C20EF7A5D00210D55 /* TableViewCellWithButton.m in Sources */, - 32242F1421E8FBA900725742 /* DefaultTheme.swift in Sources */, - B1963B2D228F1C4900CBA17F /* BubbleReactionsViewModel.swift in Sources */, - 32242F1321E8FBA900725742 /* Theme.swift in Sources */, - B108932523AB93A200802670 /* KeyVerificationConclusionViewData.swift in Sources */, - B1B5582520EF638A00210D55 /* RoomMemberTitleView.m in Sources */, - B1560DA224B65AFA00490F50 /* LaunchLoadingView.swift in Sources */, - B1B5582C20EF666100210D55 /* DirectoryRecentTableViewCell.m in Sources */, - B1B558E420EF768F00210D55 /* RoomMembershipWithPaginationTitleBubbleCell.m in Sources */, - B18DEDD8243377C10075FEF7 /* KeyVerificationSelfVerifyWaitCoordinatorType.swift in Sources */, - B1B5573620EE6C4D00210D55 /* GroupsViewController.m in Sources */, - B125FE21231D5E1D00B72806 /* SettingsDiscoveryViewAction.swift in Sources */, - B108932323AB908A00802670 /* KeyVerificationRequestStatusViewData.swift in Sources */, - B142317A22CCFA2000FFA96A /* EditHistoryCell.swift in Sources */, - ECF57A50250913E4004BBF9D /* MXKTableViewCellWithLabelAndSwitch.swift in Sources */, - B1DCC62622E60CC600625807 /* EmojiItem.swift in Sources */, - B10A3E9324FE8254007C380F /* AppCoordinator.swift in Sources */, - B1B5572A20EE6C4D00210D55 /* RoomMemberDetailsViewController.m in Sources */, - EC3B066C24AC6ADE000DF9BF /* CrossSigningSetupBannerCell.swift in Sources */, - ECF57A4E25090C23004BBF9D /* EnterNewRoomDetailsViewModelType.swift in Sources */, - B1B5590120EF768F00210D55 /* RoomMembershipExpandedWithPaginationTitleBubbleCell.m in Sources */, - 32F6B96B2270623100BBA352 /* KeyVerificationDataLoadingViewAction.swift in Sources */, - B1B558C920EF768F00210D55 /* RoomIncomingEncryptedAttachmentWithoutSenderInfoBubbleCell.m in Sources */, - B1B5571B20EE6C4D00210D55 /* DeactivateAccountViewController.m in Sources */, - B1A67946257559CF00BB0C69 /* RootTabEmptyView.swift in Sources */, - B1DCC63922E85E9A00625807 /* EmojiMartStore.swift in Sources */, - B10A3E9024FE4368007C380F /* ElementViewController.swift in Sources */, - B1B5590620EF768F00210D55 /* RoomMembershipCollapsedWithPaginationTitleBubbleCell.m in Sources */, - EC51E7AE2514D2E100AAE7DB /* RoomInfoListViewModel.swift in Sources */, - B139C21D21FE5BF500BB68EC /* KeyBackupRecoverFromPassphraseViewModelType.swift in Sources */, - B157FA9F23264AE900EBFBD4 /* SettingsDiscoveryThreePidDetailsCoordinator.swift in Sources */, - B1CE83D92422817200D07506 /* KeyVerificationVerifyByScanningViewAction.swift in Sources */, - 3AA7D00C2587FF0000420A72 /* EncryptionKeyManager.swift in Sources */, - B1C45A8B232A8C2600165425 /* SettingsIdentityServerViewModel.swift in Sources */, - EC711B8224A63B37008F830C /* SecretsSetupRecoveryPassphraseViewModelType.swift in Sources */, - B12D7A0123E2462200FACEDC /* UserVerificationStartViewModel.swift in Sources */, - B12C56EF2396CB5E00FAC6DE /* RoomMessageURLParser.swift in Sources */, - EC711B9924A63B37008F830C /* SecretsRecoveryCoordinator.swift in Sources */, - B1BEE73623DF44A60003A4CB /* UserVerificationSessionsStatusCoordinatorType.swift in Sources */, - B16DC238258A7595004DAB1A /* SocialLoginButtonStyle.swift in Sources */, - B1C45A86232A8C2600165425 /* SettingsIdentityServerViewModelType.swift in Sources */, - F083BE031E7009ED00A9B29C /* EventFormatter.m in Sources */, - B157FAA623264AE900EBFBD4 /* SettingsDiscoveryThreePidDetailsViewController.swift in Sources */, - B126768A2523E4D100BE6B98 /* SecretsResetViewModel.swift in Sources */, - B1DCC62422E60CA900625807 /* EmojiPickerCategoryViewData.swift in Sources */, - B1550FCB2420E8F500CE097B /* QRCodeReaderViewController.swift in Sources */, - B124BBD725645F3F0028996D /* RoomIdComponents.swift in Sources */, - 324A2056225FC571004FE8B0 /* DeviceVerificationIncomingCoordinator.swift in Sources */, - B16932F720F3C50E00746532 /* RecentsDataSource.m in Sources */, - B1DCC63B22E85EF800625807 /* EmojiMartCategory.swift in Sources */, - 3232AB4F2256558300AD6A5C /* TemplateScreenViewController.swift in Sources */, - B1B558FC20EF768F00210D55 /* RoomIncomingTextMsgWithPaginationTitleBubbleCell.m in Sources */, - B14EED1D257D85E000448735 /* SocialLoginButton.swift in Sources */, - B1B5572920EE6C4D00210D55 /* RoomFilesViewController.m in Sources */, - B1BEE74B23E093260003A4CB /* UserVerificationSessionStatusViewAction.swift in Sources */, - B1098C1021ED07E4000DDA48 /* Presentable.swift in Sources */, - B1BEE73923DF44A60003A4CB /* UserVerificationSessionsStatusViewController.swift in Sources */, - B1B558E020EF768F00210D55 /* RoomOutgoingTextMsgBubbleCell.m in Sources */, - EC711B7824A63B37008F830C /* SecretsSetupRecoveryKeyViewModel.swift in Sources */, - B1C562E3228C7C8D0037F12A /* RoomContextualMenuPresenter.swift in Sources */, - B12676862523E4D100BE6B98 /* SecretsResetCoordinatorType.swift in Sources */, - EC85D7182477DCD7002C44C9 /* KeyVerificationScanConfirmationViewModelType.swift in Sources */, - ECF57A5E2509265A004BBF9D /* InsettedTextField.swift in Sources */, - B1B5593C20EF7BAC00210D55 /* TableViewCellWithCheckBoxes.m in Sources */, - 32891D6B2264CBA300C82226 /* SimpleScreenTemplateViewController.swift in Sources */, - EC711B7924A63B37008F830C /* SecretsSetupRecoveryKeyViewController.swift in Sources */, - 32FD755024D074C700BA7B37 /* CommonConfiguration.swift in Sources */, - B1CA3A2721EF6914000D1D89 /* UIViewController.swift in Sources */, - 322C110822BBC6F80043FEAC /* WidgetManagerConfig.swift in Sources */, - EC1CA86624C1DEC400DE9EBF /* EnterPinCodeViewController.swift in Sources */, - ECFBD5FC250FA59B00DD5F5A /* RoomCreationEventsModalViewState.swift in Sources */, - F0D2ADA11F6AA5FD00A7097D /* MXRoomSummary+Riot.m in Sources */, - B1CE83B92422815C00D07506 /* KeyVerificationKind.swift in Sources */, - EC85D7262477DCF2002C44C9 /* KeyVerificationManuallyVerifyCoordinator.swift in Sources */, - B1BEE71423DF2ACF0003A4CB /* UserVerificationCoordinatorType.swift in Sources */, - B1B5596F20EFA85D00210D55 /* EncryptionInfoView.m in Sources */, - ECFBD5D1250A7AAF00DD5F5A /* ShowDirectoryViewController.swift in Sources */, - B12676892523E4D100BE6B98 /* SecretsResetViewAction.swift in Sources */, - B1B5573820EE6C4D00210D55 /* GroupParticipantsViewController.m in Sources */, - EC51E7B02514D2E100AAE7DB /* RoomInfoCoordinatorType.swift in Sources */, - 3232ABAB225730E100AD6A5C /* KeyVerificationCoordinator.swift in Sources */, - B1BEE73B23DF44A60003A4CB /* UserVerificationSessionsStatusCoordinator.swift in Sources */, - B1B5583E20EF6E7F00210D55 /* GroupRoomTableViewCell.m in Sources */, - B14F143522144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyViewController.swift in Sources */, - B1DCC61E22E5E17100625807 /* EmojiPickerViewModel.swift in Sources */, - B1B5574F20EE6C4D00210D55 /* RoomsViewController.m in Sources */, - EC85D73A2477DDB8002C44C9 /* DirectorySectionHeaderContainerView.m in Sources */, - ECFBD5E3250B6CAB00DD5F5A /* ChooseAvatarTableViewCellVM.swift in Sources */, - EC711B8524A63B37008F830C /* SecretsRecoveryWithPassphraseCoordinator.swift in Sources */, - 32863A5C2384074C00D07C4A /* RiotSettingAllowedWidgets.swift in Sources */, - EC711B8724A63B37008F830C /* SecretsRecoveryWithPassphraseViewModelType.swift in Sources */, - B1B9DEDA22E9B7350065E677 /* SerializationService.swift in Sources */, - B1B5572520EE6C4D00210D55 /* RoomMessagesSearchViewController.m in Sources */, - B197B7C6243DE947005ABBF3 /* EncryptionTrustLevelBadgeImageHelper.swift in Sources */, - EC51E7A82514D2E100AAE7DB /* RoomInfoListViewController.swift in Sources */, - B12D79FD23E2462200FACEDC /* UserVerificationStartViewModelType.swift in Sources */, - B1C543AE23A286A000DCA1FA /* KeyVerificationRequestStatusBubbleCell.swift in Sources */, - B139C22121FE5D9D00BB68EC /* KeyBackupRecoverFromPassphraseViewState.swift in Sources */, - EC711B8124A63B37008F830C /* SecretsSetupRecoveryPassphraseViewAction.swift in Sources */, - B1B5579120EF568D00210D55 /* GroupInviteTableViewCell.m in Sources */, - B1B5579A20EF575B00210D55 /* ForgotPasswordInputsView.m in Sources */, - B1B12B2922942315002CB419 /* UITouch.swift in Sources */, - B1B558CC20EF768F00210D55 /* RoomOutgoingEncryptedAttachmentWithoutSenderInfoBubbleCell.m in Sources */, - B183226623F55D6B0035B2E8 /* CameraAccessManager.swift in Sources */, - B1B5571D20EE6C4D00210D55 /* HomeViewController.m in Sources */, - B1CE83DD2422817200D07506 /* KeyVerificationVerifyBySASViewAction.swift in Sources */, - B1C45A84232A8C2600165425 /* SettingsIdentityServerCoordinatorType.swift in Sources */, - EC711B7524A63B37008F830C /* SecretsSetupRecoveryKeyCoordinatorType.swift in Sources */, - B1DCC63722E8541700625807 /* EmojiStore.swift in Sources */, - 3232ABA6225730E100AD6A5C /* DeviceVerificationStartViewController.swift in Sources */, - B16932EA20F3C39000746532 /* UnifiedSearchRecentsDataSource.m in Sources */, - B16D6354257D8FB0008BDC97 /* SocialLoginButtonFactory.swift in Sources */, - B10A3E9924FE86AF007C380F /* SplitViewCoordinator.swift in Sources */, - B1BEE72A23DF38B20003A4CB /* UserVerificationSessionStatusCell.swift in Sources */, - B1C45A8A232A8C2600165425 /* SettingsIdentityServerCoordinatorBridgePresenter.swift in Sources */, - B1C7822F2500EAF500337EB9 /* TabBarCoordinator.swift in Sources */, - B1B557DE20EF5FBB00210D55 /* FilesSearchTableViewCell.m in Sources */, - B1B5574020EE6C4D00210D55 /* SegmentedViewController.m in Sources */, - ECF57A4C25090C23004BBF9D /* EnterNewRoomDetailsViewAction.swift in Sources */, - EC711BAE24A63B58008F830C /* SecureBackupSetupCoordinator.swift in Sources */, - B1B5599320EFC5E400210D55 /* DecryptionFailure.m in Sources */, - ECFBD5D5250A7AAF00DD5F5A /* ShowDirectoryViewModelType.swift in Sources */, - B1CE83E12422817200D07506 /* KeyVerificationVerifyBySASCoordinator.swift in Sources */, - EC619C1924DAD96000663A80 /* UIScrollView.swift in Sources */, - B125FE1F231D5DF700B72806 /* SettingsDiscoveryViewModelType.swift in Sources */, - EC85D7162477DCD7002C44C9 /* KeyVerificationScanConfirmationViewAction.swift in Sources */, - EC711BAF24A63B58008F830C /* SecureBackupSetupCoordinatorType.swift in Sources */, - ECFBD5D4250A7AAF00DD5F5A /* ShowDirectoryCoordinatorType.swift in Sources */, - EC1CA89C24C9C9A200DE9EBF /* SetupBiometricsViewModel.swift in Sources */, - B157FAA323264AE900EBFBD4 /* SettingsDiscoveryThreePidDetailsViewState.swift in Sources */, - B1098BF921ECFE65000DDA48 /* KeyBackupSetupCoordinator.swift in Sources */, - B140B4A821F8AB4600E3F5FE /* KeyBackupRecoverCoordinatorBridgePresenter.swift in Sources */, - B1098BFE21ECFE65000DDA48 /* KeyBackupSetupPassphraseViewModelType.swift in Sources */, - EC85D7252477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewAction.swift in Sources */, - B1B558BE20EF768F00210D55 /* RoomOutgoingEncryptedAttachmentWithPaginationTitleBubbleCell.m in Sources */, - F083BDED1E7009ED00A9B29C /* MXKRoomBubbleTableViewCell+Riot.m in Sources */, - B1B9DEEF22EB34EF0065E677 /* ReactionHistoryViewState.swift in Sources */, - B1DCC62022E5EDA400625807 /* EmojiPickerCoordinatorBridgePresenter.swift in Sources */, - B1B557A820EF5A1B00210D55 /* DeviceTableViewCell.m in Sources */, - B1B5572620EE6C4D00210D55 /* RoomFilesSearchViewController.m in Sources */, - B1B5583120EF66BA00210D55 /* RoomIdOrAliasTableViewCell.m in Sources */, - B1CA3A2921EF692B000D1D89 /* UIView.swift in Sources */, - B1A6C10D23882D1D002882FD /* SlidingModalPresentationController.swift in Sources */, - 32A6001D22C661100042C1D9 /* EditHistoryCoordinatorType.swift in Sources */, - F083BDFA1E7009ED00A9B29C /* RoomPreviewData.m in Sources */, - B1B557B420EF5AEF00210D55 /* EventDetailsView.m in Sources */, - EC85D751247C0E8F002C44C9 /* UNUserNotificationCenter.swift in Sources */, - B1BEE73823DF44A60003A4CB /* UserVerificationSessionsStatusViewAction.swift in Sources */, - ECDC15F224AF41D2003437CF /* FormattedBodyParser.swift in Sources */, - B1B5577E20EE84BF00210D55 /* IncomingCallView.m in Sources */, - B1CE83E22422817200D07506 /* KeyVerificationVerifyBySASViewState.swift in Sources */, - EC51E7AF2514D2E100AAE7DB /* RoomInfoListViewAction.swift in Sources */, - B1DCC62822E60CE300625807 /* EmojiCategory.swift in Sources */, - B14084CC23BF9DE90010F692 /* KeyVerificationConclusionWithPaginationTitleBubbleCell.swift in Sources */, - B1CE83D62422817200D07506 /* KeyVerificationVerifyByScanningCoordinator.swift in Sources */, - B1B5578F20EF568D00210D55 /* GroupTableViewCell.m in Sources */, - 32D5D16023E1EE2700E3E37C /* ManageSessionViewController.m in Sources */, - B1B5573220EE6C4D00210D55 /* GroupHomeViewController.m in Sources */, - B1B5595220EF9A8700210D55 /* RecentTableViewCell.m in Sources */, - B158253B2475350A00604D79 /* EventFormatter+DTCoreTextFix.m in Sources */, - EC711B9824A63B37008F830C /* SecretsRecoveryCoordinatorBridgePresenter.swift in Sources */, - 32F6B96C2270623100BBA352 /* KeyVerificationDataLoadingCoordinatorType.swift in Sources */, - B14084CA23BF89310010F692 /* KeyVerificationRequestStatusWithPaginationTitleBubbleCell.swift in Sources */, - B1DCC61D22E5E17100625807 /* EmojiPickerViewModelType.swift in Sources */, - B1B5574120EE6C4D00210D55 /* RecentsViewController.m in Sources */, - B1D250D82118AA0A000F4E93 /* RoomPredecessorBubbleCell.m in Sources */, - B12676832523E4D100BE6B98 /* SecretsResetCoordinator.swift in Sources */, - B1B5577120EE702800210D55 /* StickerPickerViewController.m in Sources */, - EC711B7624A63B37008F830C /* SecretsSetupRecoveryKeyViewState.swift in Sources */, - 32FDC1CD2386CD390084717A /* RiotSettingIntegrationProvisioning.swift in Sources */, - B158E72325485EAB000A7F75 /* JitsiJWTTokenBuilder.swift in Sources */, - B1BEE73523DF44A60003A4CB /* UserVerificationSessionsStatusViewModel.swift in Sources */, - B1284E402535FEBA003529D7 /* SecureBackupSetupIntroViewModel.swift in Sources */, - B1B5572020EE6C4D00210D55 /* ContactsTableViewController.m in Sources */, - EC85D7142477DCD7002C44C9 /* KeyVerificationScanConfirmationViewState.swift in Sources */, - EC711B9124A63B37008F830C /* SecretsRecoveryWithKeyCoordinatorType.swift in Sources */, - B1B5581920EF625800210D55 /* RoomTitleView.m in Sources */, - B1098BE321ECE09F000DDA48 /* RiotDefaults.swift in Sources */, - EC711B9424A63B37008F830C /* SecretsRecoveryWithKeyViewAction.swift in Sources */, - EC1CA86824C1DEC400DE9EBF /* SetPinCoordinatorBridgePresenter.swift in Sources */, - B1C456C92548CF09002E5734 /* JitsiJWTPayload.swift in Sources */, - B1C562CA2289C2690037F12A /* UIGestureRecognizer.swift in Sources */, - B1C562CC228AB3510037F12A /* UIStackView.swift in Sources */, - B1B557BE20EF5B4500210D55 /* RoomInputToolbarView.m in Sources */, - EC51E7902510B7C700AAE7DB /* AutosizedTableView.swift in Sources */, - 32A6001922C661100042C1D9 /* EditHistoryViewModelType.swift in Sources */, - B1B5573B20EE6C4D00210D55 /* FavouritesViewController.m in Sources */, - B1C45A87232A8C2600165425 /* SettingsIdentityServerCoordinator.swift in Sources */, - B1B5579920EF575B00210D55 /* AuthInputsView.m in Sources */, - B1B5597520EFB02A00210D55 /* InviteRecentTableViewCell.m in Sources */, - B1B5571E20EE6C4D00210D55 /* ContactDetailsViewController.m in Sources */, - B1BB649324FD428A008238AE /* AppDelegate.swift in Sources */, - B1D44999243CD73700959523 /* RoomPowerLevel.swift in Sources */, - B1798302211B13B3001FD722 /* OnBoardingManager.swift in Sources */, - B1BEE74823E093260003A4CB /* UserVerificationSessionStatusViewModel.swift in Sources */, - EC51E78D250FC15000AAE7DB /* RoomCreationEventRowViewModel.swift in Sources */, - EC1CA89624C9C9A200DE9EBF /* SetupBiometricsCoordinator.swift in Sources */, - EC711B9024A63B37008F830C /* SecretsRecoveryWithKeyCoordinator.swift in Sources */, - B1A6C10723881EF2002882FD /* SlidingModalPresenter.swift in Sources */, - B1B5573520EE6C4D00210D55 /* GroupDetailsViewController.m in Sources */, - B12D7A0223E2462200FACEDC /* UserVerificationStartViewAction.swift in Sources */, - EC85D7372477DD97002C44C9 /* LocalContactsSectionHeaderContainerView.m in Sources */, - B1DCC61A22E5E17100625807 /* EmojiPickerViewController.swift in Sources */, - B1A15BD425A4BAA800BDCA36 /* CustomSchemeURLParser.swift in Sources */, - ECFBD5C9250A7AAF00DD5F5A /* RoomsDirectoryCoordinator.swift in Sources */, - B1963B32228F1C6B00CBA17F /* BubbleReactionsViewModelType.swift in Sources */, - EC1CA89A24C9C9A200DE9EBF /* SetupBiometricsCoordinatorType.swift in Sources */, - 32A6001722C661100042C1D9 /* EditHistoryViewController.swift in Sources */, - B1098BFA21ECFE65000DDA48 /* KeyBackupSetupPassphraseViewModel.swift in Sources */, - EC51E7A62514D2E100AAE7DB /* RoomInfoCoordinatorBridgePresenter.swift in Sources */, - EC1CA87524C8259700DE9EBF /* KeychainStore.swift in Sources */, - B1B5575220EE6C4D00210D55 /* RoomKeyRequestViewController.m in Sources */, - 32A6001A22C661100042C1D9 /* EditHistoryCoordinator.swift in Sources */, - B1A15BDB25A6680E00BDCA36 /* SSOURLConstants.swift in Sources */, - F083BD1E1E7009ED00A9B29C /* LegacyAppDelegate.m in Sources */, - B1B558E620EF768F00210D55 /* RoomIncomingAttachmentWithoutSenderInfoBubbleCell.m in Sources */, - B1B4E9BD24D4701F004D5C33 /* BubbleCellReactionsDisplayable.swift in Sources */, - 329E746722CD02EA006F9797 /* BubbleReactionActionViewCell.swift in Sources */, - B1098BFB21ECFE65000DDA48 /* KeyBackupSetupCoordinatorType.swift in Sources */, - B1098BF721ECFE65000DDA48 /* PasswordStrength.swift in Sources */, - B14EED19257992D700448735 /* SocialLoginListView.swift in Sources */, - EC711B8424A63B37008F830C /* SecretsSetupRecoveryPassphraseInputMode.swift in Sources */, - B1B336BE242B933700F95EC4 /* KeyVerificationSelfVerifyStartViewState.swift in Sources */, - B1BEE73423DF44A60003A4CB /* UserVerificationSessionsStatusViewModelType.swift in Sources */, - B18DEDD9243377C10075FEF7 /* KeyVerificationSelfVerifyWaitViewController.swift in Sources */, - EC1CA89524C9C9A200DE9EBF /* SetupBiometricsViewController.swift in Sources */, - 324A2052225FC571004FE8B0 /* DeviceVerificationIncomingViewAction.swift in Sources */, - B1F9072F255CE06000DD14E5 /* InviteRecentTableViewCell+ButtonViewsUpdate.swift in Sources */, - EC85D72C2477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewState.swift in Sources */, - EC1CA86E24C5BA4500DE9EBF /* PinCodePreferences.swift in Sources */, - B105778D2213051E00334B1E /* KeyBackupSetupSuccessFromRecoveryKeyViewController.swift in Sources */, - B1B557D820EF5EA900210D55 /* RoomActivitiesView.m in Sources */, - B1B9DEE922EB34EF0065E677 /* ReactionHistoryViewController.swift in Sources */, - B1B5596620EF9E9B00210D55 /* RoomTableViewCell.m in Sources */, - ECFBD5EB250F97FC00DD5F5A /* RoomCreationWithPaginationCollapsedBubbleCell.m in Sources */, - EC711B7D24A63B37008F830C /* SecretsSetupRecoveryPassphraseViewModel.swift in Sources */, - EC711B8024A63B37008F830C /* SecretsSetupRecoveryPassphraseViewState.swift in Sources */, - B1C45A89232A8C2600165425 /* SettingsIdentityServerViewController.swift in Sources */, - EC85D7152477DCD7002C44C9 /* KeyVerificationScanConfirmationViewController.swift in Sources */, - ECFBD5FE250FA59B00DD5F5A /* RoomCreationEventsModalViewModel.swift in Sources */, - B14F143322144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyViewModel.swift in Sources */, - B1B336C0242B933700F95EC4 /* KeyVerificationSelfVerifyStartViewModelType.swift in Sources */, - 32A6001822C661100042C1D9 /* EditHistoryViewModel.swift in Sources */, - 32607D6E243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyViewModelType.swift in Sources */, - B1B558D020EF768F00210D55 /* RoomOutgoingEncryptedTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m in Sources */, - B1B558CF20EF768F00210D55 /* RoomIncomingEncryptedTextMsgWithPaginationTitleBubbleCell.m in Sources */, - B140B4A221F87F7100E3F5FE /* OperationQueue.swift in Sources */, - B183226C23F59F810035B2E8 /* CloseButton.swift in Sources */, - ECF57A5A250925AC004BBF9D /* TextFieldTableViewCell.swift in Sources */, - EC711B7F24A63B37008F830C /* SecretsSetupRecoveryPassphraseViewController.swift in Sources */, - B1B5575120EE6C4D00210D55 /* AuthenticationViewController.m in Sources */, - B1CE83BA2422815C00D07506 /* KeyVerificationService.swift in Sources */, - B16DC22B2587DC35004DAB1A /* SSOAuthenticationService.swift in Sources */, - B1B5571820EE6C4D00210D55 /* CountryPickerViewController.m in Sources */, - B1D211E622C194A200D939BD /* ReactionsMenuViewState.swift in Sources */, - ECF57A4925090C23004BBF9D /* EnterNewRoomDetailsViewState.swift in Sources */, - B17982FF2119FED2001FD722 /* GDPRConsentViewController.swift in Sources */, - B1098BE121ECE09F000DDA48 /* Images.swift in Sources */, - ECF57A85250A64F0004BBF9D /* PlaceholderedTextView.swift in Sources */, - B1B4E9C424D47207004D5C33 /* BubbleReactionsViewModelBuilder.swift in Sources */, - EC85D72A2477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewModel.swift in Sources */, - B12742BC258C472800731DA6 /* LegacySSOAuthentificationSession.swift in Sources */, - B1BEE74A23E093260003A4CB /* UserVerificationSessionStatusCoordinatorType.swift in Sources */, - 3232ABA4225730E100AD6A5C /* DeviceVerificationStartViewAction.swift in Sources */, - B1550FCC2420E8F500CE097B /* QRCodeGenerator.swift in Sources */, - B1B5575A20EE6C4D00210D55 /* UnifiedSearchViewController.m in Sources */, - 3232AB492256558300AD6A5C /* FlowTemplateCoordinatorBridgePresenter.swift in Sources */, - B1B5572820EE6C4D00210D55 /* RoomViewController.m in Sources */, - B108932123AB8D7D00802670 /* KeyVerificationIncomingRequestApprovalViewData.swift in Sources */, - EC85D7172477DCD7002C44C9 /* KeyVerificationScanConfirmationViewModel.swift in Sources */, - B18DEDDA243377C10075FEF7 /* KeyVerificationSelfVerifyWaitViewState.swift in Sources */, - B1B9DEED22EB34EF0065E677 /* ReactionHistoryCoordinator.swift in Sources */, - ECFBD602250FA98200DD5F5A /* RoomCreationModalCoordinatorType.swift in Sources */, - B1DCC62A22E60D1000625807 /* EmojiMartService.swift in Sources */, - EC711BA924A63B58008F830C /* SecureBackupSetupCoordinatorBridgePresenter.swift in Sources */, - B1B558C720EF768F00210D55 /* RoomOutgoingEncryptedTextMsgWithPaginationTitleBubbleCell.m in Sources */, - B1B336C5242B933700F95EC4 /* KeyVerificationSelfVerifyStartViewModel.swift in Sources */, - EC9A3EC524E1616900A8CFAE /* PushNotificationStore.swift in Sources */, - B1B558F020EF768F00210D55 /* RoomOutgoingAttachmentWithPaginationTitleBubbleCell.m in Sources */, - 926FA53F1F4C132000F826C2 /* MXSession+Riot.m in Sources */, - EC711B8324A63B37008F830C /* SecretsSetupRecoveryPassphraseCoordinator.swift in Sources */, - B125FE23231D5E4300B72806 /* SettingsDiscoveryViewState.swift in Sources */, - B1B5593820EF7BAC00210D55 /* TableViewCellWithLabelAndLargeTextView.m in Sources */, - B1DCC62222E60BE000625807 /* EmojiPickerItemViewData.swift in Sources */, - B1BEE74723E093260003A4CB /* UserVerificationSessionStatusViewModelType.swift in Sources */, - ECB101332477CFDB00CF8C11 /* UITableViewCell.swift in Sources */, - 3232AB502256558300AD6A5C /* TemplateScreenViewState.swift in Sources */, - B1C335CD22F1C1320021BA8D /* CameraPresenter.swift in Sources */, - B1B558C820EF768F00210D55 /* RoomIncomingEncryptedAttachmentBubbleCell.m in Sources */, - ECFBD5FA250FA59B00DD5F5A /* RoomCreationEventsModalCoordinatorType.swift in Sources */, - B1B557C620EF5CD400210D55 /* DirectoryServerDetailTableViewCell.m in Sources */, - EC85D71A2477DCD7002C44C9 /* KeyVerificationScanConfirmationCoordinator.swift in Sources */, - EC85D754247C0F5B002C44C9 /* Constants.swift in Sources */, - B1B336C4242B933700F95EC4 /* KeyVerificationSelfVerifyStartViewAction.swift in Sources */, - B1B4E9B924D46EB3004D5C33 /* SizingViewHeight.swift in Sources */, - B1B5590920EF768F00210D55 /* RoomEmptyBubbleCell.m in Sources */, - B1562CE72541DE25002F8436 /* JitsiAuthenticationType.swift in Sources */, - 324A2054225FC571004FE8B0 /* DeviceVerificationIncomingCoordinatorType.swift in Sources */, - B139C21F21FE5D6600BB68EC /* KeyBackupRecoverFromPassphraseViewAction.swift in Sources */, - B1DCC61822E5E17100625807 /* EmojiPickerViewState.swift in Sources */, - ECF57A4D25090C23004BBF9D /* EnterNewRoomDetailsCoordinator.swift in Sources */, - B1B336BF242B933700F95EC4 /* KeyVerificationSelfVerifyStartViewController.swift in Sources */, - B1CE83E32422817200D07506 /* VerifyEmojiCollectionViewCell.swift in Sources */, - B1C562DB228C0BB00037F12A /* RoomContextualMenuAction.swift in Sources */, - B1B5574720EE6C4D00210D55 /* UsersDevicesViewController.m in Sources */, - B1098BFF21ECFE65000DDA48 /* PasswordStrengthView.swift in Sources */, - ECFBD5D2250A7AAF00DD5F5A /* ShowDirectoryViewState.swift in Sources */, - ECE36F7F258B578300122124 /* Memory.swift in Sources */, - B1B558D220EF768F00210D55 /* RoomEncryptedDataBubbleCell.m in Sources */, - B10A3E8F24FE4368007C380F /* Timeline_1.swift in Sources */, - EC711BB024A63B58008F830C /* SecureBackupBannerCell.swift in Sources */, - B1B558FA20EF768F00210D55 /* RoomMembershipBubbleCell.m in Sources */, - B157FAA223264AE900EBFBD4 /* SettingsDiscoveryThreePidDetailsViewAction.swift in Sources */, - EC85D6AE2477DC89002C44C9 /* RoundedButton.swift in Sources */, - B1CE83D72422817200D07506 /* KeyVerificationVerifyByScanningViewModelType.swift in Sources */, - 3232ABA1225730E100AD6A5C /* KeyVerificationCoordinatorType.swift in Sources */, - B1C562D9228C0B760037F12A /* RoomContextualMenuItem.swift in Sources */, - B1C543B223A2913F00DCA1FA /* KeyVerificationConclusionBubbleCell.swift in Sources */, - 323AB947232BD74600C1451F /* AuthFallBackViewController.m in Sources */, - ECF57A87250A6872004BBF9D /* TextViewTableViewCell.swift in Sources */, - B1C562E1228C7C8C0037F12A /* RoomContextualMenuToolbarView.swift in Sources */, - B1CE83DF2422817200D07506 /* KeyVerificationVerifyBySASCoordinatorType.swift in Sources */, - ECB5D98F255420F8000AD89C /* Keychain.swift in Sources */, - B1B557BF20EF5B4500210D55 /* DisabledRoomInputToolbarView.m in Sources */, - B1B5578620EF564900210D55 /* GroupTableViewCellWithSwitch.m in Sources */, - B1098BE821ECFE52000DDA48 /* Coordinator.swift in Sources */, - B11291EC238D704C0077B478 /* FloatingPoint.swift in Sources */, - B1B557E920EF60F500210D55 /* MessagesSearchResultTextMsgBubbleCell.m in Sources */, - 324A2050225FC571004FE8B0 /* DeviceVerificationIncomingViewController.swift in Sources */, - B1098C0D21ED07E4000DDA48 /* NavigationRouter.swift in Sources */, - EC711B8E24A63B37008F830C /* SecretsRecoveryMode.swift in Sources */, - B110872321F098F0003554A5 /* ActivityIndicatorPresenterType.swift in Sources */, - B139C22321FF01B200BB68EC /* KeyBackupRecoverFromPassphraseCoordinatorType.swift in Sources */, - B14084CE23BFA0990010F692 /* KeyVerificationIncomingRequestApprovalWithPaginationTitleBubbleCell.swift in Sources */, - B14F143222144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyCoordinator.swift in Sources */, - B110872621F098F0003554A5 /* ActivityIndicatorView.swift in Sources */, - ECAE7AE924EC1888002FA813 /* Row.swift in Sources */, - B12676852523E4D100BE6B98 /* SecretsResetViewController.swift in Sources */, - B1CE83E02422817200D07506 /* KeyVerificationVerifyBySASViewController.swift in Sources */, - B19EFA3921F8BB2C00FC070E /* KeyBackupRecoverCoordinatorType.swift in Sources */, - B1C3360322F1ED600021BA8D /* MediaPickerCoordinator.swift in Sources */, - B1E5368D21FB7245001F3AFF /* KeyBackupRecoverFromPassphraseViewController.swift in Sources */, - EC711B8924A63B37008F830C /* SecretsRecoveryWithPassphraseViewModel.swift in Sources */, - B10A3E9F24FFC3E6007C380F /* PlaceholderDetailViewController.swift in Sources */, - B1963B3822933BC800CBA17F /* AutosizedCollectionView.swift in Sources */, - EC711B7A24A63B37008F830C /* SecretsSetupRecoveryKeyViewAction.swift in Sources */, - B12D79FB23E2462200FACEDC /* UserVerificationStartCoordinator.swift in Sources */, - EC1CA87A24C8841C00DE9EBF /* LocalAuthenticationService.swift in Sources */, - EC3B066B24AC6ADE000DF9BF /* CrossSigningBannerPreferences.swift in Sources */, - ECB101322477CFDB00CF8C11 /* UIDevice.swift in Sources */, - B169330320F3C98900746532 /* RoomBubbleCellData.m in Sources */, - EC1CA86224C1DEC400DE9EBF /* EnterPinCodeViewState.swift in Sources */, - B12742BA258C46DD00731DA6 /* SSOAuthentificationSessionProtocol.swift in Sources */, - EC711B8A24A63B37008F830C /* SecretsRecoveryWithPassphraseViewController.swift in Sources */, - B1B336C3242B933700F95EC4 /* KeyVerificationSelfVerifyStartCoordinator.swift in Sources */, - B1B557CC20EF5D8000210D55 /* DirectoryServerTableViewCell.m in Sources */, - B1963B2B228F1C4900CBA17F /* BubbleReactionsView.swift in Sources */, - B1B5575C20EE6C4D00210D55 /* DirectoryViewController.m in Sources */, - 32DB557622FDADE50016329E /* ServiceTermsModalCoordinatorBridgePresenter.swift in Sources */, - B1B558BD20EF768F00210D55 /* RoomOutgoingEncryptedTextMsgWithoutSenderNameBubbleCell.m in Sources */, - B1B5577020EE702800210D55 /* WidgetPickerViewController.m in Sources */, - B1B558D320EF768F00210D55 /* RoomOutgoingEncryptedTextMsgBubbleCell.m in Sources */, - B1B5576F20EE702800210D55 /* IntegrationManagerViewController.m in Sources */, - 32FD756424D2AD5100BA7B37 /* BuildSettings.swift in Sources */, - EC51E7A72514D2E100AAE7DB /* RoomInfoCoordinator.swift in Sources */, - B1B557AC20EF5A6D00210D55 /* DeviceView.m in Sources */, - 3281BCF72201FA4200F4A383 /* UIControl.swift in Sources */, - B16932EE20F3C3C900746532 /* FilesSearchCellData.m in Sources */, - EC1CA89824C9C9A200DE9EBF /* SetupBiometricsViewAction.swift in Sources */, - B1B558E520EF768F00210D55 /* RoomMembershipExpandedBubbleCell.m in Sources */, - EC85D73E2477DDD0002C44C9 /* PushNotificationService.m in Sources */, - 32BF995121FA29DC00698084 /* SettingsKeyBackupViewModelType.swift in Sources */, - B190F55922CE356800AEB493 /* EditHistoryHeaderView.swift in Sources */, - B1A15BD925A6652800BDCA36 /* DeepLinkOption.swift in Sources */, - 32F6B96A2270623100BBA352 /* KeyVerificationDataLoadingViewState.swift in Sources */, - B1945CC9258C04F30020D8D6 /* SSOAuthenticationPresenter.swift in Sources */, - 32BF995321FA2A1300698084 /* SettingsKeyBackupViewState.swift in Sources */, - ECFBD5FB250FA59B00DD5F5A /* RoomCreationEventsModalViewAction.swift in Sources */, - B18DEDDB243377C10075FEF7 /* KeyVerificationSelfVerifyWaitViewAction.swift in Sources */, - 32B94DF9228EC26400716A26 /* ReactionsMenuViewAction.swift in Sources */, - B1B5599420EFC5E400210D55 /* DecryptionFailureTracker.m in Sources */, - F083BDF01E7009ED00A9B29C /* UIViewController+RiotSearch.m in Sources */, - 32DB557522FDADE50016329E /* ServiceTermsModalCoordinatorType.swift in Sources */, - F083BDF91E7009ED00A9B29C /* RoomEmailInvitation.m in Sources */, - EC85D7272477DCF2002C44C9 /* KeyVerificationManuallyVerifyViewController.swift in Sources */, - ECFBD5CF250A7AAF00DD5F5A /* DirectoryNetworkTableHeaderFooterView.swift in Sources */, - B1D211E422C18E3800D939BD /* ReactionsMenuViewModelType.swift in Sources */, - 324A2055225FC571004FE8B0 /* DeviceVerificationIncomingViewModelType.swift in Sources */, - B1B5572C20EE6C4D00210D55 /* RoomParticipantsViewController.m in Sources */, - B1B558EE20EF768F00210D55 /* RoomOutgoingAttachmentBubbleCell.m in Sources */, - 32BF994F21FA29A400698084 /* SettingsKeyBackupViewModel.swift in Sources */, - B190F55D22CE5A9700AEB493 /* EditHistorySection.swift in Sources */, - 32DB557E22FDADE50016329E /* ServiceTermsModalScreenViewAction.swift in Sources */, - 32A6002022C66FCF0042C1D9 /* EditHistoryMessage.swift in Sources */, - B1B5574920EE6C4D00210D55 /* RiotSplitViewController.m in Sources */, - B1B5574E20EE6C4D00210D55 /* DirectoryServerPickerViewController.m in Sources */, - EC711B8824A63B37008F830C /* SecretsRecoveryWithPassphraseViewAction.swift in Sources */, - ECF57A6225093B04004BBF9D /* SectionHeaderView.m in Sources */, - ECF57A4A25090C23004BBF9D /* EnterNewRoomDetailsViewController.swift in Sources */, - B1D211E822C195B400D939BD /* ReactionMenuItemViewData.swift in Sources */, - B1DB4F0B223131600065DBFA /* String.swift in Sources */, - B1CE83D82422817200D07506 /* KeyVerificationVerifyByScanningCoordinatorType.swift in Sources */, - EC711BAC24A63B58008F830C /* SecureBackupSetupIntroCell.swift in Sources */, - 3232AB522256558300AD6A5C /* TemplateScreenViewModel.swift in Sources */, - B1B5575B20EE6C4D00210D55 /* HomeFilesSearchViewController.m in Sources */, - B139C22521FF01C100BB68EC /* KeyBackupRecoverFromPassphraseCoordinator.swift in Sources */, - B1BEE71623DF2ACF0003A4CB /* UserVerificationCoordinatorBridgePresenter.swift in Sources */, - B1098BFD21ECFE65000DDA48 /* PasswordStrengthManager.swift in Sources */, - B1B558F520EF768F00210D55 /* RoomOutgoingTextMsgWithPaginationTitleBubbleCell.m in Sources */, - 3232AB482256558300AD6A5C /* FlowTemplateCoordinatorType.swift in Sources */, - B1B9DEF122EB396B0065E677 /* ReactionHistoryViewData.swift in Sources */, - B1B558F820EF768F00210D55 /* RoomIncomingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m in Sources */, - EC1CA89B24C9C9A200DE9EBF /* SetupBiometricsViewState.swift in Sources */, - B1BD71B5238DCBF700BA92E2 /* SlidingModalEmptyViewController.swift in Sources */, - B125FE1B231D5BF200B72806 /* SettingsDiscoveryTableViewSection.swift in Sources */, - B18DEDD5243377C10075FEF7 /* KeyVerificationSelfVerifyWaitViewModel.swift in Sources */, - EC711B8B24A63B37008F830C /* SecretsRecoveryWithPassphraseViewState.swift in Sources */, - ECAE7AE524EC0E01002FA813 /* TableViewSections.swift in Sources */, - B1CE83DA2422817200D07506 /* KeyVerificationVerifyByScanningViewModel.swift in Sources */, - 32242F0921E8B05F00725742 /* UIColor.swift in Sources */, - B16932E720F3C37100746532 /* HomeMessagesSearchDataSource.m in Sources */, - B1B4E9C224D471FD004D5C33 /* BubbleReactionsViewSizer.m in Sources */, - B12D79FF23E2462200FACEDC /* UserVerificationStartViewState.swift in Sources */, - B1B558CE20EF768F00210D55 /* RoomOutgoingEncryptedAttachmentBubbleCell.m in Sources */, - B1B5577D20EE84BF00210D55 /* CircleButton.m in Sources */, - 32607D6D243E0A55006674CC /* KeyBackupRecoverFromPrivateKeyCoordinatorType.swift in Sources */, - ECB101362477D00700CF8C11 /* UniversalLink.m in Sources */, - 32BF995521FA2AB700698084 /* SettingsKeyBackupViewAction.swift in Sources */, - B109D6F1222D8C400061B6D9 /* UIApplication.swift in Sources */, - ECFBD5D6250A7AAF00DD5F5A /* ShowDirectoryViewAction.swift in Sources */, - EC711BB124A63B58008F830C /* SecureBackupBannerPreferences.swift in Sources */, - ECF57A4625090C23004BBF9D /* CreateRoomCoordinator.swift in Sources */, - ECFBD5DC250A82B200DD5F5A /* TextViewTableViewHeaderFooterView.swift in Sources */, - B1BEE73723DF44A60003A4CB /* UserVerificationSessionsStatusViewState.swift in Sources */, - B108932823ABEE6800802670 /* BubbleCellReadReceiptsDisplayable.swift in Sources */, - B1B558FF20EF768F00210D55 /* RoomIncomingTextMsgBubbleCell.m in Sources */, - B1098C0021ECFE65000DDA48 /* KeyBackupSetupPassphraseViewController.swift in Sources */, - ECAE7AE724EC15F7002FA813 /* Section.swift in Sources */, - B1B5591020EF782800210D55 /* TableViewCellWithPhoneNumberTextField.m in Sources */, - B1CE83E52422817200D07506 /* KeyVerificationVerifyBySASViewModel.swift in Sources */, - ECFBD5ED250F97FC00DD5F5A /* RoomCreationCollapsedBubbleCell.m in Sources */, - B1DB4F06223015080065DBFA /* Character.swift in Sources */, - EC1CA87724C82D0E00DE9EBF /* MemoryStore.swift in Sources */, - B1B9DEEE22EB34EF0065E677 /* ReactionHistoryViewAction.swift in Sources */, - EC711BB624A63C11008F830C /* AuthenticatedSessionViewControllerFactory.swift in Sources */, - B1C543A4239E98E400DCA1FA /* KeyVerificationCellInnerContentView.swift in Sources */, - B10A3E8E24FE4368007C380F /* ElementView.swift in Sources */, - B1CE83B62422812100D07506 /* KeyVerificationCoordinatorBridgePresenter.swift in Sources */, - 32B94DFA228EC26400716A26 /* ReactionsMenuButton.swift in Sources */, - B1B9DEEC22EB34EF0065E677 /* ReactionHistoryViewModelType.swift in Sources */, - B157FAA523264AE900EBFBD4 /* SettingsDiscoveryThreePidDetailsViewModel.swift in Sources */, - EC711B8624A63B37008F830C /* SecretsRecoveryWithPassphraseCoordinatorType.swift in Sources */, - B10A3E9C24FE88CB007C380F /* RootRouter.swift in Sources */, - B1C562E8228C7CF20037F12A /* ContextualMenuItemView.swift in Sources */, - B14F143022144F6500FA0595 /* KeyBackupRecoverFromRecoveryKeyCoordinatorType.swift in Sources */, - B1E5368921FB1E20001F3AFF /* UIButton.swift in Sources */, - B1DCC63422E72C1B00625807 /* UISearchBar.swift in Sources */, - 32A6001622C661100042C1D9 /* EditHistoryViewState.swift in Sources */, - ECF57A5725091ECC004BBF9D /* MXKTableViewCellWithTextView.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F094A9BA1B78D8F000B1FBBF /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 32FD755824D15C7A00BA7B37 /* Configurable.swift in Sources */, - ECE36F7D258A384E00122124 /* KeychainStore.swift in Sources */, - 32FD757724D2C9BA00BA7B37 /* Bundle.swift in Sources */, - 32FD754D24D06EBF00BA7B37 /* RiotSettings.swift in Sources */, - B1562CE52541D113002F8436 /* JitsiWellKnownTests.swift in Sources */, - ECE36F7B258A383E00122124 /* EncryptionKeyManager.swift in Sources */, - ECE36F7C258A384200122124 /* KeyValueStore.swift in Sources */, - 32FD757124D2BEF700BA7B37 /* InfoPlist.swift in Sources */, - 32FD756524D2AD5100BA7B37 /* BuildSettings.swift in Sources */, - 32FD755524D0754500BA7B37 /* AppConfiguration.swift in Sources */, - 32FD755124D074C700BA7B37 /* CommonConfiguration.swift in Sources */, - F083BEA51E70356E00A9B29C /* RiotTests.m in Sources */, - B152C73122DF561E0041315A /* EmojiServiceTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 242661F61F12B1BA00D3FC08 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 24CBEC4D1F0EAD310093EABB /* RiotShareExtension */; - targetProxy = 242661F51F12B1BA00D3FC08 /* PBXContainerItemProxy */; - }; - 92726A4A1F58737A004AD26F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 92726A421F58737A004AD26F /* SiriIntents */; - targetProxy = 92726A491F58737A004AD26F /* PBXContainerItemProxy */; - }; - EC85D7492477E5F7002C44C9 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = EC85D7422477E5F7002C44C9 /* RiotNSE */; - targetProxy = EC85D7482477E5F7002C44C9 /* PBXContainerItemProxy */; - }; - F094A9C01B78D8F000B1FBBF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = F094A9A11B78D8F000B1FBBF /* Riot */; - targetProxy = F094A9BF1B78D8F000B1FBBF /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - B1664D5520F4EBEC00808783 /* Vector.strings */ = { - isa = PBXVariantGroup; - children = ( - B1664D6720F4EBF000808783 /* de */, - B1664D6B20F4EBF000808783 /* eu */, - B1664D6C20F4EBF100808783 /* en */, - B1664D7920F4EBF400808783 /* ca */, - B1664D7A20F4EBF400808783 /* bg */, - B1664D7E20F4EBF500808783 /* is */, - B1664D7F20F4EBF500808783 /* vi */, - B1664D8620F4EBF700808783 /* nl */, - B1664D8820F4EBF700808783 /* fr */, - B1664D8A20F4EBF800808783 /* ru */, - B1664D8B20F4EBF800808783 /* zh_Hans */, - 32BDC9A3211C2C870064AF51 /* zh_Hant */, - 32BDC9A6211C34C90064AF51 /* sq */, - 32D7159E2146CC6F00DF59C9 /* es */, - 3D78489221AC9E6500B98A7D /* ja */, - 3D78489521ACA25300B98A7D /* hu */, - 32DAF8DD231813E100654A44 /* pl */, - 325789A7237AB297009388E6 /* cy */, - B1C6FFE923954D4B0055347B /* it */, - B1EDFDF32525E9690020EEFF /* et */, - ); - name = Vector.strings; - sourceTree = ""; - }; - B1664D5720F4EBEC00808783 /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - B1664D5B20F4EBED00808783 /* vi */, - B1664D5E20F4EBEE00808783 /* eu */, - B1664D5F20F4EBEE00808783 /* bg */, - B1664D6920F4EBF000808783 /* nl */, - B1664D6D20F4EBF100808783 /* ca */, - B1664D7520F4EBF300808783 /* en */, - B1664D7B20F4EBF400808783 /* de */, - B1664D8320F4EBF600808783 /* fr */, - B1664D8520F4EBF700808783 /* zh_Hans */, - B1664D8920F4EBF700808783 /* ru */, - 32BDC9A1211C2C870064AF51 /* zh_Hant */, - 32BDC9A4211C34C90064AF51 /* sq */, - 32D715A02146CC8800DF59C9 /* es */, - 3D78489021AC9E6400B98A7D /* ja */, - 3D78489321ACA25200B98A7D /* hu */, - 32DAF8DB231813C800654A44 /* pl */, - 325789A5237AB241009388E6 /* cy */, - B1C6FFE723954CE70055347B /* it */, - B1EDFDF42525E9690020EEFF /* et */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; - B1664D5920F4EBEC00808783 /* Localizable.strings */ = { - isa = PBXVariantGroup; - children = ( - B1664D5A20F4EBEC00808783 /* en */, - B1664D7320F4EBF200808783 /* eu */, - B1664D7720F4EBF300808783 /* nl */, - B1664D7820F4EBF400808783 /* ru */, - B1664D7D20F4EBF500808783 /* bg */, - B1664D8020F4EBF500808783 /* zh_Hans */, - B1664D8220F4EBF600808783 /* de */, - B1664D8C20F4EBF800808783 /* fr */, - B1664D8D20F4EBF800808783 /* vi */, - B1664D8E20F4EBF900808783 /* ca */, - 32BDC9A2211C2C870064AF51 /* zh_Hant */, - 32BDC9A5211C34C90064AF51 /* sq */, - 32D7159F2146CC7F00DF59C9 /* es */, - 3D78489121AC9E6500B98A7D /* ja */, - 3D78489421ACA25300B98A7D /* hu */, - 32DAF8DC231813D500654A44 /* pl */, - 325789A6237AB27F009388E6 /* cy */, - B1C6FFE823954D3B0055347B /* it */, - B1EDFDF52525E96A0020EEFF /* et */, - ); - name = Localizable.strings; - sourceTree = ""; - }; - B169329320F39E6200746532 /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - B169329420F39E6200746532 /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; - B169329520F39E6300746532 /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - B169329620F39E6300746532 /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 24CBEC5A1F0EAD310093EABB /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = EC1CA8B824D1AD1600DE9EBF /* ShareExtension-Debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; - APPLICATION_EXTENSION_API_ONLY = YES; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CODE_SIGN_ENTITLEMENTS = RiotShareExtension/SupportingFiles/RiotShareExtension.entitlements; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 20200826151407; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = 7J4U792NQT; - ENABLE_BITCODE = NO; - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "IS_SHARE_EXTENSION=1", - ); - HEADER_SEARCH_PATHS = "$(inherited)"; - INFOPLIST_FILE = RiotShareExtension/SupportingFiles/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@executable_path/../../Frameworks", - ); - LIBRARY_SEARCH_PATHS = "$(inherited)"; - OTHER_CFLAGS = "$(inherited)"; - OTHER_LDFLAGS = "$(inherited)"; - OTHER_SWIFT_FLAGS = "$(inherited)"; - PRODUCT_BUNDLE_IDENTIFIER = "$(PRODUCT_BUNDLE_IDENTIFIER)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SKIP_INSTALL = YES; - SWIFT_OBJC_BRIDGING_HEADER = "$(SRCROOT)/$(PRODUCT_NAME)/SupportingFiles/RiotShareExtension-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - USER_HEADER_SEARCH_PATHS = "$(inherited)"; - }; - name = Debug; - }; - 24CBEC5B1F0EAD310093EABB /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = EC1CA8B924D1AD1600DE9EBF /* ShareExtension-Release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; - APPLICATION_EXTENSION_API_ONLY = YES; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CODE_SIGN_ENTITLEMENTS = RiotShareExtension/SupportingFiles/RiotShareExtension.entitlements; - CODE_SIGN_IDENTITY = "iPhone Distribution"; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 20200826151407; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = 7J4U792NQT; - ENABLE_BITCODE = NO; - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "IS_SHARE_EXTENSION=1", - ); - HEADER_SEARCH_PATHS = "$(inherited)"; - INFOPLIST_FILE = RiotShareExtension/SupportingFiles/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@executable_path/../../Frameworks", - ); - LIBRARY_SEARCH_PATHS = "$(inherited)"; - OTHER_CFLAGS = "$(inherited)"; - OTHER_LDFLAGS = "$(inherited)"; - OTHER_SWIFT_FLAGS = "$(inherited)"; - PRODUCT_BUNDLE_IDENTIFIER = "$(PRODUCT_BUNDLE_IDENTIFIER)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE = "1a3be143-50c7-4ae2-834e-00596a053141"; - PROVISIONING_PROFILE_SPECIFIER = "Vector Share Extension: App Store"; - SKIP_INSTALL = YES; - SWIFT_OBJC_BRIDGING_HEADER = "$(SRCROOT)/$(PRODUCT_NAME)/SupportingFiles/RiotShareExtension-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - USER_HEADER_SEARCH_PATHS = "$(inherited)"; - }; - name = Release; - }; - 92726A4C1F58737A004AD26F /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = EC1CA8BB24D1B4BF00DE9EBF /* SiriIntents-Debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CODE_SIGN_ENTITLEMENTS = SiriIntents/SiriIntents.entitlements; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 20200826151407; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = 7J4U792NQT; - ENABLE_BITCODE = NO; - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; - HEADER_SEARCH_PATHS = "$(inherited)"; - INFOPLIST_FILE = SiriIntents/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@executable_path/../../Frameworks", - ); - LIBRARY_SEARCH_PATHS = "$(inherited)"; - OTHER_CFLAGS = "$(inherited)"; - OTHER_LDFLAGS = "$(inherited)"; - OTHER_SWIFT_FLAGS = "$(inherited)"; - PRODUCT_BUNDLE_IDENTIFIER = "$(PRODUCT_BUNDLE_IDENTIFIER)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - USER_HEADER_SEARCH_PATHS = "$(inherited)"; - }; - name = Debug; - }; - 92726A4D1F58737A004AD26F /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = EC1CA8BA24D1B4BF00DE9EBF /* SiriIntents-Release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CODE_SIGN_ENTITLEMENTS = SiriIntents/SiriIntents.entitlements; - CODE_SIGN_IDENTITY = "iPhone Distribution"; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 20200826151407; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = 7J4U792NQT; - ENABLE_BITCODE = NO; - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; - HEADER_SEARCH_PATHS = "$(inherited)"; - INFOPLIST_FILE = SiriIntents/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@executable_path/../../Frameworks", - ); - LIBRARY_SEARCH_PATHS = "$(inherited)"; - OTHER_CFLAGS = "$(inherited)"; - OTHER_LDFLAGS = "$(inherited)"; - OTHER_SWIFT_FLAGS = "$(inherited)"; - PRODUCT_BUNDLE_IDENTIFIER = "$(PRODUCT_BUNDLE_IDENTIFIER)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE = "18a66f93-ffe1-4008-b343-58350cc65023"; - PROVISIONING_PROFILE_SPECIFIER = "Vector Siri Intents: App Store"; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - USER_HEADER_SEARCH_PATHS = "$(inherited)"; - }; - name = Release; - }; - EC85D74B2477E5F7002C44C9 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = EC1CA8BC24D1B4CF00DE9EBF /* NSE-Debug.xcconfig */; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_ENTITLEMENTS = RiotNSE/RiotNSE.entitlements; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 20200826151407; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = 7J4U792NQT; - ENABLE_BITCODE = NO; - GCC_C_LANGUAGE_STANDARD = gnu11; - INFOPLIST_FILE = RiotNSE/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@executable_path/../../Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "$(PRODUCT_BUNDLE_IDENTIFIER)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - EC85D74C2477E5F7002C44C9 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = EC1CA8BD24D1B4CF00DE9EBF /* NSE-Release.xcconfig */; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_ENTITLEMENTS = RiotNSE/RiotNSE.entitlements; - CODE_SIGN_IDENTITY = "iPhone Distribution"; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 20200826151407; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = 7J4U792NQT; - ENABLE_BITCODE = NO; - GCC_C_LANGUAGE_STANDARD = gnu11; - INFOPLIST_FILE = RiotNSE/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@executable_path/../../Frameworks", - ); - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "$(PRODUCT_BUNDLE_IDENTIFIER)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE = "31dc9316-e029-47fd-81f5-778db07d76a2"; - PROVISIONING_PROFILE_SPECIFIER = "Vector NSE: App Store"; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; - F094A9C61B78D8F000B1FBBF /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = 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_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_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1.1.4; - DEFINES_MODULE = YES; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - 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 = 11.0; - MARKETING_VERSION = 1.1.4; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - F094A9C71B78D8F000B1FBBF /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = 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_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_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Distribution"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; - COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 1.1.4; - DEFINES_MODULE = YES; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - 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 = 11.0; - MARKETING_VERSION = 1.1.4; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - F094A9C91B78D8F000B1FBBF /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = EC1CA8B424D1AA8700DE9EBF /* App-Debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Riot/SupportingFiles/Riot.entitlements; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 20200826151407; - DEVELOPMENT_TEAM = 7J4U792NQT; - ENABLE_BITCODE = NO; - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; - HEADER_SEARCH_PATHS = "$(inherited)"; - INFOPLIST_FILE = Riot/SupportingFiles/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - LIBRARY_SEARCH_PATHS = "$(inherited)"; - OTHER_CFLAGS = "$(inherited)"; - OTHER_LDFLAGS = "$(inherited)"; - OTHER_SWIFT_FLAGS = "$(inherited)"; - PRODUCT_BUNDLE_IDENTIFIER = "$(PRODUCT_BUNDLE_IDENTIFIER)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OBJC_BRIDGING_HEADER = "$(SRCROOT)/$(PRODUCT_NAME)/SupportingFiles/Riot-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - USER_HEADER_SEARCH_PATHS = "$(inherited)"; - }; - name = Debug; - }; - F094A9CA1B78D8F000B1FBBF /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = EC1CA8B624D1AA8D00DE9EBF /* App-Release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Riot/SupportingFiles/Riot.entitlements; - CODE_SIGN_IDENTITY = "iPhone Distribution"; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 20200826151407; - DEVELOPMENT_TEAM = 7J4U792NQT; - ENABLE_BITCODE = NO; - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; - HEADER_SEARCH_PATHS = "$(inherited)"; - INFOPLIST_FILE = Riot/SupportingFiles/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - LIBRARY_SEARCH_PATHS = "$(inherited)"; - OTHER_CFLAGS = "$(inherited)"; - OTHER_LDFLAGS = "$(inherited)"; - OTHER_SWIFT_FLAGS = "$(inherited)"; - PRODUCT_BUNDLE_IDENTIFIER = "$(PRODUCT_BUNDLE_IDENTIFIER)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE = "f65e7447-b8a3-46cc-8fba-fa60e55e2511"; - PROVISIONING_PROFILE_SPECIFIER = "Vector App Store"; - SWIFT_OBJC_BRIDGING_HEADER = "$(SRCROOT)/$(PRODUCT_NAME)/SupportingFiles/Riot-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - USER_HEADER_SEARCH_PATHS = "$(inherited)"; - }; - name = Release; - }; - F094A9CC1B78D8F000B1FBBF /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = BABB6681FBD79219B1213D6C /* Pods-RiotTests.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; - BUNDLE_LOADER = "$(TEST_HOST)"; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 20200826151407; - DEVELOPMENT_TEAM = 7J4U792NQT; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - ); - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = RiotTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.matrix.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "RiotTests/RiotTests-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Riot.app/Riot"; - }; - name = Debug; - }; - F094A9CD1B78D8F000B1FBBF /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = AC34BF67FD21A9D01C16AE5D /* Pods-RiotTests.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)"; - BUNDLE_LOADER = "$(TEST_HOST)"; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 20200826151407; - DEVELOPMENT_TEAM = 7J4U792NQT; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - ); - INFOPLIST_FILE = RiotTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.matrix.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE = "f65e7447-b8a3-46cc-8fba-fa60e55e2511"; - PROVISIONING_PROFILE_SPECIFIER = "Vector App Store"; - SWIFT_OBJC_BRIDGING_HEADER = "RiotTests/RiotTests-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Riot.app/Riot"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 24CBEC5C1F0EAD310093EABB /* Build configuration list for PBXNativeTarget "RiotShareExtension" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 24CBEC5A1F0EAD310093EABB /* Debug */, - 24CBEC5B1F0EAD310093EABB /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 92726A4E1F58737A004AD26F /* Build configuration list for PBXNativeTarget "SiriIntents" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 92726A4C1F58737A004AD26F /* Debug */, - 92726A4D1F58737A004AD26F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - EC85D74D2477E5F7002C44C9 /* Build configuration list for PBXNativeTarget "RiotNSE" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - EC85D74B2477E5F7002C44C9 /* Debug */, - EC85D74C2477E5F7002C44C9 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - F094A99D1B78D8F000B1FBBF /* Build configuration list for PBXProject "Riot" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F094A9C61B78D8F000B1FBBF /* Debug */, - F094A9C71B78D8F000B1FBBF /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - F094A9C81B78D8F000B1FBBF /* Build configuration list for PBXNativeTarget "Riot" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F094A9C91B78D8F000B1FBBF /* Debug */, - F094A9CA1B78D8F000B1FBBF /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - F094A9CB1B78D8F000B1FBBF /* Build configuration list for PBXNativeTarget "RiotTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F094A9CC1B78D8F000B1FBBF /* Debug */, - F094A9CD1B78D8F000B1FBBF /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = F094A99A1B78D8F000B1FBBF /* Project object */; -} diff --git a/Riot.xcodeproj/xcshareddata/xcschemes/Riot.xcscheme b/Riot.xcodeproj/xcshareddata/xcschemes/Riot.xcscheme index 3b7437ef1..84ecb908a 100644 --- a/Riot.xcodeproj/xcshareddata/xcschemes/Riot.xcscheme +++ b/Riot.xcodeproj/xcshareddata/xcschemes/Riot.xcscheme @@ -1,9 +1,9 @@ - - - - + onlyGenerateCoverageForSpecifiedTargets = "NO" + shouldUseLaunchSchemeArgsEnv = "YES" + disableMainThreadChecker = "YES"> @@ -56,14 +44,14 @@ - - + + + allowLocationSimulation = "YES" + disableMainThreadChecker = "YES"> - - + + + + diff --git a/Riot/Assets/Images.xcassets/Authentication/SocialLogin/social_login_button_gitlab.imageset/Contents.json b/Riot/Assets/Images.xcassets/Authentication/SocialLogin/social_login_button_gitlab.imageset/Contents.json new file mode 100644 index 000000000..a4b64387a --- /dev/null +++ b/Riot/Assets/Images.xcassets/Authentication/SocialLogin/social_login_button_gitlab.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "social_login_button_gitlab.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "social_login_button_gitlab@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "social_login_button_gitlab@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Riot/Assets/Images.xcassets/Authentication/SocialLogin/social_login_button_gitlab.imageset/social_login_button_gitlab.png b/Riot/Assets/Images.xcassets/Authentication/SocialLogin/social_login_button_gitlab.imageset/social_login_button_gitlab.png new file mode 100644 index 000000000..da245e7e3 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Authentication/SocialLogin/social_login_button_gitlab.imageset/social_login_button_gitlab.png differ diff --git a/Riot/Assets/Images.xcassets/Authentication/SocialLogin/social_login_button_gitlab.imageset/social_login_button_gitlab@2x.png b/Riot/Assets/Images.xcassets/Authentication/SocialLogin/social_login_button_gitlab.imageset/social_login_button_gitlab@2x.png new file mode 100644 index 000000000..c7f36d3e0 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Authentication/SocialLogin/social_login_button_gitlab.imageset/social_login_button_gitlab@2x.png differ diff --git a/Riot/Assets/Images.xcassets/Authentication/SocialLogin/social_login_button_gitlab.imageset/social_login_button_gitlab@3x.png b/Riot/Assets/Images.xcassets/Authentication/SocialLogin/social_login_button_gitlab.imageset/social_login_button_gitlab@3x.png new file mode 100644 index 000000000..6e631deed Binary files /dev/null and b/Riot/Assets/Images.xcassets/Authentication/SocialLogin/social_login_button_gitlab.imageset/social_login_button_gitlab@3x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/Contents.json b/Riot/Assets/Images.xcassets/Call/Contents.json index da4a164c9..73c00596a 100644 --- a/Riot/Assets/Images.xcassets/Call/Contents.json +++ b/Riot/Assets/Images.xcassets/Call/Contents.json @@ -1,6 +1,6 @@ { "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} diff --git a/Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/Contents.json b/Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/Contents.json index 4ab85603f..ef50be94e 100644 --- a/Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/Contents.json +++ b/Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/Contents.json @@ -1,17 +1,17 @@ { "images" : [ { - "filename" : "call_audio_mute_on_icon.png", + "filename" : "Microphone.png", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "call_audio_mute_on_icon@2x.png", + "filename" : "Microphone@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "call_audio_mute_on_icon@3x.png", + "filename" : "Microphone@3x.png", "idiom" : "universal", "scale" : "3x" } @@ -21,6 +21,6 @@ "version" : 1 }, "properties" : { - "template-rendering-intent" : "template" + "template-rendering-intent" : "original" } } diff --git a/Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/Microphone.png b/Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/Microphone.png new file mode 100644 index 000000000..699255712 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/Microphone.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/Microphone@2x.png b/Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/Microphone@2x.png new file mode 100644 index 000000000..a73e07451 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/Microphone@2x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/Microphone@3x.png b/Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/Microphone@3x.png new file mode 100644 index 000000000..b292d11c5 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/Microphone@3x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/call_audio_mute_on_icon.png b/Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/call_audio_mute_on_icon.png deleted file mode 100644 index 34bcaaf01..000000000 Binary files a/Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/call_audio_mute_on_icon.png and /dev/null differ diff --git a/Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/call_audio_mute_on_icon@2x.png b/Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/call_audio_mute_on_icon@2x.png deleted file mode 100644 index 7b63fde7b..000000000 Binary files a/Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/call_audio_mute_on_icon@2x.png and /dev/null differ diff --git a/Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/call_audio_mute_on_icon@3x.png b/Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/call_audio_mute_on_icon@3x.png deleted file mode 100644 index 88f122d63..000000000 Binary files a/Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/call_audio_mute_on_icon@3x.png and /dev/null differ diff --git a/Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/Contents.json b/Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/Contents.json index 035d643df..9c997c298 100644 --- a/Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/Contents.json +++ b/Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/Contents.json @@ -1,17 +1,17 @@ { "images" : [ { - "filename" : "call_audio_mute_off_icon.png", + "filename" : "Microphone Off.png", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "call_audio_mute_off_icon@2x.png", + "filename" : "Microphone Off@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "call_audio_mute_off_icon@3x.png", + "filename" : "Microphone Off@3x.png", "idiom" : "universal", "scale" : "3x" } @@ -21,6 +21,6 @@ "version" : 1 }, "properties" : { - "template-rendering-intent" : "template" + "template-rendering-intent" : "original" } } diff --git a/Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/Microphone Off.png b/Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/Microphone Off.png new file mode 100644 index 000000000..c194f59b3 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/Microphone Off.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/Microphone Off@2x.png b/Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/Microphone Off@2x.png new file mode 100644 index 000000000..a4bdab618 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/Microphone Off@2x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/Microphone Off@3x.png b/Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/Microphone Off@3x.png new file mode 100644 index 000000000..cb777a3fa Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/Microphone Off@3x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/call_audio_mute_off_icon.png b/Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/call_audio_mute_off_icon.png deleted file mode 100644 index 44225b355..000000000 Binary files a/Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/call_audio_mute_off_icon.png and /dev/null differ diff --git a/Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/call_audio_mute_off_icon@2x.png b/Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/call_audio_mute_off_icon@2x.png deleted file mode 100644 index 6f9c4f168..000000000 Binary files a/Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/call_audio_mute_off_icon@2x.png and /dev/null differ diff --git a/Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/call_audio_mute_off_icon@3x.png b/Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/call_audio_mute_off_icon@3x.png deleted file mode 100644 index 19839d529..000000000 Binary files a/Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/call_audio_mute_off_icon@3x.png and /dev/null differ diff --git a/Riot/Assets/Images.xcassets/Call/call_dialpad_backspace_icon.imageset/Contents.json b/Riot/Assets/Images.xcassets/Call/call_dialpad_backspace_icon.imageset/Contents.json new file mode 100644 index 000000000..df240cf11 --- /dev/null +++ b/Riot/Assets/Images.xcassets/Call/call_dialpad_backspace_icon.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Vector.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Vector@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Vector@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Riot/Assets/Images.xcassets/Call/call_dialpad_backspace_icon.imageset/Vector.png b/Riot/Assets/Images.xcassets/Call/call_dialpad_backspace_icon.imageset/Vector.png new file mode 100644 index 000000000..3ea538fa3 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_dialpad_backspace_icon.imageset/Vector.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_dialpad_backspace_icon.imageset/Vector@2x.png b/Riot/Assets/Images.xcassets/Call/call_dialpad_backspace_icon.imageset/Vector@2x.png new file mode 100644 index 000000000..a518e0808 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_dialpad_backspace_icon.imageset/Vector@2x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_dialpad_backspace_icon.imageset/Vector@3x.png b/Riot/Assets/Images.xcassets/Call/call_dialpad_backspace_icon.imageset/Vector@3x.png new file mode 100644 index 000000000..698b3f068 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_dialpad_backspace_icon.imageset/Vector@3x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_dialpad_call_icon.imageset/Contents.json b/Riot/Assets/Images.xcassets/Call/call_dialpad_call_icon.imageset/Contents.json new file mode 100644 index 000000000..c34ba9d90 --- /dev/null +++ b/Riot/Assets/Images.xcassets/Call/call_dialpad_call_icon.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Union.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Union@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Union@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Riot/Assets/Images.xcassets/Call/call_dialpad_call_icon.imageset/Union.png b/Riot/Assets/Images.xcassets/Call/call_dialpad_call_icon.imageset/Union.png new file mode 100644 index 000000000..8906cc665 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_dialpad_call_icon.imageset/Union.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_dialpad_call_icon.imageset/Union@2x.png b/Riot/Assets/Images.xcassets/Call/call_dialpad_call_icon.imageset/Union@2x.png new file mode 100644 index 000000000..193418823 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_dialpad_call_icon.imageset/Union@2x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_dialpad_call_icon.imageset/Union@3x.png b/Riot/Assets/Images.xcassets/Call/call_dialpad_call_icon.imageset/Union@3x.png new file mode 100644 index 000000000..ac2d483f9 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_dialpad_call_icon.imageset/Union@3x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/Contents.json b/Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/Contents.json index 738bd32c7..a98e86782 100644 --- a/Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/Contents.json +++ b/Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/Contents.json @@ -1,17 +1,17 @@ { "images" : [ { - "filename" : "call_hangup_big.png", + "filename" : "End Call.png", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "call_hangup_big@2x.png", + "filename" : "End Call@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "call_hangup_big@3x.png", + "filename" : "End Call@3x.png", "idiom" : "universal", "scale" : "3x" } @@ -21,6 +21,6 @@ "version" : 1 }, "properties" : { - "template-rendering-intent" : "template" + "template-rendering-intent" : "original" } } diff --git a/Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/End Call.png b/Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/End Call.png new file mode 100644 index 000000000..b1934caaf Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/End Call.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/End Call@2x.png b/Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/End Call@2x.png new file mode 100644 index 000000000..8a471f94d Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/End Call@2x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/End Call@3x.png b/Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/End Call@3x.png new file mode 100644 index 000000000..0a7195c07 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/End Call@3x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/call_hangup_big.png b/Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/call_hangup_big.png deleted file mode 100644 index 1ce2c0d62..000000000 Binary files a/Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/call_hangup_big.png and /dev/null differ diff --git a/Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/call_hangup_big@2x.png b/Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/call_hangup_big@2x.png deleted file mode 100644 index 0f64361ce..000000000 Binary files a/Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/call_hangup_big@2x.png and /dev/null differ diff --git a/Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/call_hangup_big@3x.png b/Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/call_hangup_big@3x.png deleted file mode 100644 index b33700210..000000000 Binary files a/Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/call_hangup_big@3x.png and /dev/null differ diff --git a/Riot/Assets/Images.xcassets/Call/call_more_icon.imageset/Contents.json b/Riot/Assets/Images.xcassets/Call/call_more_icon.imageset/Contents.json new file mode 100644 index 000000000..90c5ee452 --- /dev/null +++ b/Riot/Assets/Images.xcassets/Call/call_more_icon.imageset/Contents.json @@ -0,0 +1,26 @@ +{ + "images" : [ + { + "filename" : "iOS (24).png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "iOS (24)@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "iOS (24)@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "original" + } +} diff --git a/Riot/Assets/Images.xcassets/Call/call_more_icon.imageset/iOS (24).png b/Riot/Assets/Images.xcassets/Call/call_more_icon.imageset/iOS (24).png new file mode 100644 index 000000000..a6568ef23 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_more_icon.imageset/iOS (24).png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_more_icon.imageset/iOS (24)@2x.png b/Riot/Assets/Images.xcassets/Call/call_more_icon.imageset/iOS (24)@2x.png new file mode 100644 index 000000000..fbb298a73 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_more_icon.imageset/iOS (24)@2x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_more_icon.imageset/iOS (24)@3x.png b/Riot/Assets/Images.xcassets/Call/call_more_icon.imageset/iOS (24)@3x.png new file mode 100644 index 000000000..ac0ae55f0 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_more_icon.imageset/iOS (24)@3x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_paused_icon.imageset/Contents.json b/Riot/Assets/Images.xcassets/Call/call_paused_icon.imageset/Contents.json new file mode 100644 index 000000000..221206e15 --- /dev/null +++ b/Riot/Assets/Images.xcassets/Call/call_paused_icon.imageset/Contents.json @@ -0,0 +1,26 @@ +{ + "images" : [ + { + "filename" : "Paused.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Paused@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Paused@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "original" + } +} diff --git a/Riot/Assets/Images.xcassets/Call/call_paused_icon.imageset/Paused.png b/Riot/Assets/Images.xcassets/Call/call_paused_icon.imageset/Paused.png new file mode 100644 index 000000000..3089eec66 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_paused_icon.imageset/Paused.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_paused_icon.imageset/Paused@2x.png b/Riot/Assets/Images.xcassets/Call/call_paused_icon.imageset/Paused@2x.png new file mode 100644 index 000000000..9b59d92a7 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_paused_icon.imageset/Paused@2x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_paused_icon.imageset/Paused@3x.png b/Riot/Assets/Images.xcassets/Call/call_paused_icon.imageset/Paused@3x.png new file mode 100644 index 000000000..ea3bd9535 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_paused_icon.imageset/Paused@3x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_paused_white_icon.imageset/Contents.json b/Riot/Assets/Images.xcassets/Call/call_paused_white_icon.imageset/Contents.json new file mode 100644 index 000000000..df240cf11 --- /dev/null +++ b/Riot/Assets/Images.xcassets/Call/call_paused_white_icon.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Vector.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Vector@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Vector@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Riot/Assets/Images.xcassets/Call/call_paused_white_icon.imageset/Vector.png b/Riot/Assets/Images.xcassets/Call/call_paused_white_icon.imageset/Vector.png new file mode 100644 index 000000000..dc46934f4 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_paused_white_icon.imageset/Vector.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_paused_white_icon.imageset/Vector@2x.png b/Riot/Assets/Images.xcassets/Call/call_paused_white_icon.imageset/Vector@2x.png new file mode 100644 index 000000000..24bac8618 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_paused_white_icon.imageset/Vector@2x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_paused_white_icon.imageset/Vector@3x.png b/Riot/Assets/Images.xcassets/Call/call_paused_white_icon.imageset/Vector@3x.png new file mode 100644 index 000000000..97ba515c8 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_paused_white_icon.imageset/Vector@3x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_pip_icon.imageset/Contents.json b/Riot/Assets/Images.xcassets/Call/call_pip_icon.imageset/Contents.json new file mode 100644 index 000000000..ddc6344b6 --- /dev/null +++ b/Riot/Assets/Images.xcassets/Call/call_pip_icon.imageset/Contents.json @@ -0,0 +1,26 @@ +{ + "images" : [ + { + "filename" : "picture_in_picture_alt-24px 1.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "picture_in_picture_alt-24px 1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "picture_in_picture_alt-24px 1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "original" + } +} diff --git a/Riot/Assets/Images.xcassets/Call/call_pip_icon.imageset/picture_in_picture_alt-24px 1.png b/Riot/Assets/Images.xcassets/Call/call_pip_icon.imageset/picture_in_picture_alt-24px 1.png new file mode 100644 index 000000000..2168474f0 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_pip_icon.imageset/picture_in_picture_alt-24px 1.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_pip_icon.imageset/picture_in_picture_alt-24px 1@2x.png b/Riot/Assets/Images.xcassets/Call/call_pip_icon.imageset/picture_in_picture_alt-24px 1@2x.png new file mode 100644 index 000000000..d5c35d8a8 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_pip_icon.imageset/picture_in_picture_alt-24px 1@2x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_pip_icon.imageset/picture_in_picture_alt-24px 1@3x.png b/Riot/Assets/Images.xcassets/Call/call_pip_icon.imageset/picture_in_picture_alt-24px 1@3x.png new file mode 100644 index 000000000..91360f4ad Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_pip_icon.imageset/picture_in_picture_alt-24px 1@3x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/24.png b/Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/24.png new file mode 100644 index 000000000..aa4d94502 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/24.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/24@2x.png b/Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/24@2x.png new file mode 100644 index 000000000..b359725c4 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/24@2x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/24@3x.png b/Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/24@3x.png new file mode 100644 index 000000000..2c487f4aa Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/24@3x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/Contents.json b/Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/Contents.json new file mode 100644 index 000000000..f69f28085 --- /dev/null +++ b/Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "24.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "24@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "24@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/Contents.json b/Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/Contents.json index 91edfe9b1..dbb9c71cc 100644 --- a/Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/Contents.json +++ b/Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/Contents.json @@ -1,17 +1,17 @@ { "images" : [ { - "filename" : "call_video_mute_on_icon.png", + "filename" : "Video.png", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "call_video_mute_on_icon@2x.png", + "filename" : "Video@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "call_video_mute_on_icon@3x.png", + "filename" : "Video@3x.png", "idiom" : "universal", "scale" : "3x" } @@ -21,6 +21,6 @@ "version" : 1 }, "properties" : { - "template-rendering-intent" : "template" + "template-rendering-intent" : "original" } } diff --git a/Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/Video.png b/Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/Video.png new file mode 100644 index 000000000..e379143ca Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/Video.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/Video@2x.png b/Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/Video@2x.png new file mode 100644 index 000000000..f458c0c9e Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/Video@2x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/Video@3x.png b/Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/Video@3x.png new file mode 100644 index 000000000..e847ec334 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/Video@3x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/call_video_mute_on_icon.png b/Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/call_video_mute_on_icon.png deleted file mode 100644 index fe9838b71..000000000 Binary files a/Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/call_video_mute_on_icon.png and /dev/null differ diff --git a/Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/call_video_mute_on_icon@2x.png b/Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/call_video_mute_on_icon@2x.png deleted file mode 100644 index 071185caf..000000000 Binary files a/Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/call_video_mute_on_icon@2x.png and /dev/null differ diff --git a/Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/call_video_mute_on_icon@3x.png b/Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/call_video_mute_on_icon@3x.png deleted file mode 100644 index 2f90f11b6..000000000 Binary files a/Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/call_video_mute_on_icon@3x.png and /dev/null differ diff --git a/Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/Contents.json b/Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/Contents.json index ecab96b47..3a2226d70 100644 --- a/Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/Contents.json +++ b/Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/Contents.json @@ -1,17 +1,17 @@ { "images" : [ { - "filename" : "call_video_mute_off_icon.png", + "filename" : "Video Off.png", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "call_video_mute_off_icon@2x.png", + "filename" : "Video Off@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "call_video_mute_off_icon@3x.png", + "filename" : "Video Off@3x.png", "idiom" : "universal", "scale" : "3x" } @@ -21,6 +21,6 @@ "version" : 1 }, "properties" : { - "template-rendering-intent" : "template" + "template-rendering-intent" : "original" } } diff --git a/Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/Video Off.png b/Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/Video Off.png new file mode 100644 index 000000000..243928c1a Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/Video Off.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/Video Off@2x.png b/Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/Video Off@2x.png new file mode 100644 index 000000000..ef951c8e0 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/Video Off@2x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/Video Off@3x.png b/Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/Video Off@3x.png new file mode 100644 index 000000000..975156a50 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/Video Off@3x.png differ diff --git a/Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/call_video_mute_off_icon.png b/Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/call_video_mute_off_icon.png deleted file mode 100644 index 15dc99bf2..000000000 Binary files a/Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/call_video_mute_off_icon.png and /dev/null differ diff --git a/Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/call_video_mute_off_icon@2x.png b/Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/call_video_mute_off_icon@2x.png deleted file mode 100644 index 0c37cf99e..000000000 Binary files a/Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/call_video_mute_off_icon@2x.png and /dev/null differ diff --git a/Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/call_video_mute_off_icon@3x.png b/Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/call_video_mute_off_icon@3x.png deleted file mode 100644 index 8041bd8d8..000000000 Binary files a/Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/call_video_mute_off_icon@3x.png and /dev/null differ diff --git a/Riot/Assets/Images.xcassets/Call/camera_switch.imageset/Contents.json b/Riot/Assets/Images.xcassets/Call/camera_switch.imageset/Contents.json index 67ecee5d6..a1d4a004a 100644 --- a/Riot/Assets/Images.xcassets/Call/camera_switch.imageset/Contents.json +++ b/Riot/Assets/Images.xcassets/Call/camera_switch.imageset/Contents.json @@ -19,5 +19,8 @@ "info" : { "author" : "xcode", "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "template" } } diff --git a/Riot/Assets/Images.xcassets/Common/Contents.json b/Riot/Assets/Images.xcassets/Common/Contents.json index da4a164c9..73c00596a 100644 --- a/Riot/Assets/Images.xcassets/Common/Contents.json +++ b/Riot/Assets/Images.xcassets/Common/Contents.json @@ -1,6 +1,6 @@ { "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} diff --git a/Riot/Assets/Images.xcassets/Common/share_action_button.imageset/Contents.json b/Riot/Assets/Images.xcassets/Common/share_action_button.imageset/Contents.json new file mode 100644 index 000000000..a6bb96098 --- /dev/null +++ b/Riot/Assets/Images.xcassets/Common/share_action_button.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "share_action_button.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "share_action_button@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "share_action_button@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Riot/Assets/Images.xcassets/Common/share_action_button.imageset/share_action_button.png b/Riot/Assets/Images.xcassets/Common/share_action_button.imageset/share_action_button.png new file mode 100644 index 000000000..0419bed49 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Common/share_action_button.imageset/share_action_button.png differ diff --git a/Riot/Assets/Images.xcassets/Common/share_action_button.imageset/share_action_button@2x.png b/Riot/Assets/Images.xcassets/Common/share_action_button.imageset/share_action_button@2x.png new file mode 100644 index 000000000..23b7e2e7f Binary files /dev/null and b/Riot/Assets/Images.xcassets/Common/share_action_button.imageset/share_action_button@2x.png differ diff --git a/Riot/Assets/Images.xcassets/Common/share_action_button.imageset/share_action_button@3x.png b/Riot/Assets/Images.xcassets/Common/share_action_button.imageset/share_action_button@3x.png new file mode 100644 index 000000000..6670ef2f8 Binary files /dev/null and b/Riot/Assets/Images.xcassets/Common/share_action_button.imageset/share_action_button@3x.png differ diff --git a/Riot/Assets/de.lproj/Vector.strings b/Riot/Assets/de.lproj/Vector.strings index 5de898a6d..35921b1e6 100644 --- a/Riot/Assets/de.lproj/Vector.strings +++ b/Riot/Assets/de.lproj/Vector.strings @@ -76,7 +76,7 @@ "room_creation_make_public_prompt_title" = "Diesen Chat öffentlich machen?"; "room_creation_keep_private" = "Privat lassen"; "room_creation_make_private" = "Mache privat"; -"room_creation_wait_for_creation" = "Ein wurde wurde bereits erstellt. Bitte warten."; +"room_creation_wait_for_creation" = "Es wird gerade schon ein Raum erstellt. Bitte warten."; // Room recents "room_recents_directory_section" = "RAUM VERZEICHNIS"; "room_recents_directory_section_network" = "Netzwerk"; @@ -88,7 +88,7 @@ "room_recents_invites_section" = "EINLADUNGEN"; "room_recents_start_chat_with" = "Starte Chat"; "room_recents_create_empty_room" = "Erstelle Raum"; -"room_recents_join_room" = "Trete Raum bei"; +"room_recents_join_room" = "Tritt Raum bei"; "room_recents_join_room_title" = "Trete einem Raum bei"; // People tab "people_invites_section" = "EINLADUNGEN"; @@ -125,7 +125,7 @@ "room_participants_remove_prompt_msg" = "Bist du sicher, dass du %@ aus dem Chat entfernen möchtest?"; "room_participants_invite_prompt_title" = "Bestätigung"; "room_participants_invite_prompt_msg" = "Bist du sicher, dass du %@ in diesen Chat einladen möchtest?"; -"room_participants_filter_room_members" = "Filtere Raum-Mitglieder"; +"room_participants_filter_room_members" = "Mitglieder filtern"; "room_participants_invite_malformed_id_title" = "Fehler beim Einladen"; "room_participants_invited_section" = "EINGELADEN"; "room_participants_online" = "Online"; @@ -154,7 +154,7 @@ "room_two_users_are_typing" = "%@ & %@ tippen…"; "room_many_users_are_typing" = "%@, %@ & andere tippen…"; "room_message_placeholder" = "Nachricht senden (unverschlüsselt)…"; -"encrypted_room_message_placeholder" = "Verschlüsselte Nachricht senden…"; +"encrypted_room_message_placeholder" = "Verschlüsselte Nachricht…"; "room_message_short_placeholder" = "Sende eine Nachricht…"; "room_offline_notification" = "Verbindung zum Server wurde unterbrochen."; "room_unsent_messages_notification" = "Nachrichten wurden nicht gesendet. Jetzt %@ oder %@?"; @@ -255,9 +255,9 @@ "room_details_access_section_anyone" = "Jeder, der den Raum-Link kennt - auch Gäste"; "room_details_history_section" = "Wer kann die Historie lesen?"; "room_details_history_section_anyone" = "Jeder"; -"room_details_history_section_members_only" = "Nur Teilnehmer (ab dem Selektieren dieser Option)"; -"room_details_history_section_members_only_since_invited" = "Nur Teilnehmer (seitdem sie eingeladen wurden)"; -"room_details_history_section_members_only_since_joined" = "Nur Teilnehmer (seitdem sie beigetreten sind)"; +"room_details_history_section_members_only" = "Nur Mitglieder (seit diese Option ausgewählt ist)"; +"room_details_history_section_members_only_since_invited" = "Nur Mitglieder (ab ihrer Einladung)"; +"room_details_history_section_members_only_since_joined" = "Nur Mitglieder (Ab ihrem Beitritt)"; "room_details_history_section_prompt_title" = "Datenschutz-Warnung"; "room_details_addresses_section" = "Adressen"; "room_details_no_local_addresses" = "Dieser Raum hat keine lokalen Adressen"; @@ -307,7 +307,7 @@ "room_warning_about_encryption" = "Ende-zu-Ende Verschlüsselung ist in Beta und ist evtl. nicht zuverlässig.\n\nMan sollte noch nicht darauf vertrauen, dass die Daten sicher sind.\n\nGeräte werden Nachrichten von vor dem Beitritt des Raumes nicht entschlüsseln können.\n\nVerschlüsselte Nachrichten sind nicht lesbar auf Clients, die Verschlüsselung noch nicht implementiert haben."; "unknown_devices_alert" = "Dieser Raum enthält unbekannte Sitzungen, die nicht verifiziert wurden.\nDas bedeutet, es gibt keine Garantie, dass sie dem/r angegebenen Benutzer!n gehören.\nWir empfehlen eine Überprüfung für jedes Gerät, bevor du weitermachst. Du kannst die Nachricht auch ohne Verifizierung erneut senden."; "room_preview_unlinked_email_warning" = "Diese Einladung wurde an %@ gesendet, welche diesem Konto nicht zugeordnet ist. Möglicherweise möchtest du dich mit einem anderen Konto anmelden oder diese E-Mail zu deinem Konto hinzufügen."; -"room_preview_try_join_an_unknown_room" = "Du versuchst auf %@ zuzugreifen. Möchtest du dem Raum beitreten um teilzunehmen?"; +"room_preview_try_join_an_unknown_room" = "Du versuchst auf %@ zuzugreifen. Möchtest du dem Raum beitreten um teilzunehmen?"; "settings_config_identity_server" = "Identitätsserver ist %@"; "settings_labs" = "Labor"; "settings_sign_out_e2e_warn" = "Du wirst die Ende-zu-Ende Schlüssel verlieren. Du kannst dann auf diesem Gerät in verschlüsselten Räumen keine alten Nachrichten mehr lesen."; @@ -390,9 +390,9 @@ "e2e_enabling_on_app_update" = "Element unterstützt nun Ende-zu-Ende Verschlüsselung. Um sie zu aktivieren musst du dich erneut anmelden.\n\nDu kannst sie nun aktivieren oder später in den Einstellungen."; "e2e_need_log_in_again" = "Du musst dich erneut anmelden um Ende-zu-Ende Schlüssel für diese Sitzung zu erstellen und zum Server zu senden.\nDies ist nur einmal notwendig."; // Bug report -"bug_report_title" = "Bug Report"; +"bug_report_title" = "Fehlermeldung"; "bug_report_description" = "Beschreibe den Fehler. Was hast du gemacht? Was hast du erwartet? Was ist tatsächlich passiert?"; -"bug_crash_report_title" = "Crash Report"; +"bug_crash_report_title" = "Absturzmeldung"; "bug_crash_report_description" = "Bitte beschreibe was du vor dem Absturz gemacht hast:"; "bug_report_logs_description" = "Um Probleme analysieren zu können werden Log-Daten dieses Clients mit dem Bug Report gesendet. Wenn du nur den Text oben senden willst, bitte abwählen:"; "bug_report_send_logs" = "Sende Log-Daten"; @@ -468,7 +468,7 @@ "e2e_room_key_request_start_verification" = "Starte Verifikation…"; "e2e_room_key_request_share_without_verifying" = "Teile ohne zu verifizieren"; "e2e_room_key_request_ignore_request" = "Ignoriere Anfrage"; -"title_groups" = "Communities"; +"title_groups" = "Communitys"; // Groups tab "group_invite_section" = "EINLADUNGEN"; "group_section" = "COMMUNITIES"; @@ -534,7 +534,7 @@ // Re-request confirmation dialog "rerequest_keys_alert_title" = "Anfrage gesendet"; "rerequest_keys_alert_message" = "Bitte öffne Element auf einem anderen Gerät, das die Nachricht entschlüsseln kann, damit es die Schlüssel an diese Sitzung senden kann."; -"room_message_reply_to_placeholder" = "Sende eine unverschlüsselte Antwort…"; +"room_message_reply_to_placeholder" = "Antwort senden (unverschlüsselt)…"; "encrypted_room_message_reply_to_placeholder" = "Sende eine verschlüsselte Antwort…"; "room_message_reply_to_short_placeholder" = "Sende eine Antwort…"; "room_replacement_information" = "Dieser Raum wurde ersetzt und ist nicht länger aktiv."; @@ -626,7 +626,7 @@ "key_backup_recover_from_recovery_key_recovery_key_placeholder" = "Gebe Wiederherstellungsschlüssel ein"; "key_backup_recover_from_recovery_key_recover_action" = "Historie entschlüsseln"; "key_backup_recover_from_recovery_key_lost_recovery_key_action" = "Hast du deinen Wiederherstellungsschlüssel verloren? Du kannst in den Einstellungen einen neuen einrichten."; -"key_backup_recover_success_info" = "Sicherung wiederhergestellt"; +"key_backup_recover_success_info" = "Sicherung wiederhergestellt!"; "key_backup_recover_done_action" = "Erledigt"; "key_backup_setup_banner_title" = "Verliere niemals verschlüsselte Nachrichten"; "key_backup_setup_banner_subtitle" = "Beginne Schlüsselsicherung zu nutzen"; @@ -654,7 +654,7 @@ // String for App Store "store_short_description" = "Sicherer, dezentralisierter Chat/VoIP"; "store_full_description" = "Element ist die neue Art von Messenger- und Kooperations-App, die:\n\n1. dir die Kontrolle gibt deine Privatsphäre zu schützen,\n2. dir die Kommunikation mit anderen Personen im Matrix-Netzwerk und darüber hinaus Integration in Apps wie Slack ermöglicht,\n3. dich vor Werbung, Datenerfassung, Hintertüren und ummauerten Gärten schützt,\n4. dich durch End-to-End-Verschlüsselung absichert und mit Cross-Signing andere zu überprüfen.\n\nElement unterscheidet sich grundlegend von anderen Messaging- und Kooperations-Diensten, da es dezentralisiert und open-source ist.\n\nMit Element kannst du dich selbst hosten oder einen Host auswählen, sodass du Datenschutz, Eigentum und Kontrolle über deine Daten und Konversationen hast. Du erhältst Zugriff auf ein offenes Netzwerk und bist nicht auf Element-Nutzer beschränkt. Und es ist sehr sicher.\n\nElement ist in der Lage, all dies zu tun, da es mit Matrix arbeitet - dem Standard für offene, dezentrale Kommunikation.\n\nMit Element hast du die Kontrolle, indem du auswählen kannst, wer deine Konversationen hostet. In der Element-App kannst du verschiedene Hosts auswählen:\n\n1. Hole dir ein kostenloses Konto auf dem öffentlichen Server von matrix.org\n2. Hoste dein Konto selbst, indem du einen Server auf deiner eigenen Hardware ausführst\n3. Melde dich für ein Konto auf einem benutzerdefinierten Server an, indem du einfach die Hosting-Plattform von Element Matrix Services abonnierst\n\nWarum Element?\n\nBESITZE DEINE DATEN: Du entscheidest, wo deine Daten und Nachrichten aufbewahrt werden sollen. Du besitzt und kontrollierst sie, nicht irgendeine MEGACORP, die deine Daten verwertet oder Dritten Zugriff gewährt.\n\nOPEN MESSAGING UND ZUSAMMENARBEIT: Du kannst mit allen anderen Mitgliedern des Matrix-Netzwerks chatten, unabhängig davon, ob sie Element oder eine andere Matrix-App verwenden, sogar selbst wenn sie ein anderes Messaging-System wie Slack, IRC oder XMPP verwenden.\n\nSUPERSICHER: Echte End-to-End-Verschlüsselung (nur diejenigen in der Konversation können Nachrichten entschlüsseln) und Cross-Signing, um die Geräte der Konversationsteilnehmer zu überprüfen.\n\nVOLLSTÄNDIGE KOMMUNIKATION: Messaging, Sprach- und Videoanrufe, Dateifreigabe, Bildschirmfreigabe und eine ganze Reihe von Integrationen, Bots und Widgets. Baue Räume, Gemeinschaften, bleib in Kontakt und erledige Dinge.\n\nÜBERALL, WO Du BIST: Bleibe mit dem vollständig synchronisierten Nachrichtenverlauf auf all deinen Geräten und im Internet (unter https://element.io/app) unabhängig voneinander in Kontakt."; -"auth_login_single_sign_on" = "Anmelden mit Single Sign-On"; +"auth_login_single_sign_on" = "Anmelden"; "auth_autodiscover_invalid_response" = "Ungültige Antwort beim Entdecken des Heimservers"; "room_message_unable_open_link_error_message" = "Konnte Link nicht öffnen."; "room_event_action_reply" = "Antworten"; @@ -1065,8 +1065,8 @@ "key_verification_self_verify_unverified_sessions_alert_title" = "Überprüfe, wo du angemeldet bist"; "key_verification_self_verify_unverified_sessions_alert_message" = "Verifiziere alle deine Sitzungen, um sicher zu stellen, dass dein Konto & deine Nachrichten sicher sind."; "key_verification_self_verify_unverified_sessions_alert_validate_action" = "Überprüfung"; -"device_verification_self_verify_wait_new_sign_in_title" = "Verifiziere diese Sitzung"; -"device_verification_self_verify_wait_additional_information" = "oder einen anderen Matrix Client der Cross-signing fähig ist"; +"device_verification_self_verify_wait_new_sign_in_title" = "Diese Anmeldung verifizieren"; +"device_verification_self_verify_wait_additional_information" = "Dies funktioniert mit Element oder einem anderen Matrix Client, der Cross-Signing unterstützt."; "device_verification_self_verify_wait_recover_secrets_without_passphrase" = "Wiederherstellungsschlüssel verwenden"; "device_verification_self_verify_wait_recover_secrets_with_passphrase" = "Nutze eine Wiederherstellungsmethode"; "device_verification_self_verify_wait_recover_secrets_additional_information" = "Falls du keinen Zugang zu einer existierenden Sitzung hast"; @@ -1107,7 +1107,7 @@ "key_verification_scan_confirmation_scanned_device_information" = "Zeigt das andere Gerät das gleiche Schild an?"; "user_verification_session_details_verify_action_current_user_manually" = "Überprüfe manuell mit einem Text"; "secrets_recovery_with_passphrase_title" = "Wiederherstellungs-Passphrase"; -"secrets_recovery_with_passphrase_information_default" = "Gib deine Wiederherstellungspassphrase ein, um auf auf deine Nachrichtenhistorie und deine Cross-Signing-Identität zuzugreifen. Die Cross-Signing-Identität ermöglicht dir andere Sitzungen zu verifizieren."; +"secrets_recovery_with_passphrase_information_default" = "Gib deine Wiederherstellungs-Passphrase ein, um auf deine verschlüsselten Nachrichten und deine Cross-Signing-Identität zuzugreifen. Mit der Cross-Signing-Identität kannst du andere Sitzungen verifizieren."; "secrets_recovery_with_passphrase_information_verify_device" = "Nutze deinen Wiederherstellungsphrase um dieses Gerät zu verifizieren."; "secrets_recovery_with_passphrase_passphrase_placeholder" = "Gib die Wiederherstellungspassphrase ein"; "secrets_recovery_with_passphrase_recover_action" = "Nutze Passphrase"; @@ -1117,7 +1117,7 @@ "secrets_recovery_with_passphrase_invalid_passphrase_title" = "Auf sicheren Speicher kann nicht zugegriffen werden"; "secrets_recovery_with_passphrase_invalid_passphrase_message" = "Bitte stell sicher, dass du die korrekte Wiederherstellungspassphrase eingegeben hast."; "secrets_recovery_with_key_title" = "Wiederherstellungsschlüssel"; -"secrets_recovery_with_key_information_default" = "Gib deine Wiederherstellungspassphrase ein, um auf auf deine Nachrichtenhistorie und deine Cross-Signing-Identität zuzugreifen. Die Cross-Signing-Identität ermöglicht dir andere Sitzungen zu verifizieren."; +"secrets_recovery_with_key_information_default" = "Gib deinen Wiederherstellungs-Schlüssel ein, um auf deine verschlüsselten Nachrichten und deine Cross-Signing-Identität zuzugreifen. Mit der Cross-Signing-Identität kannst du andere Sitzungen verifizieren."; "secrets_recovery_with_key_information_verify_device" = "Nutze deinen Wiederherstellungsschlüssel um dieses Gerät zu verifizieren."; "secrets_recovery_with_key_recovery_key_placeholder" = "Wiederherstellungsschlüssel eingeben"; "secrets_recovery_with_key_recover_action" = "Schlüssel benutzen"; @@ -1168,7 +1168,7 @@ "pin_protection_settings_enabled_forced" = "PIN aktiviert"; "pin_protection_settings_enable_pin" = "PIN aktivieren"; "biometrics_mode_touch_id" = "Touch-ID"; -"biometrics_mode_face_id" = "Gesicht-ID"; +"biometrics_mode_face_id" = "Face-ID"; "biometrics_settings_enable_x" = "%@ aktivieren"; "biometrics_setup_title_x" = "%@ aktivieren"; "biometrics_setup_enable_button_title_x" = "%@ aktivieren"; @@ -1242,3 +1242,36 @@ "secrets_reset_warning_message" = "Du wirst ohne Nachrichtenverlauf, Nachrichten, vertraute Geräte oder vertraute Benutzer neu-starten."; "secrets_reset_warning_title" = "Falls du alles zurücksetzt"; "secrets_reset_information" = "Tu dies nur, wenn du kein anderes Gerät hast, mit dem du dieses Gerät überprüfen kannst."; + +// MARK: - Home + +"home_empty_view_title" = "Willkommen bei %@,\n%@"; +"secrets_setup_recovery_passphrase_summary_information" = "Erinnere dich an deine Sicherheitsphrase. Sie kann zum entschlüsseln der Nachrichten & Daten verwendet werden."; +"secrets_setup_recovery_passphrase_summary_title" = "Sichere deine Sicherheitsphrase"; +"rooms_empty_view_title" = "Räume"; +"people_empty_view_information" = "Sicher kommunizieren mit allen. Drücke + um Leute hinzuzufügen."; +"people_empty_view_title" = "Leute"; + +// MARK: - Favourites + +"favourites_empty_view_title" = "Lieblingsräume und -nutzer"; +"favourites_empty_view_information" = "Um einen Lieblingschat hinzuzufügen, halte diesen gedrückt und wähle den Stern aus. Du findest deine Lieblingschats gesammelt hier."; +"home_empty_view_information" = "Die sichere Chat-App für Teams, Freunde und Organisationen. Tippe unten auf das +, um Leute und Räume hinzuzufügen."; +"rooms_empty_view_information" = "Noch keine Chat-Räume vorhanden. Tippe auf das +, um einem Raum beizutreten oder einen neuen zu erstellen."; +"invite_friends_share_text" = "Hey! Sprich mit mir auf %@: %@"; + +// MARK: - Invite friends + +"invite_friends_action" = "Freunde zu %@ einladen"; +"pin_protection_settings_change_pin" = "PIN ändern"; +"pin_protection_confirm_pin_to_change" = "PIN bestätigen um PIN zu ändern"; +"bug_report_background_mode" = "Im Hintergrund fortfahren"; +"social_login_button_title_sign_up" = "Registrieren mit %@"; +"social_login_button_title_sign_in" = "Anmelden mit %@"; +"social_login_button_title_continue" = "Weiter mit %@"; +"social_login_list_title_sign_up" = "Oder Registrieren mit"; +"social_login_list_title_sign_in" = "Oder Anmelden mit"; + +// Social login + +"social_login_list_title_continue" = "Weiter mit"; diff --git a/Riot/Assets/en.lproj/Vector.strings b/Riot/Assets/en.lproj/Vector.strings index 64dfc346c..2882eeb7b 100644 --- a/Riot/Assets/en.lproj/Vector.strings +++ b/Riot/Assets/en.lproj/Vector.strings @@ -64,6 +64,14 @@ "more" = "More"; "less" = "Less"; +// Call Bar +"callbar_only_single_active" = "Active call (%@)"; +"callbar_active_and_single_paused" = "1 active call (%@) · 1 paused call"; +"callbar_active_and_multiple_paused" = "1 active call (%@) · %@ paused calls"; +"callbar_only_single_paused" = "Paused call"; +"callbar_only_multiple_paused" = "%@ paused calls"; +"callbar_return" = "Return"; + // Accessibility "accessibility_checkbox_label" = "checkbox"; @@ -142,8 +150,8 @@ // Social login "social_login_list_title_continue" = "Continue with"; -"social_login_list_title_sign_in" = "Or login with"; -"social_login_list_title_sign_up" = "Or register with"; +"social_login_list_title_sign_in" = "Or"; +"social_login_list_title_sign_up" = "Or"; "social_login_button_title_continue" = "Continue with %@"; "social_login_button_title_sign_in" = "Sign In with %@"; @@ -378,6 +386,8 @@ Tap the + to start adding people."; "room_accessibility_upload" = "Upload"; "room_accessibility_call" = "Call"; "room_accessibility_hangup" = "Hang up"; +"room_place_voice_call" = "Voice call"; +"room_open_dialpad" = "Dial pad"; "media_type_accessibility_image" = "Image"; "media_type_accessibility_audio" = "Audio"; @@ -528,7 +538,7 @@ Tap the + to start adding people."; "settings_add_3pid_password_title_email" = "Add email adress"; "settings_add_3pid_password_title_msidsn" = "Add phone number"; "settings_add_3pid_password_message" = "To continue, please enter your password"; -"settings_add_3pid_invalid_password_message" = "Invalid password"; +"settings_add_3pid_invalid_password_message" = "Invalid credentials"; "settings_crypto_device_name" = "Session name: "; "settings_crypto_device_id" = "\nSession ID: "; @@ -799,6 +809,12 @@ Tap the + to start adding people."; "event_formatter_rerequest_keys_part1_link" = "Re-request encryption keys"; "event_formatter_rerequest_keys_part2" = " from your other sessions."; "event_formatter_message_edited_mention" = "(edited)"; +"event_formatter_call_voice" = "Voice call"; +"event_formatter_call_video" = "Video call"; +"event_formatter_call_has_ended" = "This call has ended"; +"event_formatter_call_you_currently_in" = "You're currently in this call"; +"event_formatter_call_you_declined" = "You declined this call"; +"event_formatter_call_back" = "Call back"; // Events formatter with you "event_formatter_widget_added_by_you" = "You added the widget: %@"; @@ -836,6 +852,8 @@ Tap the + to start adding people."; "call_no_stun_server_error_message_2" ="Alternatively, you can try to use the public server at %@, but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings"; "call_no_stun_server_error_use_fallback_button" = "Try using %@"; +"call_actions_unhold" = "Resume"; + // No VoIP support "no_voip_title" = "Incoming call"; "no_voip" = "%@ is calling you but %@ does not support calls yet.\nYou can ignore this notification and answer the call from another device or you can reject it."; @@ -864,6 +882,7 @@ Tap the + to start adding people."; "bug_report_progress_zipping" = "Collecting logs"; "bug_report_progress_uploading" = "Uploading report"; "bug_report_send" = "Send"; +"bug_report_background_mode" = "Continue in background"; // Widget "widget_no_integrations_server_configured" = "No integrations server configured"; @@ -1148,7 +1167,7 @@ Tap the + to start adding people."; "device_verification_self_verify_wait_title" = "Complete security"; "device_verification_self_verify_wait_new_sign_in_title" = "Verify this login"; "device_verification_self_verify_wait_information" = "Verify this session from one of your other sessions, granting it access to encrypted messages.\n\nUse the latest Element on your other devices:"; -"device_verification_self_verify_wait_additional_information" = "This works with Element and other cross-signing capable Matrix cients."; +"device_verification_self_verify_wait_additional_information" = "This works with Element and other cross-signing capable Matrix clients."; "device_verification_self_verify_wait_recover_secrets_without_passphrase" = "Use Recovery Key"; "device_verification_self_verify_wait_recover_secrets_with_passphrase" = "Use Recovery Passphrase or Key"; "device_verification_self_verify_wait_recover_secrets_additional_information" = "If you can't access an existing session"; @@ -1536,6 +1555,18 @@ Tap the + to start adding people."; "room_info_list_several_members" = "%@ members"; "room_info_list_section_other" = "Other"; +// MARK: - Dial Pad +"dialpad_title" = "Dial pad"; + +// MARK: - Call Transfer +"call_transfer_title" = "Transfer"; +"call_transfer_users" = "Users"; +"call_transfer_dialpad" = "Dial pad"; +"call_transfer_contacts_recent" = "Recent"; +"call_transfer_contacts_all" = "All"; +"call_transfer_error_title" = "Error"; +"call_transfer_error_message" = "Call transfer failed"; + // MARK: - Home "home_empty_view_title" = "Welcome to %@,\n%@"; @@ -1545,3 +1576,8 @@ Tap the + to start adding people."; "favourites_empty_view_title" = "Favourite rooms and people"; "favourites_empty_view_information" = "You can favourite a few ways - the quickest is just to press and hold. Tap the star and they’ll automatically appear here for safe keeping."; + +// MARK: - Invite friends + +"invite_friends_action" = "Invite friends to %@"; +"invite_friends_share_text" = "Hey, talk to me on %@: %@"; diff --git a/Riot/Assets/et.lproj/Vector.strings b/Riot/Assets/et.lproj/Vector.strings index 00da0b04c..d898f4a65 100644 --- a/Riot/Assets/et.lproj/Vector.strings +++ b/Riot/Assets/et.lproj/Vector.strings @@ -110,8 +110,8 @@ "room_participants_action_security_status_verified" = "Verifitseeritud"; "room_participants_action_security_status_verify" = "Verifitseeri"; "room_participants_action_security_status_warning" = "Hoiatus"; -"room_participants_action_security_status_loading" = "Laeme…"; -"room_participants_security_loading" = "Laeme…"; +"room_participants_action_security_status_loading" = "Laadime…"; +"room_participants_security_loading" = "Laadime…"; "room_participants_security_information_room_not_encrypted" = "See jututuba ei ole läbivalt krüptitud."; "room_participants_security_information_room_encrypted" = "Sõnumid siin jututoas kasutavad läbivat krüptimist.\n\nSinu sõnumid on turvatud ning ainult sinul ja saaja(te)l on unikaalsed võtmed selliste sõnumite lugemiseks."; // Chat @@ -215,7 +215,7 @@ "client_web_name" = "Element Web"; "client_ios_name" = "Element iOS"; "client_android_name" = "Element Android"; -"auth_login_single_sign_on" = "Logi sisse ühekordse sisselogimise abil"; +"auth_login_single_sign_on" = "Logi sisse"; // Room recents "room_recents_directory_section" = "JUTUTUBADE LOEND"; "room_recents_directory_section_network" = "Võrk"; @@ -289,7 +289,7 @@ "room_message_edits_history_title" = "Sõnumite muutmised"; "room_accessibility_search" = "Otsing"; "room_accessibility_integrations" = "Lõiminguid"; -"room_accessibility_upload" = "Lae üles"; +"room_accessibility_upload" = "Laadi üles"; "room_accessibility_call" = "Helista"; "room_accessibility_hangup" = "Lõpeta kõne"; "media_type_accessibility_image" = "Pilt"; @@ -543,7 +543,7 @@ "settings_crypto_export" = "Ekspordi võtmed"; "settings_crypto_blacklist_unverified_devices" = "Kasuta krüptimist vaid verifitseeritud sessioonides"; "settings_deactivate_my_account" = "Eemalda minu konto kasutusest"; -"security_settings_crypto_sessions_loading" = "Laen sessioone…"; +"security_settings_crypto_sessions_loading" = "Laadin sessioone…"; "security_settings_user_password_description" = "Tuvasta oma isik sisestades salasõna"; // Manage session "manage_session_title" = "Halda sessiooni"; @@ -837,7 +837,7 @@ "key_verification_bootstrap_not_setup_message" = "Sa pead esmalt kasutusele võtma risttunnustamise."; "key_verification_tile_request_incoming_title" = "Verifitseerimispäring"; "key_verification_tile_request_outgoing_title" = "Verifitseerimispäring on saadetud"; -"key_verification_tile_request_status_data_loading" = "Laeme andmeid…"; +"key_verification_tile_request_status_data_loading" = "Laadime andmeid…"; "key_verification_tile_request_status_waiting" = "Ootan…"; "key_verification_tile_request_status_expired" = "Aegunud"; "key_verification_tile_request_status_cancelled_by_me" = "Sa tühistasid"; @@ -1057,7 +1057,7 @@ "secrets_recovery_with_key_invalid_recovery_key_message" = "Palun kontrolli, et sa sisestasid õige taastevõtme."; "secrets_setup_recovery_key_title" = "Salvesta turvavõti"; "secrets_setup_recovery_key_information" = "Salvesta oma taastevõti turvalisse kohta. Seda saab kasutada sinu krüptitud sõnumite ja andmete lugemiseks."; -"secrets_setup_recovery_key_loading" = "Laeme…"; +"secrets_setup_recovery_key_loading" = "Laadime…"; "secrets_setup_recovery_key_export_action" = "Salvesta"; "secrets_setup_recovery_key_done_action" = "Valmis"; "secrets_setup_recovery_key_storage_alert_title" = "Hoia seda turvaliselt"; @@ -1119,7 +1119,7 @@ "bug_report_send_logs" = "Saada logikirjed"; "bug_report_send_screenshot" = "Saada ekraanipilt"; "bug_report_progress_zipping" = "Kogun logisid"; -"bug_report_progress_uploading" = "Laen üles veakirjeldust"; +"bug_report_progress_uploading" = "Laadin üles veakirjeldust"; "bug_report_send" = "Saada"; // Widget "widget_no_integrations_server_configured" = "Vidinate haldusserver ei ole seadistatud"; @@ -1208,4 +1208,30 @@ // MARK: - Home -"home_empty_view_title" = "Tere tulemast kasutama suhtlusrakendust Element,\n%@"; +"home_empty_view_title" = "Tere tulemast suhtlusrakendusse %@,\n%@"; +"favourites_empty_view_information" = "Lemmikuid saad lisada mitmel viisil - neist kõgi lihtsam on see, et vajutad nime ja hoiad seda mõne hetke. Vali siis tähega ikoon ja ongi lisatud."; + +// MARK: - Favourites + +"favourites_empty_view_title" = "Lemmikjututoad ja -inimesed"; +"rooms_empty_view_information" = "Jututoad sobivad igasuguste rühmavestluste jaoks, olgu need siis avalikud või privaatsed. Olemasolevate jututubade otsimiseks või uute lisamiseks klõpsi + ikooni."; +"rooms_empty_view_title" = "Jututoad"; +"people_empty_view_information" = "Suhltle turvaliselt kellega soovid. Inimeste lisamiseks klõpsi + ikooni."; +"people_empty_view_title" = "Inimesed"; +"invite_friends_share_text" = "Suhtle minuga %@ vahendusel: %@"; + +// MARK: - Invite friends + +"invite_friends_action" = "Kutsu sõpru kasutama rakendust %@"; +"pin_protection_settings_change_pin" = "Muuda PIN-koodi"; +"pin_protection_confirm_pin_to_change" = "PIN-koodi muutmiseks korda PIN-koodi"; +"bug_report_background_mode" = "Jätka taustal"; +"social_login_button_title_sign_up" = "Loo konto kasutades %@ teenust"; +"social_login_button_title_sign_in" = "Logi sisse kasutades %@ teenust"; +"social_login_button_title_continue" = "Jätka kasutades %@ teenust"; +"social_login_list_title_sign_up" = "Või registreeru kasutajaks kasutades"; +"social_login_list_title_sign_in" = "Või logi sisse kasutades"; + +// Social login + +"social_login_list_title_continue" = "Jätka kasutades"; diff --git a/Riot/Assets/fi.lproj/Vector.strings b/Riot/Assets/fi.lproj/Vector.strings index d5aa8629b..80d4f683c 100644 --- a/Riot/Assets/fi.lproj/Vector.strings +++ b/Riot/Assets/fi.lproj/Vector.strings @@ -49,3 +49,5 @@ "major_update_title" = "Riot on nyt Element"; "major_update_learn_more_action" = "Lue lisää"; "major_update_done_action" = "Selvä"; +"room_member_power_level_short_moderator" = "Valvoja"; +"room_member_power_level_moderator_in" = "Valvoja %@:ssä"; diff --git a/Riot/Assets/fr.lproj/Vector.strings b/Riot/Assets/fr.lproj/Vector.strings index 9f494651b..1d129967c 100644 --- a/Riot/Assets/fr.lproj/Vector.strings +++ b/Riot/Assets/fr.lproj/Vector.strings @@ -668,7 +668,7 @@ "key_backup_setup_intro_manual_export_action" = "Exporter les clés manuellement"; // String for App Store "store_short_description" = "Discussions et appels sécurisés et décentralisés"; -"store_full_description" = "Communiquez, à votre façon.\n\nUne application de discussion, que vous contrôlez et entièrement flexible. Element vous laisse communiquer comme vous le souhaitez. Conçu pour [matrix], le standard pour les communications libres et décentralisées.\n\nCréez un compte matrix.org gratuit, gérez votre propre serveur sur https://ems.element.io ou utilisez un autre serveur Matrix.\n\nPourquoi choisir Element ?\n\n• COMMUNICATION COMPLÈTE : Construisez des salons autours de vos équipes, de vos amis, de votre communauté comme vous le souhaitez ! Discutez, partagez des fichiers, ajoutez des widgets et passez des appels audio et vidéo gratuitement.\n\n• INTÉGRATIONS PUISSANTES : Utilisez Element avec les outils que vous connaissez déjà. Avec Element vous pouvez même discuter avec les utilisateurs et les groupes qui utilisent d'autres applications de discussion.\n\n• PRIVÉ ET SÉCURISÉ : Gardez vos conversations secrètes. Un chiffrement de bout en bout de pointe vous garanti que vos communications privées restent privées.\n\n• OUVERT, PAS FERMÉ : Open source, et construit autour de Matrix. Restez en possession de vos données en hébergeant votre propre serveur, ou choisissez celui auquel vous faites confiance.\n\n• PARTOUT OÙ VOUS ÊTES : Restez en contact où que vous soyez avec la synchronisation complète de l'historique de vos messages entre vos différents appareils et en ligne sur https://app.element.io."; +"store_full_description" = "Element est un nouveau type d'application de chat et de collaboration qui permet de :\n\n1. Vous place en control afin de vous permettre de préserver votre vie privée \n2. Vous permet de communiquer avec n'importe qui du réseau Matrix, et même plus en intégrants des implications tel que Slack \n3. Vous protège des pubs, du datamining , des porte dérobées et des walled gardens\n4. Vous sécurise à travers une inscription de bout en bout, avec des co-enregistrement pour vérifier les autres\n\nElement est totalement differents des autres applications de chat et de collaboration puisqu'il est décentralisé et open source.\n\nElement vous place en control en vous laissant choisir qui sont les hôtes de vos conversations. Depuis l'application Element, vous pouvez être un hôte de différentes façons: \n\n1. Obtenez un compte gratuitement sur les serveurs publics de matrix.org\n2. Host votre compte à l'aide de votre propre serveur et matérielle\n3. Inscrivez vous pour un compte sur un serveur customisé simplement en vous abonnant a la plateforme hôte de Services Matrix Element\n\nPourquoi choisir Element ?\n\n• COMMUNICATION COMPLÈTE : Construisez des salons autours de vos équipes, de vos amis, de votre communauté comme vous le souhaitez ! Discutez, partagez des fichiers, ajoutez des widgets et passez des appels audio et vidéo gratuitement.\n\n• INTÉGRATIONS PUISSANTES : Utilisez Element avec les outils que vous connaissez déjà. Avec Element vous pouvez même discuter avec les utilisateurs et les groupes qui utilisent d'autres applications de discussion.\n\n• PRIVÉ ET SÉCURISÉ : Gardez vos conversations secrètes. Un chiffrement de bout en bout de pointe vous garanti que vos communications privées restent privées.\n\n• OUVERT, PAS FERMÉ : Open source, et construit autour de Matrix. Restez en possession de vos données en hébergeant votre propre serveur, ou choisissez celui auquel vous faites confiance.\n\n• PARTOUT OÙ VOUS ÊTES : Restez en contact où que vous soyez avec la synchronisation complète de l'historique de vos messages entre vos différents appareils et en ligne sur https://app.element.io."; "auth_login_single_sign_on" = "Se connecter avec l'authentification unique"; "room_message_unable_open_link_error_message" = "Impossible d’ouvrir le lien."; "auth_autodiscover_invalid_response" = "Réponse de découverte du serveur d’accueil non valide"; diff --git a/Riot/Assets/hu.lproj/Vector.strings b/Riot/Assets/hu.lproj/Vector.strings index 18d9cd6f9..22903436c 100644 --- a/Riot/Assets/hu.lproj/Vector.strings +++ b/Riot/Assets/hu.lproj/Vector.strings @@ -673,7 +673,7 @@ "key_backup_setup_intro_manual_export_action" = "Kulcsok kimentése kézzel"; // String for App Store "store_short_description" = "Biztonságos elosztott csevegés/VoIP"; -"auth_login_single_sign_on" = "Bejelentkezés egyszeri bejelentkezéssel"; +"auth_login_single_sign_on" = "Bejelentkezés"; "room_message_unable_open_link_error_message" = "A linket nem lehet megnyitni."; "store_full_description" = "Element egy újfajta csevegő és együttműködést segítő alkalmazás ami:\n\n1. Visszaadja az irányítást neked, hogy megvédd a magánéleted információit\n2. Lépj kapcsolatba bárkivel a Matrix hálózatban, és azon túl alkalmazások integrálásával mint amilyen például a slack\n3. Megvéd a hirdetőktől, adatbányászoktól, hátsó kapuktól és fallal védett rendszerektől\n4. Végpontok közötti titkosítással véd, ahol egymás személyazonosságát ellenőrizhetitek\n\nElement a többi üzenetküldő és kollaborációs alkalmazástól teljesen eltérő abban a tekintetben, hogy elosztott és nyílt forrású rendszer.\n\nElement megengedi, hogy saját magadnak üzemeltess szervert vagy válassz szervert tetszés szerint - így biztonságban vagy te vagy a tulajdonosa az üzeneteidnek és te irányítod az adatokat és a beszélgetéseket. Egy nyílt hálózathoz enged hozzáférést; tehát nem csak más Element felhasználókkal beszélgethetsz. És nagyon biztonságos.\n\nElement mindezt a Matrix miatt tudja ami egy szabványos nyílt és elosztott kommunikációs rendszer.\n\nElement visszaadja az irányítást azzal, hogy kiválaszthatod ki kezelje a beszélgetéseidet. Az Element alkalmazásból különbözőképpen választhatod ki a szerverd:\n\n1. Kérj egy ingyenes fiókot a matrix.org nyilvános szerveren\n2. Saját szervert is üzemeltethetsz a fiókodnak saját hardveren\n3. Jelentkezz egy fiókért egy egyedi szerveren az Element Matrix Services hosting platformra való feliratkozással\n\nMiért válasz az Elementet?\n\nAZ ADATOD A TULAJDONOD: Te döntöd el hol tárolod az adataidat és üzeneteidet. A tiéd és nálad az irányítás és nem valami NAGYVÁLLALATNÁL ami elemzi az adataidat és odaadja másoknak.\n\nNYILT ÜZENETKÜLDÉS ÉS KOLLABORÁCIÓ: Bárkivel beszélgethetsz a Matrix hálózaton, akár az Elementet használja akár más Matrix alkalmazást vagy akár másik üzenetküldő rendszert használ mint például a Slack, IRC vagy XMPP.\n\nSZUPER-BIZTONSÁGOS: Igazi végpontok közötti titkosítás (csak a beszélgetés résztvevői tudják visszafejteni az üzenetet), és kereszt aláírásokkal lehet a beszélgetésben résztvevő eszközöket ellenőrizni.\n\nTELJES KOMMUNIKÁCIÓ: Üzenetküldés, hang és videó hívások, fájl megosztás, képernyő megosztás és egy csomó egyéb integráció, botok és kisalkalmazások. Építs szobákat, közösségeket, maradj kapcsolatban és vigyél véghez dolgokat. \n\nBÁRHOL VAGY: Maradj kapcsolatban akárhol vagy az összes üzeneteddel minden eszközödön vagy a weben a https://element.io/app -pal."; "auth_autodiscover_invalid_response" = "Matrix szerver felderítésénél érvénytelen válasz érkezett"; @@ -1065,7 +1065,7 @@ "security_settings_complete_security_alert_message" = "Először be kell fejezned ennek a munkamenetnek a biztonsági beállítását."; "security_settings_coming_soon" = "Bocsánat. Element iOS-n ez a művelet egyenlőre nem érhető el. Kérlek használj másik Matrix klienst a beállításához. Element iOS használni fogja."; "device_verification_self_verify_wait_new_sign_in_title" = "Belépés ellenőrzése"; -"device_verification_self_verify_wait_additional_information" = "vagy másik eszközök közötti hitelesítésre alkalmas Matrix kliensre"; +"device_verification_self_verify_wait_additional_information" = "Ez Elementtel vagy más eszközök közötti hitelesítést támogató Matrix klienssel működik."; // MARK: - Device Verification "key_verification_other_session_title" = "Munkamenet hitelesítése"; "key_verification_new_session_title" = "Új munkamenet ellenőrzése"; @@ -1265,3 +1265,36 @@ "secrets_recovery_reset_action_part_1" = "Elfelejtetted vagy elveszett minden visszaállítási lehetőség? "; "less" = "Kevesebb"; +"favourites_empty_view_information" = "Többféle módon lehet kedvencnek beállítani - a leggyorsabb, ha rányomsz és nyomva tartod. Koppints a csillagra és automatikusan megjelennek itt."; +"home_empty_view_information" = "A minden az egyben csevegő alkalmazás csapatoknak, barátoknak és szervezeteknek. Emberek és szobák hozzáadásához koppints a + jelre."; + +// MARK: - Home + +"home_empty_view_title" = "Üdv itt: %@,\n%@"; +"secrets_setup_recovery_passphrase_summary_information" = "Jegyezd meg a Biztonsági Kifejezést. A titkosított üzenetek és adatokhoz való hozzáféréshez használható."; +"rooms_empty_view_information" = "A szobák megfelelnek bármilyen zárt vagy nyilvános csoportnak. Létező szobák megtalálásához vagy új készítéséhez koppints a + jelre."; +"people_empty_view_information" = "Beszélj biztonságosan bárkivel. Emberek hozzáadásához koppints a + jelre."; + +// MARK: - Favourites + +"favourites_empty_view_title" = "Kedvenc szobák és emberek"; +"secrets_setup_recovery_passphrase_summary_title" = "Biztonsági kifejezés mentése"; +"rooms_empty_view_title" = "Szobák"; +"people_empty_view_title" = "Emberek"; +"invite_friends_share_text" = "Üdvözlöm! Beszélhet velem itt: %@, %@"; + +// MARK: - Invite friends + +"invite_friends_action" = "Barátok meghívása ide: %@"; +"pin_protection_settings_change_pin" = "PIN megváltoztatása"; +"pin_protection_confirm_pin_to_change" = "A PIN megváltoztatásához írd be a PIN kódot"; +"bug_report_background_mode" = "Folytatás a háttérben"; +"social_login_button_title_sign_up" = "Fiókkészítés ezzel: %@"; +"social_login_button_title_sign_in" = "Bejelentkezés ezzel: %@"; +"social_login_button_title_continue" = "Folytatás ezzel: %@"; +"social_login_list_title_sign_up" = "Vagy fiókkészítés ezzel:"; +"social_login_list_title_sign_in" = "Vagy bejelentkezés ezzel:"; + +// Social login + +"social_login_list_title_continue" = "Folytatás ezzel:"; diff --git a/Riot/Assets/it.lproj/Vector.strings b/Riot/Assets/it.lproj/Vector.strings index f8868d6d3..0afba28e8 100644 --- a/Riot/Assets/it.lproj/Vector.strings +++ b/Riot/Assets/it.lproj/Vector.strings @@ -77,7 +77,7 @@ "later" = "Più avanti"; "sending" = "Inviando"; "auth_submit" = "Invia"; -"auth_login_single_sign_on" = "Accedi con single sign-on"; +"auth_login_single_sign_on" = "Accedi"; "auth_untrusted_id_server" = "L'affidabilità dell'Identity Server non è stata accertata"; "auth_password_dont_match" = "Le password non corrispondono"; "auth_username_in_use" = "Nome utente in uso"; @@ -1238,3 +1238,34 @@ "secrets_recovery_reset_action_part_2" = "Reimposta tutto"; "secrets_setup_recovery_passphrase_summary_information" = "Ricorda la tua frase di sicurezza. Può essere usata per sbloccare i tuoi messaggi e dati cifrati."; "secrets_setup_recovery_passphrase_summary_title" = "Salva la tua frase di sicurezza"; +"favourites_empty_view_information" = "Puoi preferire in diversi modi - il più veloce è tenendo premuto. Tocca la stella e appariranno qui automaticamente per tenerle al sicuro."; + +// MARK: - Favourites + +"favourites_empty_view_title" = "Stanze e persone preferite"; +"home_empty_view_information" = "L'app all-in-one di chat sicure per team, amici e organizzazioni. Tocca il pulsante + qua sotto per aggiungere persone e stanze."; + +// MARK: - Home + +"home_empty_view_title" = "Benvenuti su %@,\n%@"; +"rooms_empty_view_information" = "Le stanze sono ottime per chat di gruppo, private o pubbliche. Tocca il + per trovare quelle esistenti o crearne di nuove."; +"rooms_empty_view_title" = "Stanze"; +"people_empty_view_information" = "Chatta in modo sicuro con chiunque. Tocca il + per aggiungere persone."; +"people_empty_view_title" = "Persone"; +"invite_friends_share_text" = "Ehi, parliamoci su %@: %@"; + +// MARK: - Invite friends + +"invite_friends_action" = "Invita amici in %@"; +"pin_protection_settings_change_pin" = "Cambia PIN"; +"pin_protection_confirm_pin_to_change" = "Conferma il PIN per modificarlo"; +"bug_report_background_mode" = "Continua in secondo piano"; +"social_login_button_title_sign_up" = "Registrati con %@"; +"social_login_button_title_sign_in" = "Accedi con %@"; +"social_login_button_title_continue" = "Continua con %@"; +"social_login_list_title_sign_up" = "O registrati con"; +"social_login_list_title_sign_in" = "O accedi con"; + +// Social login + +"social_login_list_title_continue" = "Continua con"; diff --git a/Riot/Assets/ja.lproj/Vector.strings b/Riot/Assets/ja.lproj/Vector.strings index 9d8d92483..e977a6d7b 100644 --- a/Riot/Assets/ja.lproj/Vector.strings +++ b/Riot/Assets/ja.lproj/Vector.strings @@ -333,7 +333,7 @@ "room_details_settings" = "設定"; "room_details_photo" = "部屋の画像アイコン"; "room_details_room_name" = "部屋名"; -"room_details_topic" = "部屋の説明"; +"room_details_topic" = "トピック"; "room_details_favourite_tag" = "お気に入り"; "room_details_low_priority_tag" = "低優先度"; "room_details_mute_notifs" = "発言があっても通知しない"; @@ -568,3 +568,28 @@ "auth_softlogout_clear_data_sign_out" = "サインアウト"; "room_message_unable_open_link_error_message" = "リンクを開くことができません。"; "user_verification_session_details_verify_action_other_user" = "手動で確認"; +"room_info_list_section_other" = "その他"; +"room_info_list_several_members" = "%@ 人のメンバー"; + +// MARK: - Room Info + +"room_info_list_one_member" = "1 人のメンバー"; +"create_room_placeholder_address" = "#testroom:matrix.org"; +"create_room_section_header_address" = "部屋のアドレス"; +"create_room_show_in_directory" = "この部屋をディレクトリに掲載する"; +"create_room_section_footer_type" = "プライベートな部屋は、部屋に招待された人のみ参加できます。"; +"create_room_type_public" = "公開された部屋"; +"create_room_type_private" = "プライベートな部屋"; +"create_room_section_header_type" = "部屋の種類"; +"create_room_section_footer_encryption" = "暗号化はあとから無効にすることはできません。"; +"create_room_section_header_encryption" = "部屋の暗号化"; +"create_room_placeholder_topic" = "トピック"; +"create_room_section_header_topic" = "部屋のトピック (任意)"; +"create_room_placeholder_name" = "名前"; +"create_room_section_header_name" = "部屋の名前"; + +// MARK: - Create Room + +"create_room_title" = "新しい部屋"; +"create_room_enable_encryption" = "暗号化を有効にする"; +"room_details_room_name_for_dm" = "名前"; diff --git a/Riot/Assets/kab.lproj/InfoPlist.strings b/Riot/Assets/kab.lproj/InfoPlist.strings new file mode 100644 index 000000000..a1ebc798f --- /dev/null +++ b/Riot/Assets/kab.lproj/InfoPlist.strings @@ -0,0 +1,10 @@ + + + +"NSContactsUsageDescription" = "Akken ad d-tafeḍ inermisen i yesseqdacen Matrix, Element yezmer ad yazen tansiwin imayl d wuṭṭunen n tiliɣri n umedlis-ik•im n tansiwin i uqeddac-ik•im n tmagit Matrix. Ma yettwasefrak, isefka udmawanen ad ẓden send tizzna - ttxil senqed tabaḍnit n uqeddac-ik•im n tmagit i wugar n yisallen."; +"NSFaceIDUsageDescription" = "Asulay n wudem tettwaseqdac iwakken ad tkecmeḍ ɣer usnas-ik•im."; +"NSCalendarsUsageDescription" = "Ẓer timliliyin-ik•im yettwaɣewsen deg usnas."; +"NSMicrophoneUsageDescription" = "Aswaḍ yettwaseqdac i tuṭṭfa n tvidyutin d yisawalen."; +"NSPhotoLibraryUsageDescription" = "Tamkerḍit n tewlafin tettwaseqdac i tizzna n tewlafin d tvidyutin."; +// Permissions usage explanations +"NSCameraUsageDescription" = "Takamirat tettwaseqdac i tuṭṭfa n tewlafin d tvidyutin, daɣen i yisawalen s tvidyut."; diff --git a/Riot/Assets/kab.lproj/Localizable.strings b/Riot/Assets/kab.lproj/Localizable.strings new file mode 100644 index 000000000..6e07f4d0a --- /dev/null +++ b/Riot/Assets/kab.lproj/Localizable.strings @@ -0,0 +1,114 @@ + + + + +/* A user has invited you to a named room */ +"USER_INVITE_TO_NAMED_ROOM" = "%@ inced-ik•ikem-id ɣer %@"; + +/** Key verification **/ + +"KEY_VERIFICATION_REQUEST_FROM_USER" = "%@ yebɣa ad issenqed"; + +/* Incoming named video conference invite from a specific person */ +"VIDEO_CONF_NAMED_FROM_USER" = "Asiwel n ugraw s tvidyut seg %@: '%@'"; + +/* Incoming named voice conference invite from a specific person */ +"VOICE_CONF_NAMED_FROM_USER" = "Asiwel n ugraw seg %@: '%@'"; + +/* Incoming unnamed video conference invite from a specific person */ +"VIDEO_CONF_FROM_USER" = "Asiwel n ugraw s tvidyut sɣur %@"; + +/* Incoming unnamed voice conference invite from a specific person */ +"VOICE_CONF_FROM_USER" = "Asiwel n ugraw sɣur %@"; + +/* Incoming one-to-one video call */ +"VIDEO_CALL_FROM_USER" = "Asiwel s tvidyut sɣur %@"; + +/** Calls **/ + +/* Incoming one-to-one voice call */ +"VOICE_CALL_FROM_USER" = "Asiwel sɣur %@"; + +/* A user has invited you to an (unamed) group chat */ +"USER_INVITE_TO_CHAT_GROUP_CHAT" = "%@ inced-ik•ikem-id ɣer udiwenni n ugraw"; + +/** Invites **/ + +/* A user has invited you to a chat */ +"USER_INVITE_TO_CHAT" = "%@ inced-ik•ikem-id ɣer udiwenni"; + +/* Look, stuff's happened, alright? Just open the app. */ +"MSGS_IN_TWO_PLUS_ROOMS" = "%@ n yiznan imaynuten deg %@, %@ d wiyaḍ"; + +/* Multiple messages in two rooms */ +"MSGS_IN_TWO_ROOMS" = "%@ n yiznan imaynuten deg %@ d %@"; + +/* Multiple unread messages from two plus people (ie. for 4+ people: 'others' replaces the third person) */ +"MSGS_FROM_TWO_PLUS_USERS" = "%@ n yiznan imaynuten sɣur %@, %@ d wiyaḍ"; + +/* Multiple unread messages from three people */ +"MSGS_FROM_THREE_USERS" = "%@ n yiznan imaynuten sɣur %@, %@ d %@"; + +/* Multiple unread messages from two people */ +"MSGS_FROM_TWO_USERS" = "%@ n yiznan imaynuten sɣur %@ d %@"; + +/* Multiple unread messages from a specific person, not referencing a room */ +"MSGS_FROM_USER" = "%@ n yiznan imaynuten deg %@"; + +/** Coalesced messages **/ + +/* Multiple unread messages in a room */ +"UNREAD_IN_ROOM" = "%@ n yiznan imaynuten deg %@"; +"MESSAGE_PROTECTED" = "Izen amaynut"; + +/* New message indicator on a room */ +"MESSAGE_IN_X" = "Izen deg %@"; + +/* New message indicator from a DM */ +"MESSAGE_FROM_X" = "Izen sɣur %@"; + +/** Notification messages **/ + +/* New message indicator on unknown room */ +"MESSAGE" = "Izen"; + +/* Sticker from a specific person, not referencing a room. */ +"STICKER_FROM_USER" = "%@ yuzen astiker"; + +/* A single unread message */ +"SINGLE_UNREAD" = "Yuweḍ-ik•ikem-id yizen"; + +/* A single unread message in a room */ +"SINGLE_UNREAD_IN_ROOM" = "Yuweḍ-ik•ikem-id yizen deg %@"; + +/* New action message from a specific person in a named room. */ +"IMAGE_FROM_USER_IN_ROOM" = "%@ yessufeɣ-d tugna %@ deg %@"; + +/** Image Messages **/ + +/* New action message from a specific person, not referencing a room. */ +"IMAGE_FROM_USER" = "%@ yuzen tugna %@"; + +/* New action message from a specific person in a named room. */ +"ACTION_FROM_USER_IN_ROOM" = "%@: *%@ %@"; + +/* New action message from a specific person, not referencing a room. */ +"ACTION_FROM_USER" = "*%@ %@"; + +/* New message from a specific person in a named room. Content included. */ +"MSG_FROM_USER_IN_ROOM_WITH_CONTENT" = "%@ deg %@: %@"; + +/** Single, unencrypted messages (where we can include the content */ + +/* New message from a specific person, not referencing a room. Content included. */ +"MSG_FROM_USER_WITH_CONTENT" = "%@: %@"; + +/* New message from a specific person in a named room */ +"MSG_FROM_USER_IN_ROOM" = "%@ yessufeɣ-d deg %@"; + +/** Single, end-to-end encrypted messages (ie. we don't know what they say) */ + +/* New message from a specific person, not referencing a room */ +"MSG_FROM_USER" = "%@ yuzen izen"; +/* Message title for a specific person in a named room */ +"MSG_FROM_USER_IN_ROOM_TITLE" = "%@ deg %@"; diff --git a/Riot/Assets/kab.lproj/Vector.strings b/Riot/Assets/kab.lproj/Vector.strings new file mode 100644 index 000000000..812f4def9 --- /dev/null +++ b/Riot/Assets/kab.lproj/Vector.strings @@ -0,0 +1,1425 @@ + + + +"key_backup_setup_passphrase_set_passphrase_action" = "Sbadu tafyirt tuffirt"; +"key_backup_setup_passphrase_confirm_passphrase_invalid" = "Tafyirt tuffirt ur temṣada ara"; +"key_backup_setup_passphrase_confirm_passphrase_placeholder" = "Sentem tafyirt tuffirt"; +"key_backup_setup_passphrase_confirm_passphrase_title" = "Sentem"; +"key_backup_setup_passphrase_passphrase_placeholder" = "Sekcem tafyirt tuffirt"; +"key_backup_setup_passphrase_passphrase_title" = "Anekcum"; +"key_backup_setup_intro_manual_export_action" = "Sifeḍ s ufus tisura"; +"key_backup_setup_intro_manual_export_info" = "(Leqqayen)"; +"key_backup_setup_intro_setup_action_without_existing_backup" = "Bdu aseqdec n uḥraz n tsarut"; +"key_backup_setup_intro_info" = "Iznan deg texxamt yettwawgelhen, ttusɣelsen s uwgelhen n yixef ɣer yixef. Ala kečč·kemm d uɣerwaḍ (yiɣeryaḍen) i yesɛan tisura i tɣuri n yiznan-a.\n\nAḥraz aɣelsan n tsura-inek·inem i akken tḍemneḍ ur ak·am-ttruḥun ara."; + +// Intro + +"key_backup_setup_intro_title" = "Ur ttamdal ara akk iznan iwgelhanen"; +"key_backup_setup_skip_alert_skip_action" = "Zgel"; +"key_backup_setup_skip_alert_title" = "Tebɣiḍ s tidet?"; + + +// MARK: Key backup setup + +"key_backup_setup_title" = "Aḥraz n tsarut"; +"secure_backup_setup_banner_subtitle" = "Seḥbiber iman-ik·im mgal asruḥu n unekcum ɣer yiznann & yisefka yettwawgelhen"; + +// Banner + +"secure_backup_setup_banner_title" = "Aḥraz aɣelsan"; +"secure_key_backup_setup_cancel_alert_message" = "Ma yella teffɣeḍ tura, yezmer ad ak·am-ruḥen yiznan yettwawgelhen d yisefka ma yella tesruḥeḍ anekcum ɣer yinekcam-inek·inem.\n\nTzemreḍ ad tesbaduḍ aḥraz aɣelsan rnu ad tesferkeḍ tisura-inek·inem melmi i tebɣiḍ deg yiɣewwaren."; +"secure_key_backup_setup_intro_use_security_passphrase_info" = "Sekcem tafyirt n tɣellist ara tissineḍ kan kečč·kemm, syen sirew tasarut i uḥraz."; +"secure_key_backup_setup_intro_use_security_key_info" = "Sirew tasarut n tɣellist ara tḥerzeḍ deg wadeg yettwaḍemnen, am yimsefrak n wawalen uufiren neɣ deg usenduq."; +"secure_key_backup_setup_intro_use_security_key_title" = "Seqdec tasarut n tɣellist"; +"secure_key_backup_setup_intro_info" = "Seḥbiber iman-ik·im ɣef uḍegger n unekcum ɣer yiznann & yisefka yettwawgelhe s uḥraz n tsura n uwgelhen ɣef uqeddac-inek·inem."; + +// MARK: Secure backup setup + +// Intro + +"secure_key_backup_setup_intro_title" = "Aḥraz aɣelsan"; +"rerequest_keys_alert_message" = "Ma ulac aɣilif err Element deg yibenk-nniḍen i izemren ad yekkes awgelhen i yiznan, akken ad yizmir ad yazen tisura ɣer tɣimit-a."; +"deactivate_account_password_alert_title" = "Sens amiḍan"; +"deactivate_account_validate_action" = "Sens amiḍan"; +"deactivate_account_forget_messages_information_part2_emphasize" = "Asmigel"; + +// Deactivate account + +"deactivate_account_title" = "Sens amiḍan"; +"service_terms_modal_description_for_integration_manager" = "Seqdec abuḍen, tileggiyin, iwiǧiten d yikemmusen n yistikar"; +"service_terms_modal_description_for_identity_server_2" = "Ad d-yettwaf s tiliɣri neɣ s yimayl"; +"service_terms_modal_description_for_identity_server_1" = "Af-d wiyaḍ s tiliɣri neɣ s yimayl"; +"service_terms_modal_decline_button" = "Agwi"; +"service_terms_modal_accept_button" = "Qbel"; +"gdpr_consent_not_given_alert_review_now_action" = "Senqed tura"; +"e2e_room_key_request_ignore_request" = "Anef i tuttra"; +"e2e_room_key_request_share_without_verifying" = "Bḍu war asenqed"; +"room_widget_permission_room_id_permission" = "Asulay n texxamt"; +"room_widget_permission_widget_id_permission" = "Asulay n yiwiǧit"; +"room_widget_permission_theme_permission" = "Asentel-inek·inem"; +"room_widget_permission_user_id_permission" = "Asulay-ik·m n useqdac"; +"room_widget_permission_avatar_url_permission" = "URL n avatar-inek·inem"; +"room_widget_permission_display_name_permission" = "Isem-ik·im yettwaskanen"; +"room_widget_permission_creator_info_title" = "Awiǧit-a yettwarna sɣur:"; + +// Room widget permissions +"room_widget_permission_title" = "Sali awiǧit"; + +// Widget Picker +"widget_picker_title" = "Imsidaf"; +"widget_integration_missing_user_id" = "Ixuṣṣ usulay_aseqdac deg usuter."; +"widget_integration_missing_room_id" = "Ixuṣṣ usulay_taxxamt deg usuter."; +"widget_integration_no_permission_in_room" = "Ur tesεiḍ ara tasiregt ad tgeḍ ayagi deg texxamt-a."; +"widget_integration_must_be_in_room" = "Ulac-ik/ikem deg texxamt-a."; +"widget_integration_positive_power_level" = "Ilaq ad yili uswir n tezmert d ummid ufrir."; +"widget_integration_room_not_recognised" = "Taxxamt-a ur tṣeggem ara."; +"widget_integration_failed_to_send_request" = "Tuzna n usuter ur teddi ara."; +"widget_integration_unable_to_create" = "Timerna n uwiǧit ulamek."; + +// Widget Integration Manager +"widget_integration_need_to_be_able_to_invite" = "Tesriḍ ad tizmireḍ ad d-tnecdeḍ iseqdacen ad gen ayagi."; +"widget_menu_remove" = "Kkes i meṛṛa"; +"widget_menu_revoke_permission" = "Sefesex anekcum i nekk"; +"widget_menu_open_outside" = "Ldi deg yiminig"; +"widget_menu_refresh" = "Smiren"; +"widget_creation_failure" = "Timerna n uwiǧit ur teddi ara"; +"widget_no_power_to_manage" = "Tesriḍ ad tesɛuḍ tisirag i wakken ad tesferkeḍ iwiǧiten deg texxamt-a"; +"bug_report_send" = "Azen"; +"bug_report_progress_uploading" = "Asali n uneqqis"; +"bug_report_progress_zipping" = "Alqaḍ n yiɣmisen"; +"bug_report_send_screenshot" = "Azen tuṭṭfa n ugdil"; +"bug_report_send_logs" = "Azen iɣmisen"; +"bug_report_description" = "Ttxil-k·m glem-d abug. Acu i txedmeḍ? Acu i terǧiḍ? Acu yeḍran?"; +"e2e_key_backup_wrong_version_button_wasme" = "D nekk"; +"e2e_key_backup_wrong_version_button_settings" = "Iɣewwaren"; + +// Key backup wrong version +"e2e_key_backup_wrong_version_title" = "Aḥraz n tsarut amaynut"; + +// No VoIP support +"no_voip_title" = "Asiwel i d-ikecmen"; +"call_no_stun_server_error_title" = "Ur yeddi ara usiwel ssebba n uqeddac ur nettuswel ara akken iwata"; +"do_not_ask_again" = "Ur sutur ara tikelt-nniḍen"; +"yesterday" = "Iḍelli"; +"today" = "Ass-a"; +"you" = "Kečč / kem"; + +// Others +"or" = "neɣ"; +"event_formatter_message_edited_mention" = "(yettwaẓreg)"; +"directory_server_type_homeserver" = "Aru aqeddac agejdan i wakken ad d-tbedreḍ tixxamin tizuyaz seg-s"; + +// Directory +"directory_title" = "Akaram"; + +// Image picker +"image_picker_action_camera" = "Ṭṭef-d tawlaft"; +"media_picker_select" = "Fren"; +"media_picker_library" = "Tamkarḍit"; + +// Media picker +"media_picker_title" = "Tamkarḍit n imidyaten"; +"receipt_status_read" = "Ɣer: "; + +// Read Receipts +"read_receipts_list" = "Ɣeṛ tabdart n wawwaḍ"; + +// Group rooms +"group_rooms_filter_rooms" = "Sizdeg tixxamin ɣer temɣiwent"; +"group_participants_invited_section" = "YETTWANCED"; +"group_participants_filter_members" = "Sizdeg imttekkiyen n texxamt"; +"group_participants_invite_prompt_title" = "Asentem"; +"group_participants_remove_prompt_title" = "Asentem"; +"group_home_one_room_format" = "1 texxamt"; + +// Group Home +"group_home_one_member_format" = "1 uɛeggal"; +"group_details_rooms" = "Timɣiwent"; +"group_details_people" = "Imdanen"; +"group_details_home" = "Agejdan"; +"room_details_copy_room_address" = "Tansa n unɣal n texxamt"; +"room_details_copy_room_id" = "Asulay n unɣal n texxamt"; +"room_details_unset_main_address" = "Tansa tagejdant ur tettusbadu ara"; +"room_details_set_main_address" = "Sbadu tansa tagejdant"; +"room_details_advanced_e2e_encryption_blacklist_unverified_devices" = "Wgelhen i usenqed n tɣimiyinkan"; +"room_details_advanced_room_id_for_dm" = "Asulay:"; +"room_details_advanced_section" = "Talqayt"; +"room_details_banned_users_section" = "Iseqdacen i yettwagin"; +"room_details_addresses_invalid_address_prompt_title" = "Amasal n yismawen yettwamudden d arameɣtu"; +"room_details_new_address" = "Rnu tansa tamaynut"; +"room_details_no_local_addresses" = "Taxxamt-a ur tesɛi ara tansiwin tidiganin"; +"room_details_addresses_section" = "Tansiwin"; +"room_details_history_section_prompt_msg" = "Isnifal n unekcum ɣer umazray ad ddun deg yiznan i d-iteddun deg texxamt-a. Timeẓriwt n umazray yellan ur yettbeddil ara."; +"room_details_history_section_members_only_since_joined" = "Iɛeggalen kan (segmi ara d-ttwarnun)"; +"room_details_history_section_members_only_since_invited" = "Iɛeggalen kan (segmi ara d-ttwanecden)"; +"room_details_history_section_members_only" = "Iɛeggalen kan (segmi yebda ufran n textiṛit-a)"; +"room_details_history_section_anyone" = "Yal yiwen"; +"room_details_history_section" = "Anwa i izemren ad d-iɣer amazray?"; +"room_details_access_section_directory_toggle" = "Err taxxamt-a deg tebdart n ukaram n texxamt"; +"room_details_access_section_anyone" = "Yal win·tin yessnen aseɣwen n texxamt rnu-d ɣer-sen inebgawen"; +"room_details_access_section_anyone_apart_from_guest" = "Yal win·tin yessnen aseɣwen n texxamt slid inebgawen"; +"room_details_access_section_invited_only" = "Ala imdanen i d-yettusnubegten"; +"room_details_access_section" = "Anwa i izemren ad d-yernu ɣer texxamt-a?"; +"room_details_direct_chat" = "Adiwenni uslig"; +"room_details_low_priority_tag" = "Tazwart taddayt"; +"room_details_favourite_tag" = "Asmenyif"; +"room_details_topic" = "Asentel"; +"room_details_room_name_for_dm" = "Isem"; +"room_details_room_name" = "Isem n texxamt"; +"room_details_photo_for_dm" = "Tawlaft"; +"room_details_photo" = "Tawlaft n texxamt"; +"room_details_settings" = "Iɣewwaren"; +"room_details_files" = "Isuli-d"; +"room_details_people" = "Imttekkiyen"; +"room_details_title_for_dm" = "Ifatusen"; + + +// Room Details +"room_details_title" = "Talqayt n texxamt"; +"identity_server_settings_alert_disconnect_still_sharing_3pid_button" = "Ɣas akken ffeɣ seg tuqqna"; +"identity_server_settings_alert_disconnect_button" = "Ffeɣ seg tuqqna"; +"identity_server_settings_alert_disconnect_title" = "Ffeɣ seg tuqqna n uqeddac n timagit"; +"identity_server_settings_alert_change_title" = "Snifel aqeddac n timagit"; +"identity_server_settings_alert_no_terms_title" = "Timagit n uqeddac ulac ɣer-s tiwtilin n yimeẓla"; +"identity_server_settings_disconnect" = "Ffeɣ seg tuqqna"; +"identity_server_settings_change" = "Beddel"; +"identity_server_settings_add" = "Rnu"; + +// Identity server settings +"identity_server_settings_title" = "Aqeddac n timagit"; +"manage_session_sign_out" = "Ffeɣ seg tɣimit-a"; +"manage_session_not_trusted" = "Ur yettwattkal ara"; +"manage_session_name" = "Isem n tɣimit"; +"security_settings_secure_backup_delete" = "Kkes"; +"security_settings_secure_backup_setup" = "Sbadu"; +"security_settings_secure_backup_description" = "Seḥbiber iman-ik·im ɣef uḍegger n unekcum ɣer yiznann & yisefka yettwawgelhe s uḥraz n tsura n uwgelhen ɣef uqeddac-inek·inem."; + + +// Security settings +"security_settings_title" = "Taɣellist"; +"settings_discovery_three_pid_details_revoke_action" = "Ḥwi"; +"settings_discovery_three_pid_details_share_action" = "Bḍu"; +"settings_discovery_three_pid_details_title_email" = "Sefrek imayl"; +"settings_devices_description" = "Isem n tiɣimit tazayezt yettban i yimdanen wukud tettmeslayeḍ"; +"settings_key_backup_delete_confirmation_prompt_msg" = "Tettḥeqqeḍ? Ad tesruḥeḍ iznan-ik•im yettwawgelhen ma tisura-k•m ur klisent ara akken ilaq."; +"settings_key_backup_delete_confirmation_prompt_title" = "Kkes aḥraz"; +"settings_key_backup_button_connect" = "Qqen tiɣimit-a ɣer uḥraz n tsarut"; +"settings_key_backup_button_delete" = "Kkes aḥraz"; +"settings_key_backup_button_restore" = "Tiririt seg uḥraz"; +"settings_key_backup_button_create" = "Bdu aseqdec n uḥraz n tsarut"; +"settings_key_backup_info_progress_done" = "Akk tisura ttwaḥerzent"; +"settings_key_backup_info_none" = "Tisura-inek·inem ur ttwaḥrazent ara seg tɣimit-a."; +"settings_key_backup_info" = "Iznan yettwawgelhen ttuḥerzen s uwgelhen n yixef ɣer yixef. Ala kečč d uɣerwaḍ (yiɣerwaḍen) i yesεan tisura akken ad ɣren iznan-a."; +"settings_deactivate_my_account" = "Sens amiḍan-inu"; +"settings_crypto_blacklist_unverified_devices" = "Wgelhen i usenqed n tɣimiyinkan"; +"settings_add_3pid_invalid_password_message" = "Yir awal uffir"; +"settings_add_3pid_password_title_msidsn" = "Rnu uṭṭun n tiliɣri"; +"settings_password_updated" = "Amiḍan-ik·im yettwalqem"; +"settings_enable_rageshake" = "Zelzel reffu i tuzna n wabug"; +"settings_privacy_policy" = "Tasertit n tbaḍnit"; +"settings_copyright" = "Izerfan ttwaḥerzen"; +"settings_labs_create_conference_with_jitsi" = "Rnu isaragen s usiwel s jitsi"; +"settings_labs_e2e_encryption" = "Awgelhen seg yixef ɣer yixef"; +"settings_contacts_phonebook_country" = "Tamurt n udlis n tiliɣri"; +"settings_ui_theme_black" = "Aberkan"; +"settings_ui_theme_dark" = "Aberkan"; +"settings_ui_theme_light" = "Aceɛlal"; +"settings_ui_theme_auto" = "Automatique"; +"settings_ui_theme" = "Asentel"; +"settings_ui_language" = "Tutlayt"; +"settings_integrations_allow_button" = "Sefrek imsidf"; +"settings_calls_stun_server_fallback_button" = "Sireg aqeddac n tallalt n yisawalen n usellek"; +"settings_pin_rooms_with_unread" = "Reṣṣi tixxamin yesεan iznan ur nettwaɣra ara"; +"settings_pin_rooms_with_missed_notif" = "Reṣṣi tixxamin s yilɣa i ixuṣṣen"; +"settings_three_pids_management_information_part2" = "Tagrut"; +"settings_change_password" = "Beddel awal n uffir"; +"settings_add_phone_number" = "Rnu uṭṭun n tiliɣri"; +"settings_phone_number" = "Tiliɣri"; +"settings_add_email_address" = "Rnu tansa n yimayl"; +"settings_email_address_placeholder" = "Sekcem tansa email inek(m)"; +"settings_email_address" = "Imayl"; +"settings_remove_prompt_title" = "Asentem"; +"settings_first_name" = "Isem"; +"settings_display_name" = "Sken isem"; +"settings_profile_picture" = "Tawlaft n umaɣnu"; +"settings_sign_out_confirmation" = "Tebɣiḍ s tidet?"; +"settings_sign_out" = "Ffeɣ"; +"settings_devices" = "TIƔIMIYIN"; +"settings_clear_cache" = "Sfeḍ takatut tuffirt"; +"settings_report_bug" = "Ini ɣef wabug"; + +// Settings +"settings_title" = "Iɣewwaren"; +"room_preview_try_join_an_unknown_room_default" = "taxxamt"; +"room_preview_subtitle" = "Tagi d taskant n texxamt-a. Amyigew gar texxamin yensa."; +"room_title_one_member" = "1 uɛeggal"; +"unknown_devices_call_anyway" = "Ɣas siwel kan"; +"unknown_devices_send_anyway" = "Ɣas azen kan"; + +// Unknown devices +"unknown_devices_alert_title" = "Taxxamt ideg llant tɣimiyin tarussanin"; +"external_link_confirmation_title" = "Senqed tikkelt-nniḍen aseɣwen-a"; +"media_type_accessibility_sticker" = "Astiker"; +"media_type_accessibility_file" = "Afaylu"; +"media_type_accessibility_location" = "Adig"; +"media_type_accessibility_video" = "Ividyuten"; +"media_type_accessibility_audio" = "Ameslaw"; +"media_type_accessibility_image" = "Tugna"; +"room_accessibility_call" = "Siwel"; +"room_accessibility_upload" = "Sali"; +"room_accessibility_integrations" = "Imsidaf"; +"room_accessibility_search" = "Nadi"; +"room_message_edits_history_title" = "Tiẓrigin n yizen"; +"room_resource_limit_exceeded_message_contact_2_link" = "nermes anedbal n umeẓlu-inek·inem"; +"room_predecessor_information" = "Taxxamt-a d akemmel n udiwenni-nniḍen."; +"room_replacement_link" = "Adiwenni yettkemmil dagi."; +"room_replacement_information" = "Taxxamt-a ad tettusmelsi, dayen d tarurmidt."; +"room_action_reply" = "Err"; +"room_action_send_sticker" = "Azen astiker"; +"room_action_camera" = "Ṭṭef-d tawlaft neɣ tavidyut"; +"room_event_action_reaction_show_less" = "Sken-d drus"; +"room_event_action_reaction_show_all" = "Sken akk"; +"room_event_action_edit" = "Ẓreg"; +"room_event_action_reply" = "Err"; +"room_event_action_cancel_download" = "Sefsex Asider"; +"room_event_action_delete" = "Kkes"; +"room_event_action_resend" = "Ɛawed azen"; +"room_event_action_save" = "Sekles"; +"room_event_action_report_prompt_reason" = "Taɣzint i tuzna n ugbur-a"; +"room_event_action_report" = "Agbur n uneqqis"; +"room_event_action_view_decrypted_source" = "Senqed taɣbalut tawgelhent"; +"room_event_action_view_source" = "Wali aɣbalu"; +"room_event_action_permalink" = "Aseɣwen imezgi"; +"room_event_action_share" = "Bḍu"; +"room_event_action_more" = "Ugar"; +"room_event_action_redact" = "Sfeḍ"; +"room_event_action_quote" = "Tanebdurt"; +"room_event_action_copy" = "Nɣel"; +"room_delete_unsent_messages" = "Kkes iznan ur yettwaznen ara"; +"room_resend_unsent_messages" = "Wennez iznan ur yettwaznen ara"; +"room_prompt_resend" = "Wennez kullec"; +"room_ongoing_conference_call_close" = "Mdel"; +"room_offline_notification" = "Tṛuḥ tuqqna ɣer uqeddac."; +"room_message_reply_to_short_placeholder" = "Azen tiririt…"; +"room_message_short_placeholder" = "Azen izen…"; +"encrypted_room_message_reply_to_placeholder" = "Azen tiririt yettuwgelhen…"; +"encrypted_room_message_placeholder" = "Azen izen yettuwgelhen…"; +"room_do_not_have_permission_to_post" = "Ur tesεiḍ ara tasiregt ad d-tsuffɣeḍ deg texxamt-a"; +"room_message_reply_to_placeholder" = "Azen tiririt (ur yettwawgelhen ara)…"; +"room_message_placeholder" = "Azen izen (ur yettwawgelhen ara)…"; +"room_new_messages_notification" = "%d yiznan imaynuten"; +"room_new_message_notification" = "%d Izen amaynut"; +"room_member_power_level_short_custom" = "Sagen"; +"room_member_power_level_short_moderator" = "Atrar"; +"room_member_power_level_short_admin" = "Anedbal"; +"room_participants_security_information_room_encrypted" = "Iznan deg texxamt-a ttwawgelhen seg yixef ɣer yixef.\n\nIznan-inek·inem ttwasɣellsen s yizekṛunen, rnu ala kečč d uɣerwaḍ i yesɛan tisura tasufin i tweldaywt-nsen."; +"room_participants_security_information_room_not_encrypted" = "Iznan deg texxamt-a ur ttwawgelhen ara seg yixef ɣer yixef."; +"room_participants_security_loading" = "Yessalay-d…"; +"room_participants_action_security_status_loading" = "Yessalay-d…"; +"room_participants_action_security_status_warning" = "Asmigel"; +"room_participants_action_security_status_verify" = "Senqed"; +"room_participants_action_security_status_verified" = "Yettwasenqed"; +"room_participants_action_mention" = "Abder"; +"room_participants_action_set_admin" = "Eg anebdal"; +"room_participants_action_set_moderator" = "Eg amaẓrag"; +"room_participants_action_set_default_power_level" = "Wennez aseqdac amagnu"; +"room_participants_action_unban" = "Asefsex n tigtin"; +"room_participants_action_remove" = "Kkes si texxamt-a"; +"room_participants_action_leave" = "Ffeɣ si texxamt-a"; +"room_participants_action_invite" = "Nced"; +"room_participants_action_section_security" = "Taɣellist"; +"room_participants_action_section_other" = "Tixtiṛiyin"; +"room_participants_action_section_devices" = "Tiɣimiyin"; +"room_participants_ago" = "aya"; +"room_participants_now" = "tura"; +"room_participants_idle" = "Arurmid"; +"room_participants_unknown" = "D arussin"; +"room_participants_offline" = "Beṛṛa n tuqqna"; +"room_participants_online" = "Srid"; +"room_participants_invited_section" = "YETTWANCED"; +"room_participants_invite_malformed_id" = "Asulay ur yemsil ara akken iwata. Ilaq ad yili d tansa n yimayl neɣ d asulay n Matrix am '@localpart:domain'"; +"room_participants_filter_room_members" = "Sizdeg iɛeggalen n texxamt"; +"room_participants_invite_prompt_title" = "Asentem"; +"room_participants_remove_prompt_title" = "Asentem"; +"room_participants_leave_prompt_msg" = "S tidet tebɣiḍ ad teǧǧeḍ taxxamt?"; +"room_participants_leave_prompt_title_for_dm" = "Ffeɣ"; +"room_participants_leave_prompt_title" = "Ffeɣ seg texxamt"; + +// Chat participants +"room_participants_title" = "Imttekkiyen"; +"contacts_address_book_matrix_users_toggle" = "Iseqdacen kan n Matrix"; +"directory_searching_title" = "Anadi n ukaram…"; + +// Directory +"directory_cell_title" = "Nadi akaram"; +"search_in_progress" = "Anadi…"; +"search_no_result" = "Ulac igmad"; +"search_default_placeholder" = "Nadi"; +"search_files" = "Ifuyla"; +"search_people" = "Imdanen"; +"search_messages" = "Iznan"; + +// Search +"search_rooms" = "Timɣiwent"; + +// Groups tab +"group_invite_section" = "INEBGAWEN"; +"rooms_empty_view_title" = "Timɣiwent"; + +// Rooms tab +"room_directory_no_public_room" = "Ulac tixxamin tizuyaz yellan"; +"people_empty_view_title" = "Imdanen"; +"people_no_conversation" = "Ulac idiwenniyen"; + +// People tab +"people_invites_section" = "INEBGAWEN"; +"room_recents_join_room_prompt" = "Aru asulay n texxamt neɣ isem yettunefken i texxamt"; +"room_recents_join_room_title" = "Rnu ɣer texxamt"; +"room_recents_join_room" = "Rnu ɣer texxamt"; +"room_recents_create_empty_room" = "Rnu taxxamt"; +"room_recents_start_chat_with" = "Bdu adiwenni"; +"room_recents_invites_section" = "INEBGAWEN"; +"room_recents_low_priority_section" = "TAZWART TADDAYT"; +"room_recents_no_conversation" = "Ulac tixxamin"; +"room_recents_conversations_section" = "TIXXAMIN"; +"room_recents_people_section" = "IMDANEN"; +"room_recents_directory_section_network" = "Aẓeṭṭa"; +"room_creation_make_private" = "Err-it d uslig"; +"room_creation_privacy" = "Tabaḍnit"; +"room_creation_appearance_name" = "Isem"; +"room_creation_appearance" = "Timeẓri"; +"room_creation_account" = "Amiḍan"; + +// Chat creation +"room_creation_title" = "Adiwenni amaynut"; + +// Errors +"error_user_already_logged_in" = "Yettban-d am wakken tettaɛraḍeḍ ad teqqneḍ ɣer uqeddac agejdan-nniḍen. Tebɣiḍ ad teffɣeḍ?"; +"auth_softlogout_clear_data_sign_out" = "Ffeɣ seg tuqqna"; +"auth_softlogout_clear_data_sign_out_title" = "Tebɣiḍ s tidet?"; +"auth_softlogout_clear_data_button" = "Sfeḍ meṛṛa isefka"; +"auth_softlogout_clear_data" = "Sfeḍ isefka udmawanen"; +"auth_softlogout_recover_encryption_keys" = "Kcem i wakken ad d-terreḍ tisura n uwgelhen i d-yettwakelsen ɣef yibenk-a kan. Tesriḍ-tent i tɣuri n meṛṛa iznan-inek·inem iɣelsanen ɣef yal ibenk."; +"auth_softlogout_sign_in" = "Kcem"; +"auth_softlogout_signed_out" = "Aql-ak·akem teffɣeḍ"; +"auth_autodiscover_invalid_response" = "Tiririt n usnirem n uqeddac agejdan d tarameɣtut"; +"auth_accept_policies" = "Ttxil-k·m senqed syen qbel tisertiyin n uqeddac-a agejdan:"; +"auth_reset_password_success_message" = "Awal-ik·im uffir yettuwennez.\n\nAql-ak·akem teffɣeḍ seg meṛṛa tiɣimiyin syen ur d-teṭṭifeḍ ara akk ilɣa n Push. I wakken ad talseḍ armad n yilɣa, kcem tikkelt-nniḍen ɣer yal ibenk."; +"auth_reset_password_error_unauthorized" = "Asenqed n tansa n yimayl ur yeddi ara: wali ma yella tsateḍ ɣef useɣwen yellan deg yimayl"; +"auth_reset_password_next_step_button" = "Sneqdeɣ tansa-inu n yimayl"; +"auth_reset_password_missing_password" = "Awal uffir amaynut ilaq ad yettusekcem."; +"auth_reset_password_missing_email" = "Tansa n yimayl i icudden ɣer umiḍan-ik·im ilaq ad tettwasekcem."; +"auth_reset_password_message" = "I uwennez n wawal-ik·im uffir, sekcem tansa n yimayl i icudden ɣer umiḍan-ik·im:"; +"auth_msisdn_validation_error" = "Asenqed n wuṭṭun n tilifun ur yeddi ara."; +"auth_msisdn_validation_title" = "Asenqed yettṛaǧu"; +"auth_email_validation_message" = "Ttxil-k·m seqdec imayl-ik·im i wakken ad tkemmleḍ ajerred"; +"auth_use_server_options" = "Seqdec tixtiṛiyin n uqeddac udmawan (leqqayen)"; +"auth_forgot_password" = "Tettuḍ awal uffir?"; +"auth_username_in_use" = "Isem n useqdac yettuseqdac"; +"auth_password_dont_match" = "Awalen uffiren ur mṣadan ara"; +"auth_email_is_required" = "Ulac aqeddac n timagit yettusiwlen, ɣef waya ur tettizmireḍ ara ad ternuḍ tansa n yimayl i wakken ad twennzeḍ awal-ik·im uffir ɣer sdat."; +"auth_phone_in_use" = "Uṭṭun-agi n tilifun yettuseqddac yakan"; +"auth_email_in_use" = "Tansa-agi n yimayl tettuseqdac yakan"; +"auth_missing_email_or_phone" = "Txuṣṣ tansa n yimayl neɣ uṭṭun n tiliɣri"; +"auth_missing_phone" = "Ixuṣṣ wuṭṭun n tiliɣri"; +"auth_missing_email" = "Txuṣṣ tansa n yimayl"; +"auth_add_email_phone_message_2" = "Sbadu imayl i tririt n umiḍan. Seqdec ɣer sadt imayl neɣ uṭṭun n tiliɣri i wakken ad yishil ad ak·akem-id-afen yimdanen i ak·akem-yessnen."; +"auth_add_phone_message_2" = "Sbadu uṭṭun n tiliɣri, syen ɣer sdat ad yishil ad t-afen yimdanen i ak·akem-yessnen."; +"auth_add_email_message_2" = "Sbadu imayl i tririt n umiḍan, syen ɣer sdat ad yishil ad tt-afen yimdanen i ak·akem-yessnen."; +"auth_missing_password" = "Ixuṣ wawal uffir"; +"auth_invalid_password" = "Awal uffir wezzil aṭas (ma drus 6)"; +"auth_invalid_user_name" = "Ismawen n yiseqdacen ilaq ad sɛun kan isekkilen, imḍanen, agazen, ijerriden n tuqqna d yidduren n uderrer"; +"auth_invalid_login_param" = "Isem n uqeddac d/neɣ awal uffir d arameɣtu"; +"auth_repeat_new_password_placeholder" = "Sentem awal-ik·im uffir amaynut"; +"auth_repeat_password_placeholder" = "Ales i wawal uffir"; +"auth_phone_placeholder" = "Uṭṭun n tiliɣri"; +"auth_optional_phone_placeholder" = "Uṭṭun n tiliɣri (d afrayan)"; +"auth_email_placeholder" = "Tansa n l'email"; +"auth_optional_email_placeholder" = "Tansa n yimayl (d tafrayan)"; +"auth_user_name_placeholder" = "Isem n useqdac"; +"auth_new_password_placeholder" = "Awal uffir amaynut"; +"auth_password_placeholder" = "Mot de passe"; +"auth_user_id_placeholder" = "Imayl neɣ isem n useqdac"; +"auth_return_to_login" = "Uɣal ɣer ugdil n tuqqna"; +"auth_send_reset_email" = "Azen imayl n uwennez"; +"room_info_list_section_other" = "Wayeḍ"; + +// MARK: - Room Info + +"room_info_list_one_member" = "1 uɛeggal"; +"create_room_section_header_address" = "Tansa n texxamt"; +"create_room_placeholder_topic" = "Asentel"; +"create_room_placeholder_name" = "Isem"; +"create_room_section_header_name" = "Isem n texxamt"; + +// MARK: - Create Room + +"create_room_title" = "Taxxamt tamaynut"; + +// MARK: - Searchable Directory View Controller + +"searchable_directory_create_new_room" = "Rnu taxxamt tamaynut"; +"biometrics_cant_unlocked_alert_message_retry" = "Ɛreḍ tikkelt-nniḍen"; +"pin_protection_kick_user_alert_message" = "Aṭas n tuccḍiwin, telliḍ teffɣeḍ seg tuqqna"; +"pin_protection_settings_enable_pin" = "Rmed PIN"; +"pin_protection_settings_section_footer" = "I uwennez n PIN-inek·inem, tesriḍ ad talseḍ anekcum syen rnu yiwen."; +"pin_protection_mismatch_error_message" = "Ɛreḍ tikelt nniḍen"; +"pin_protection_reset_alert_action_reset" = "Wennez"; +"pin_protection_enter_pin" = "Sekcem PIN inek·inem"; +"pin_protection_confirm_pin_to_disable" = "Sentem PIN i wakken ad tsenseḍ PIN"; +"major_update_done_action" = "Awi-t"; +"major_update_learn_more_action" = "Issin ugar"; + +// MARK: - Cross-signing + +// Banner + +"cross_signing_setup_banner_title" = "Swel awgelhen"; +"secrets_reset_reset_action" = "Wennez"; +"secrets_setup_recovery_passphrase_confirm_passphrase_placeholder" = "Sentem tafyirt tuffirt"; +"secrets_setup_recovery_passphrase_confirm_passphrase_title" = "Sentem"; +"secrets_setup_recovery_passphrase_confirm_information" = "Sekcem tafyirt-inek·inem n tɣellist tikkelt-nniḍen i usentem-ines."; +"secrets_setup_recovery_passphrase_validate_action" = "Immed"; +"secrets_setup_recovery_passphrase_information" = "Sekcem tafyirt n tɣellist ara tissineḍ kan keččini·kemmini, tettuseqdac i wakken ad teḍmen tuffriwin deg uqeddac-ik·im."; + +// Recovery passphrase + +"secrets_setup_recovery_passphrase_title" = "Sbadu tafyirt taɣelsant"; +"secrets_setup_recovery_key_storage_alert_title" = "Eǧǧ-it d aɣelasn"; +"secrets_setup_recovery_key_done_action" = "Immed"; +"secrets_setup_recovery_key_export_action" = "Sekles"; +"secrets_setup_recovery_key_loading" = "Yessalay-d…"; + +// MARK: - Secrets set up + +// Recovery Key + +"secrets_setup_recovery_key_title" = "Sekles tasarut-ik·im n tɣellist"; +"secrets_recovery_with_key_recovery_key_placeholder" = "Sekcem tasarut tririt"; +"secrets_recovery_with_key_recovery_key_title" = "Anekcum"; + +// Recover with key + +"secrets_recovery_with_key_title" = "Tasarut tririt"; +"secrets_recovery_with_passphrase_lost_passphrase_action_part2" = "seqdec tasarut-ik·im n tririt"; +"secrets_recovery_with_passphrase_passphrase_title" = "Anekcum"; + +// Recover with passphrase + +"secrets_recovery_with_passphrase_title" = "Tefyirt tuffirt n tririt"; +"user_verification_session_details_verify_action_other_user" = "Yettwasenqed s ufus"; +"user_verification_session_details_verify_action_current_user_manually" = "Senqed s ufus s ttawil n uḍris"; +"user_verification_session_details_additional_information_untrusted_current_user" = "Ma yella ur teqqineḍ ara ɣer tɣimit-a, amiḍan-ik·im yezmer ad yettwaker."; +"user_verification_session_details_additional_information_untrusted_other_user" = "Imi mazal useqdac-a ur yettkil ara ɣef tɣimit-a, iznan yettwaznen seg-s d wid i d-yettwaznen qer-s ad sɛun tacreḍt n lemḥadra. Neɣ ma ulac, tzemreḍ ad tent-tesneqdeḍ s ufus."; +"user_verification_session_details_information_trusted_current_user" = "Tiɣimit-a tettwattkal i yiznan iɣelsanen acku tesneqdeḍ-tt:"; +"user_verification_session_details_untrusted_title" = "Ur yettwattkal ara"; + +// Session details + +"user_verification_session_details_trusted_title" = "Yettwattkal"; +"user_verification_sessions_list_session_untrusted" = "Ur yettwattkal ara"; +"user_verification_sessions_list_session_trusted" = "Yettwattkal"; +"user_verification_sessions_list_table_title" = "Tiɣimiyin"; +"user_verification_sessions_list_user_trust_level_unknown_title" = "D arussin"; +"user_verification_sessions_list_user_trust_level_warning_title" = "Asmigel"; + +// Sessions list + +"user_verification_sessions_list_user_trust_level_trusted_title" = "Yettwattkal"; +"user_verification_start_additional_information" = "I wakken ad tḍemneḍ taɣellistik·im, eg ayagi s timmad-ik·im neɣ seqdec abrid n teywalt iɣef ara tettekleḍ."; + +// MARK: - User verification + +// Start + +"user_verification_start_verify_action" = "Bdu asenqed"; + +// Scanned +"key_verification_scan_confirmation_scanned_title" = "Qrib ad ifakk!"; + +// MARK: Scan confirmation + +// Scanning +"key_verification_scan_confirmation_scanning_title" = "Qrib ad tawḍeḍ! Deg uṛaǧu n usentem…"; +"key_verification_verify_qr_code_start_emoji_action" = "Senqed s yimujit"; +"key_verification_verify_qr_code_scan_code_action" = "Siggez tangalt-a"; +"key_verification_verify_qr_code_emoji_information" = "Senqed s userwes s yimujiten asufen."; + +// MARK: QR code + +"key_verification_verify_qr_code_title" = "Senqed s usiggez"; +"key_verification_tile_conclusion_done_title" = "Yettwasenqed"; +"key_verification_tile_request_incoming_approval_decline" = "Agwi"; +"key_verification_tile_request_incoming_approval_accept" = "Qbel"; +"key_verification_tile_request_status_accepted" = "Tqebleḍ"; +"key_verification_tile_request_status_cancelled_by_me" = "Tesfesxeḍ"; +"key_verification_tile_request_status_expired" = "Yemmut"; +"key_verification_tile_request_status_waiting" = "Yettaru…"; + +// MARK: - Key Verification + +"key_verification_bootstrap_not_setup_title" = "Tuccḍa"; + +// MARK: Reaction history +"reaction_history_title" = "Tisedmirin"; +"emoji_picker_flags_category" = "Anayen"; +"emoji_picker_symbols_category" = "Izamulen"; +"emoji_picker_objects_category" = "Tiɣawsiwin"; +"emoji_picker_places_category" = "Inig & Imukan"; +"emoji_picker_activity_category" = "Irmad"; +"emoji_picker_foods_category" = "Učči d tissit"; +"emoji_picker_nature_category" = "Iɣersiwen & ugama"; +"emoji_picker_people_category" = "Acmumeḥ & Imdanen"; + +// MARK: Emoji picker +"emoji_picker_title" = "Tisedmirin"; +"device_verification_emoji_pin" = "Amessak"; +"device_verification_emoji_folder" = "Akaram"; +"device_verification_emoji_headphones" = "Wennez"; +"device_verification_emoji_anchor" = "Tamdeyt"; +"device_verification_emoji_bell" = "Anayna"; +"device_verification_emoji_trumpet" = "Lɣiḍa"; +"device_verification_emoji_guitar" = "Tagitaṛt"; +"device_verification_emoji_ball" = "Balles"; +"device_verification_emoji_trophy" = "Arraz"; +"device_verification_emoji_rocket" = "Timeẓdit"; +"device_verification_emoji_aeroplane" = "Asafag"; +"device_verification_emoji_bicycle" = "Azlalam"; +"device_verification_emoji_train" = "Tamacint"; +"device_verification_emoji_flag" = "Anay"; +"device_verification_emoji_telephone" = "Tiliγri"; +"device_verification_emoji_hammer" = "Tafḍist"; +"device_verification_emoji_key" = "Tasarutt"; +"device_verification_emoji_lock" = "Sekkeṛ"; +"device_verification_emoji_scissors" = "Timqestin"; +"device_verification_emoji_paperclip" = "Tamessakt n lkaɣeḍ"; +"device_verification_emoji_pencil" = "Akeryun"; +"device_verification_emoji_book" = "Adlis"; +"device_verification_emoji_gift" = "Asefk"; +"device_verification_emoji_clock" = "Tamrint"; +"device_verification_emoji_hourglass" = "Amasrag"; +"device_verification_emoji_umbrella" = "Tasiwant"; +"device_verification_emoji_thumbs up" = "Adebbuz d asawen"; +"device_verification_emoji_santa" = "Santa"; +"device_verification_emoji_spanner" = "Tasarut"; +"device_verification_emoji_glasses" = "Tisekkadin"; +"device_verification_emoji_hat" = "Acapun"; +"device_verification_emoji_robot" = "Aṛubut"; +"device_verification_emoji_smiley" = "Acmumeḥ"; +"device_verification_emoji_heart" = "Ul"; +"device_verification_emoji_cake" = "Angul"; +"device_verification_emoji_pizza" = "Tapizzat"; +"device_verification_emoji_corn" = "Akbal"; +"device_verification_emoji_strawberry" = "Tazwelt"; +"device_verification_emoji_apple" = "Tatteffaḥt"; +"device_verification_emoji_banana" = "Tabanant"; +"device_verification_emoji_fire" = "Times"; +"device_verification_emoji_cloud" = "Agu"; +"device_verification_emoji_moon" = "Ayyur"; +"device_verification_emoji_globe" = "Amaḍal"; +"device_verification_emoji_mushroom" = "Agersal"; +"device_verification_emoji_cactus" = "Akermus"; +"device_verification_emoji_tree" = "Aseklu"; +"device_verification_emoji_flower" = "Ajeǧǧig"; +"device_verification_emoji_butterfly" = "Aferteṭṭu"; +"device_verification_emoji_octopus" = "Azayz"; +"device_verification_emoji_fish" = "Lḥut"; +"device_verification_emoji_turtle" = "Afekrun"; +"device_verification_emoji_penguin" = "Awarfus"; +"device_verification_emoji_rooster" = "Ayaziḍ"; +"device_verification_emoji_panda" = "Apunda"; +"device_verification_emoji_rabbit" = "Awtul"; +"device_verification_emoji_elephant" = "Ilu"; +"device_verification_emoji_pig" = "Ilef"; +"device_verification_emoji_unicorn" = "Azara"; +"device_verification_emoji_horse" = "Aεewdiw"; +"device_verification_emoji_lion" = "Izem"; +"device_verification_emoji_cat" = "Amcic"; + +// MARK: Emoji +"device_verification_emoji_dog" = "Aqjun"; + +// User + +"key_verification_verified_user_information" = "Iznan akked useqdac-a ttwawgelhen seg yixef ɣer yixef yerna ur yezmir wis tlata ad ten-iɣer."; +"device_verification_verified_got_it_button" = "Awi-t"; + +// MARK: Verified + +// Device + +"device_verification_verified_title" = "Yettwasenqed!"; + +// Device + +"device_verification_verify_wait_partner" = "Aṛaǧu n usentem sɣur bab-is…"; +"key_verification_manually_verify_device_validate_action" = "Senqed"; +"key_verification_manually_verify_device_additional_information" = "Ma yella ur mṣadan ara, taɣellist n teywalt-ik·im tezmer ad tettwaker."; +"key_verification_manually_verify_device_key_title" = "Tasarut n tɣimit"; +"key_verification_manually_verify_device_id_title" = "Asulay n tqimit"; +"key_verification_manually_verify_device_name_title" = "Isem n tɣimit"; +"key_verification_manually_verify_device_instruction" = "Sentem s userwes gar wayen i d-iteddun d yiɣewwaren n useqdac deg tɣimit-ik·im tayeḍ:"; + +// MARK: Manually Verify Device + +"key_verification_manually_verify_device_title" = "Senqed s ufus s ttawil n uḍris"; +"key_verification_verify_sas_additional_information" = "I tɣellist meqqren, seqdec ttawilat-nniḍen yettwattkalen n teywalt neɣ eg aya s timmad-ik·im."; +"key_verification_verify_sas_validate_action" = "Msaḍan"; +"key_verification_verify_sas_cancel_action" = "Ur msaḍan ara"; + +// MARK: Verify + +"key_verification_verify_sas_title_emoji" = "Serwes imujiten"; +"device_verification_self_verify_wait_recover_secrets_without_passphrase" = "Seqdec tasarut n uɛeddi"; +"device_verification_self_verify_wait_new_sign_in_title" = "Senqed anekcam-a"; +"key_verification_self_verify_unverified_sessions_alert_validate_action" = "Senqed"; +"key_verification_self_verify_current_session_alert_validate_action" = "Senqed"; + +// Current session + +"key_verification_self_verify_current_session_alert_title" = "Asenqed n tɣimit"; +"device_verification_self_verify_start_waiting" = "Yettaru…"; +"device_verification_self_verify_start_information" = "Seqdec tiɣimit-a i usenqed tiɣimit-ik·im tamaynut, ayen ara tt-yeǧǧen ad tekcem ɣer yiznan yettwawgelhen."; +"device_verification_self_verify_start_verify_action" = "Bdu asenqed"; +"device_verification_self_verify_alert_validate_action" = "Senqed"; + +// MARK: Self verification start + +// New login +"device_verification_self_verify_alert_title" = "Anekcam amaynut. D kečč/kemm?"; +"device_verification_start_verify_button" = "Bdu asenqed"; +"device_verification_incoming_description_2" = "Aselken n tɣimit-a ad yettucreḍ fell-as tettwattkal, yerna ad tettucreḍ ula d tiɣimit-ik·im tettwattkal i bab-is."; +"device_verification_incoming_description_1" = "Senqed tiɣimit-a i wakken ad tcerḍeḍ fell-as tettwaḍman. Attkal ɣef tɣimiyin n yimendiden yettakk-ak·am-d lehna n uqerru mi ara tesseqdaceḍ iznan yettwawgelhen seg yixef ɣer yixef."; + +// Mark: Incoming +"device_verification_incoming_title" = "Tuttra n usenqed i d-ikecmen"; +"device_verification_cancelled" = "Wayeḍ issefsex asenqed."; +"device_verification_security_advice_emoji" = "Serwes imujit ufrin, s uḍman ad d-banen deg yiwen usemizwer."; +"key_verification_this_session_title" = "Asenqed n tɣimit"; + +// MARK: - Device Verification +"key_verification_other_session_title" = "Asenqed n tɣimit"; +"sign_out_key_backup_in_progress_alert_discard_key_backup_action" = "Ur bɣiɣ ara izan-inu iwgelhanen"; +"sign_out_key_backup_in_progress_alert_title" = "Akles n tsura yetteddu. Ma teffɣeḍ tura, ad tesruḥeḍ anekcum ɣer yiznan-ik•im yettwawgelhen."; +"sign_out_non_existing_key_backup_sign_out_confirmation_alert_backup_action" = "Sekles"; +"sign_out_non_existing_key_backup_sign_out_confirmation_alert_sign_out_action" = "Ffeɣ seg tuqqna"; +"sign_out_non_existing_key_backup_alert_discard_key_backup_action" = "Ur bɣiɣ ara izan-inu iwgelhanen"; +"sign_out_existing_key_backup_alert_sign_out_action" = "Ffeɣ seg tuqqna"; + +// MARK: Sign out warning + +"sign_out_existing_key_backup_alert_title" = "D tidet tebɣiḍ ad teffɣeḍ?"; +"key_backup_recover_done_action" = "Immed"; +"key_backup_recover_from_recovery_key_lost_recovery_key_action" = "Tesruḥeḍ tasarut-ik·im n tririt? Tzemreḍ ad tesbaduḍ yiwet seg yiɣewwaren."; +"key_backup_recover_from_recovery_key_recover_action" = "Serreḥ i umazray"; +"key_backup_recover_from_recovery_key_recovery_key_placeholder" = "Sekcem tasarut tririt"; +"key_backup_recover_from_recovery_key_recovery_key_title" = "Anekcum"; +"key_backup_recover_from_passphrase_lost_passphrase_action_part2" = "seqdec tasarut-ik·im n tririt"; +"key_backup_recover_from_passphrase_recover_action" = "Serreḥ i umazray"; +"key_backup_recover_from_passphrase_passphrase_title" = "Anekcum"; +"key_backup_recover_invalid_passphrase" = "Aḥraz ur yezmir ara ad yekkes awgelhen s tefyirt-a tuffirt: ttxil-k·m selken ma yella d tafyirt tuffirt tameɣtut i teskecmeḍ."; +"key_backup_setup_success_from_recovery_key_recovery_key_title" = "Tasarut tririt"; +"key_backup_setup_success_from_passphrase_done_action" = "Immed"; +"key_backup_setup_success_from_passphrase_save_recovery_key_action" = "Sekles tasarut n tririt"; + +// Success + +"key_backup_setup_success_title" = "Tammug akken iwata!"; +"key_backup_setup_passphrase_setup_recovery_key_action" = "(Leqqayen) Sbadu s tsarut n tririt"; +"key_backup_setup_passphrase_setup_recovery_key_info" = "Neɣ; dmen aḥrazen-inek·inem s tefyirt tuffirt n uɛeddi, yettwaskelsen deg wadeg aɣelsan."; +"auth_login_single_sign_on" = "Qqen s unekcum asuf"; +"auth_skip" = "Zgel"; +"auth_submit" = "Azen"; +"auth_register" = "Jerred"; + +// Authentication +"auth_login" = "Qqen"; +"less" = "Drus"; +"more" = "Ugar"; +"joined" = "Ikcemed deg"; +"skip" = "Zgel"; +"close" = "Mdel"; +"sending" = "Tuzzna"; +"collapse" = "fneẓ"; +"rename" = "Beddel isem"; +"later" = "Ticki"; +"video" = "Ividyuten"; +"voice" = "Taɣect"; +"camera" = "Takamiṛatt"; +"preview" = "Taskant"; +"accept" = "Qbel"; +"decline" = "Agwi"; +"join" = "Rnu"; +"save" = "Sekles"; +"cancel" = "Sefsex"; +"off" = "Sens"; +"on" = "Rmed"; +"retry" = "Ɛreḍ tikkelt-nniḍen"; +"invite" = "Nced"; +"remove" = "Kkes"; +"leave" = "Ffeɣ"; +"start" = "Bdu"; +"create" = "Rnu"; +"continue" = "Kemmel"; +"back" = "Uɣal ɣer deffir"; +"next" = "Ayen i d-iteddun"; + +// Actions +"view" = "Wali"; +"warning" = "Γur-k·m"; +"title_groups" = "Timɣiwnin"; +"title_rooms" = "Tixxamin"; +"title_people" = "Imdanen"; +"title_favourites" = "Ismenyifen"; + +// Titles +"title_home" = "Agejdan"; + +// MARK: - Home + +"home_empty_view_title" = "Ansuf ɣer %@,\n%@"; +"create_room_enable_encryption" = "Rmed awgelhen"; +"create_room_section_header_encryption" = "Awgelhen n texxamt"; +// String for App Store +"store_short_description" = "Ḥrez adiwenni ur nelli d aslammas/VoIP"; + +// MARK: - Favourites + +"favourites_empty_view_title" = "Tixxamin d yimdanen yettusmenyafen"; +"room_info_list_several_members" = "%@ imttekkiyen"; +"create_room_placeholder_address" = "#testroom:matrix.org"; +"create_room_show_in_directory" = "Sken taxxamt deg ukaram"; +"create_room_section_footer_type" = "Imdanen ara yernun ɣer texxamt tusligt yettili-d kan s usnubget."; +"create_room_type_public" = "Taxxamt tazayezt"; +"create_room_type_private" = "Taxxamt tusligt"; +"create_room_section_header_type" = "Anaw n texxamt"; +"create_room_section_footer_encryption" = "Awgelhen ur yezmir ara ad yettwakkes mbeɛd."; +"create_room_section_header_topic" = "Asentel n texxamt (afrayan)"; +"searchable_directory_search_placeholder" = "Isem neɣ asulay"; +"searchable_directory_x_network" = "%@ Azeṭṭa"; +"biometrics_cant_unlocked_alert_message_login" = "Ales tuqqna"; +"biometrics_cant_unlocked_alert_message_x" = "I tukksa n usekkeṛ, seqdec %@ neɣ ales tuqqna syen rmed %@ i tikkemt-nniḍen"; +"biometrics_cant_unlocked_alert_title" = "Ulamek yekkes usekkeṛ i usnas"; +"biometrics_usage_reason" = "Asesteb yesra anekcum ɣer usnas-inek·inem"; +"biometrics_desetup_disable_button_title_x" = "Sexsi %@"; +"biometrics_desetup_title_x" = "Sexsi %@"; +"biometrics_setup_subtitle" = "Rbeḥ-d akud"; +"biometrics_setup_enable_button_title_x" = "Rmed %@"; +"biometrics_setup_title_x" = "Rmed %@"; +"biometrics_settings_enable_x" = "Rmed %@"; +"biometrics_mode_face_id" = "Asulay n wudem"; + +// MARK: - Biometrics Protection + +"biometrics_mode_touch_id" = "Asulay n tnalit"; +"pin_protection_settings_enabled_forced" = "Yermed PIN"; +"pin_protection_settings_section_header_x" = "PIN & %@"; +"pin_protection_mismatch_too_many_times_error_message" = "Ma yella ur tezmireḍ ara ad tecfuḍ ɣef PIN inek·inem, sit ɣef tqeffalt n PIN yettwattun."; +"pin_protection_mismatch_error_title" = "PINs ur mṣadan ara"; +"pin_protection_reset_alert_message" = "I uwennez n PIN-inek·inem, tesriḍ ad talseḍ anekcum syen rnu yiwen"; +"pin_protection_reset_alert_title" = "Wennez PIN"; +"pin_protection_forgot_pin" = "Ttu PIN"; +"pin_protection_confirm_pin" = "Sentem PIN inek·inem"; +"pin_protection_choose_pin" = "Rnu PIN i tɣellist"; +"pin_protection_choose_pin_welcome_after_register" = "Ansuf."; + +// MARK: - PIN Protection + +"pin_protection_choose_pin_welcome_after_login" = "Ansuf i tikkelt-nniḍen."; + +// MARK: - Major update + +"major_update_title" = "Riot tura d Element"; +"secrets_reset_authentication_message" = "Sekcem awal uffir n umiḍan-ik·im i usentem"; +"secrets_reset_warning_title" = "Ma yella twennzeḍ kullec"; + +// MARK: - Secrets reset + +"secrets_reset_title" = "Wennez kullec"; +"secrets_setup_recovery_passphrase_summary_title" = "Sekles tafyirt-ik·im n tɣellist"; +"secrets_setup_recovery_passphrase_additional_information" = "Ur sseqdac ara awal-ik·im uffir n umiḍan."; +"secrets_recovery_with_key_recover_action" = "Seqdec asarut"; +"secrets_recovery_with_passphrase_invalid_passphrase_message" = "Ttxil-k·m sefqed ma teskecmeḍ tafyirt tuffirt n uɛeddi tameɣtut."; +"secrets_recovery_with_passphrase_lost_passphrase_action_part3" = "."; +"secrets_recovery_with_passphrase_lost_passphrase_action_part1" = "Ur tessineḍ ara tafyirt-ik·im tuffirt n tririt? Tzemreḍ "; +"secrets_recovery_with_passphrase_recover_action" = "Seqdec tafyirt tuffirt"; +"secrets_recovery_with_passphrase_passphrase_placeholder" = "Sekcem tafyirt tuffirt n tririt"; +"secrets_recovery_reset_action_part_2" = "Wennez kullec"; +"user_verification_session_details_verify_action_current_user" = "Senqed amyigew"; +"user_verification_session_details_information_untrusted_other_user" = " kcem s useqdec n tɣimit tamaynut:"; +"user_verification_session_details_information_trusted_other_user_part2" = " senqed-it:"; +"user_verification_session_details_information_trusted_other_user_part1" = "Tiɣimit-a tettwattkal i yiznan iɣelsanen acku "; +"key_verification_verify_qr_code_scan_other_code_success_title" = "Tangalt yettwaqbalen!"; +"key_verification_verify_qr_code_cannot_scan_action" = "Ur yezmir ara ad yettusmiḍen?"; + +// Incoming key verification request + +"key_verification_incoming_request_incoming_alert_message" = "%@ yebɣa ad issenqed"; +"key_verification_tile_request_status_cancelled" = "%@ yettwasefsex"; +"key_verification_tile_request_outgoing_title" = "Asenqed yettwazen"; + +// Tiles + +"key_verification_tile_request_incoming_title" = "Asuter n usenqed"; +"error_not_supported_on_mobile" = "Ur tezmireḍ ara ad tgeḍ aya seg uziraz %@."; + +// MARK: File upload +"file_upload_error_title" = "Asali n yifuyla"; +"device_verification_emoji_light bulb" = "Taftilt"; +"key_verification_verified_new_session_title" = "Tiɣimit tamaynut tettwasenqed!"; +"device_verification_self_verify_wait_recover_secrets_with_passphrase" = "Seqdec tafyirt tuffirt n tririt neɣ tasarut"; + +// MARK: Self verification wait + +"device_verification_self_verify_wait_title" = "Taɣellist temmed"; +"key_verification_self_verify_unverified_sessions_alert_message" = "Senqed akk tiɣimiyin-ik·im i wakken ad tḍemneḍ amiḍan-ik·m & yiznan iɣelsanen."; + +// Unverified sessions + +"key_verification_self_verify_unverified_sessions_alert_title" = "Senqed ansi i d-tkecmeḍ"; +"key_verification_self_verify_current_session_alert_message" = "Iseqdacen-nniḍen yezmer ur tettamnen ara."; +"device_verification_self_verify_alert_message" = "Senqed anekcam amaynut i ikecmen ɣer umiḍan-ik·im: %@"; +"device_verification_start_use_legacy_action" = "Seqdec aselken aqbur"; + +// MARK: Start +"device_verification_start_title" = "Senqed s userwes n uzrir ameẓẓyan n uḍris"; +"key_verification_user_title" = "Senqed-iten"; +"sign_out_non_existing_key_backup_sign_out_confirmation_alert_title" = "Tesruḥeḍ iznan-ik·im yettwawgelhen"; +"sign_out_non_existing_key_backup_alert_setup_secure_backup_action" = "Bdu aseqdec n uḥraz aɣelsan"; + +// Success + +"key_backup_recover_success_info" = "Aḥraz yettwarr-d!"; +"key_backup_recover_from_passphrase_lost_passphrase_action_part3" = "."; +"key_backup_recover_from_passphrase_lost_passphrase_action_part1" = "Ur tessineḍ ara tafyirt-ik·im tuffirt n tririt? Tzemreḍ "; +"key_backup_recover_from_passphrase_passphrase_placeholder" = "Sekcem tafyirt tuffirt"; +"key_backup_recover_invalid_recovery_key" = "Aḥraz ur yezmir ara ad yekkes awgelhen s tsarut-a: ttxil-k·m sefqed ma d tasarut n tririt tameɣtut i teskecmeḍ."; +"key_backup_recover_invalid_recovery_key_title" = "Tasarut n tririt temṣada"; +"key_backup_recover_invalid_passphrase_title" = "Tafyirt tuffirt n uεeddi d tarameɣtut"; + +// MARK: Key backup recover + +"key_backup_recover_title" = "Seɣles iznan"; +"key_backup_setup_success_from_recovery_key_made_copy_action" = "Giɣ tanɣalt"; +"key_backup_setup_success_from_recovery_key_make_copy_action" = "Eg tanɣalt"; + +// Passphrase + +"key_backup_setup_passphrase_title" = "Ḍmen aḥrazen-inek·inem s tefyirt tuffirt"; +"secure_key_backup_setup_existing_backup_error_delete_it" = "Kkes-it·itt"; +"secure_key_backup_setup_existing_backup_error_unlock_it" = "Serreḥ-as"; + +// Re-request confirmation dialog +"rerequest_keys_alert_title" = "Asuter yettwazen"; +"deactivate_account_password_alert_message" = "I wakken ad tkemmle, ttxil-k·m sekcem awal-ik·im uffir"; +"deactivate_account_forget_messages_information_part3" = ":aya ad yerr iseqdacen ara d-yernun ad walin taskant n yidiwenniyen ur nemmid ara)"; +"deactivate_account_forget_messages_information_part1" = "Ttxil-k·m ttu akk iznan i yuzneɣ mi akken senseɣ amiḍan-iw ("; +"deactivate_account_informations_part1" = "Aya ad yerr amiḍan-ik·im ad yuɣal ur yettwaseqdac ara i lebda. Ur tettizmireḍ ara ad tkecmeḍ, daɣen ulac win ara yizmiren ad yales asekles s usulay-a n useqdac. Ad yerr amiḍan-ik·im ad yettwakkes seg meṛṛa tixxamin ideg tettekkaḍ, rnu ad yekkes akk talqayt seg uqeddac-ik·im n timagit. "; +"service_terms_modal_message" = "I wakken ad tkemmleḍ tesriḍ ad tqebleḍ tiwtilin n umeẓlu-a (%@)."; + +// Service terms +"service_terms_modal_title" = "Tiwtilin n umeẓlu"; +"e2e_room_key_request_message" = "Tiɣimit-inek·inem ur tettwasenqed ara '%@', tessutur tisura n uwgelhen."; +"e2e_room_key_request_message_new_device" = "Terniḍ tiɣimit tamaynut '%@', i yessuturen tisura n uwgelhen."; +"room_widget_permission_information_title" = "Aseqdec-ines yezmer ad yebḍu isefka d %@:\n"; +"room_widget_permission_webview_information_title" = "Aseqdec-is yezmer ad yesbadu inagan n tuqqna yerna ad yebḍu isefka d %@:\n"; +"widget_integration_room_not_visible" = "Taxxamt %@ ur d-tettban ara."; +"widget_sticker_picker_no_stickerpacks_alert_add_now" = "Rnu kra tura?"; +"widget_sticker_picker_no_stickerpacks_alert" = "Ulac ɣer-k·m akka tura ikemmusen n yimyintaḍ yettwaremden."; +"widget_integrations_server_failed_to_connect" = "Tuqqna ɣer uqeddac n yimsidaf yecceḍ"; +"bug_crash_report_title" = "Aneqqis n uɣelluy"; + +// Bug report +"bug_report_title" = "Aneqqis n wabug"; +"call_no_stun_server_error_use_fallback_button" = "Ɛreḍ aseqdec n %@"; +"call_no_stun_server_error_message_2" = "Neɣ, tzemreḍ ad tɛerḍeḍ aseqdec n uqeddac azayez deg %@, maca ayagi ur yelhi ara, yezmer ad yebḍu tansa-inek·inem IP d uqeddac-a. Tzemreḍ ad tesferkeḍ daɣen ayagi deg yiɣewwaren"; +"call_no_stun_server_error_message_1" = "Ttxil-k·m nermes anedbal ma yella aqeddac-inek·inem agejdan %@ ad yeswel aqeddac TURN i wakken ad qeɛden isawalen."; +"call_jitsi_error" = "Timerna deg usarag s umsiwel ur teddi ara."; +"call_incoming_video_prompt" = "Asiwel s tvidyut i d-ikecmen seg %@"; + +// Call +"call_incoming_voice_prompt" = "Asiwel s taɣect i d-ikecmen seg %@"; +"room_does_not_exist" = "%@ ulac-it·itt"; +"large_badge_value_k_format" = "%.1fK"; +"public_room_section_title" = "Tixxamin tizuyaz (deg %@):"; +"event_formatter_jitsi_widget_added_by_you" = "Terniḍ asarag n VoIP"; +"event_formatter_widget_removed_by_you" = "Tekkseḍ awiǧit: %@"; + +// Events formatter with you +"event_formatter_widget_added_by_you" = "Terniḍ aɛiǧit: %@"; +"event_formatter_rerequest_keys_part2" = " seg tɣimiyin-inek·inem-nniḍen."; +"event_formatter_rerequest_keys_part1_link" = "Ales asuter n tsura n uwgelhen"; +"event_formatter_jitsi_widget_removed" = "Asarag n VoIP yettwakkes sɣur %@"; +"event_formatter_jitsi_widget_added" = "Asarag n VoIP yettwarna sɣur %@"; +"event_formatter_widget_removed" = "%@ awiǧit yettwakkes sɣur %@"; +"event_formatter_widget_added" = "%@ awiǧit yettwarna sɣur %@"; + +// Events formatter +"event_formatter_member_updates" = "%tu yisnifal deg umulteɣ"; +"directory_server_placeholder" = "matrix.org"; +"directory_server_all_native_rooms" = "Tixxamin meṛṛa tidiganin n Matrix"; +"directory_server_all_rooms" = "Tixxamin meṛṛa ɣef uqeddac %@"; +"directory_server_picker_title" = "Fren akaram"; +"image_picker_action_library" = "Fren seg temkarḍa"; +"group_participants_leave_prompt_title" = "Ffeɣ seg ugraw"; + +// Group participants +"group_participants_add_participant" = "Rnu imttekki"; +"group_invitation_format" = "%@ inced-ik·ikem ad ternuḍ ɣer temɣiwent-a"; +"group_home_multi_rooms_format" = "%tu tixxamin"; +"group_home_multi_members_format" = "%tu iɛeggalen"; + +// Group Details +"group_details_title" = "Talqayt n temɣiwent"; +"room_details_copy_room_url" = "Nɣel URL n texxamt"; +"room_details_save_changes_prompt" = "Tebɣiḍ ad teskelseḍ isenfal?"; +"room_details_fail_to_enable_encryption" = "Armed n uwgelhen deg texxamt-a yecceḍ"; +"room_details_fail_to_update_room_direct" = "Aleqqem n wanay usrid yecceḍ deg texxamt-a"; +"room_details_fail_to_update_room_communities" = "Aleqqem n temɣiwnin yettwacudden yecceḍ"; +"room_details_fail_to_update_room_canonical_alias" = "Aleqqem n texxamt tagejdant yecceḍ"; +"room_details_fail_to_remove_room_aliases" = "Tukksa n tansiwin n texxamt tamaynut ur teddi ara"; +"room_details_fail_to_add_room_aliases" = "Timerna n tansiwin n texxamt tamaynut ur teddi ara"; +"room_details_fail_to_update_history_visibility" = "Aleqqem n ubani n uzray yecceḍ"; +"room_details_fail_to_update_room_directory_visibility" = "Aleqqem n ubani n ukaram yecceḍ"; +"room_details_fail_to_update_room_join_rule" = "Aleqqem alugen n uttekki yecceḍ"; +"room_details_fail_to_update_room_guest_access" = "Aleqqem n unekcum n yinebgi n texxamt yecceḍ"; +"room_details_fail_to_update_topic" = "Aleqqem n usentel yecceḍ"; +"room_details_fail_to_update_room_name" = "Aleqqem n yisem n texxamt yecceḍ"; +"room_details_fail_to_update_avatar" = "Aleqqem n tewleft n texxamt yecceḍ"; +"room_details_advanced_e2e_encryption_disabled_for_dm" = "Awgelhen ur yermid ara da."; +"room_details_advanced_e2e_encryption_disabled" = "Awgelhen ur yettwarmed ara deg texxamt-a."; +"room_details_advanced_e2e_encryption_enabled_for_dm" = "Awgelhen yermed da"; +"room_details_advanced_e2e_encryption_enabled" = "Awgelhen yettwarmed deg texxamt-a"; +"room_details_advanced_enable_e2e_encryption" = "Rmed awgelhen (ɣur-k·m: ur yezmir ara ad yettusens tikkelt-nniḍen!)"; +"room_details_advanced_room_id" = "Asulay n texxamt:"; +"room_details_flair_invalid_id_prompt_msg" = "%@ mačči d timagit tmeɣtut n temɣiwent"; +"room_details_flair_invalid_id_prompt_title" = "Amasal arameɣtu"; +"room_details_new_flair_placeholder" = "Rnu asulay n temɣiwent tamaynut (am. +foo%@)"; +"room_details_flair_section" = "Sken tasakezt i temɣiwnin"; +"room_details_addresses_disable_main_address_prompt_title" = "Ɣur-k·m tansa tagejdant"; +"room_details_addresses_invalid_address_prompt_msg" = "%@ mačči d amasal ameɣtu i yisem yettwamudden"; +"room_details_new_address_placeholder" = "Rnu tansa tamaynut (amedya: #foo%@)"; +"room_details_no_local_addresses_for_dm" = "Tagi ur tesɛi ara tansiwin tidiganin"; +"room_details_history_section_prompt_title" = "Ɣur-k·m tabaḍnit-ik·im"; +"room_details_access_section_directory_toggle_for_dm" = "Tabdart deg ukaram n texxamt"; +"room_details_access_section_no_address_warning" = "I useɣwen ɣer texxamt ilaq ad yesɛu tansa"; +"room_details_access_section_anyone_for_dm" = "Yal win·tin yessnen aseɣwen, ula d inebgawen"; +"room_details_access_section_anyone_apart_from_guest_for_dm" = "Yal win·tin yessnen aseɣwen n texxamt slid inebgawen"; +"room_details_access_section_for_dm" = "Anwa i izemren ad d-yernu ɣer da-a?"; +"room_details_mute_notifs" = "Susem ilɣa"; +"identity_server_settings_alert_error_invalid_identity_server" = "%@ mačči d aqeddac n timagit ameɣtu."; +"identity_server_settings_alert_disconnect" = "Ffeɣ seg tuqqna n uqeddac n timagit %@?"; +"identity_server_settings_alert_change" = "Ffeɣ seg tuqqna n uqeddac n timagit %1$@ syen qqen ɣer %2$@ deg wadeg-is?"; +"identity_server_settings_alert_no_terms" = "Aqeddac n timagit i tferneḍ ulac ɣer-s akk tiwtilin n yimeẓla. Ur ttkemmil ara ala ma yella tettekleḍ ɣef bab n umeẓlu."; +"identity_server_settings_place_holder" = "Sekcem aqeddac n timagit"; +"manage_session_trusted" = "Tḍemneḍ-tt"; +"manage_session_info" = "TALƔUT N TƔIMIT"; + +// Manage session +"manage_session_title" = "Sefrek taxxamt"; +"security_settings_user_password_description" = "Sentem timagit-ik·im s usekcem n wawal uffir n umiḍan-ik·im"; +"security_settings_complete_security_alert_title" = "Taɣellist temmed"; +"security_settings_advanced" = "TALQAYT"; +"security_settings_export_keys_manually" = "Sifeḍ tisura s ufus"; +"security_settings_cryptography" = "AWGELHEN"; +"security_settings_crosssigning_complete_security" = "Taɣellist temmed"; +"security_settings_crosssigning_reset" = "Wennez azmul anmidag"; +"security_settings_crosssigning_bootstrap" = "Azmul anmidag s tezwart"; +"security_settings_crosssigning_info_ok" = "Azmul anmidag yettwarmed."; +"security_settings_crosssigning" = "Rmed azmul anmidag"; +"security_settings_backup" = "AḤRAZ N YIZNAN"; +"security_settings_secure_backup_synchronise" = "Mtawi"; +"security_settings_secure_backup" = "AḤRAZ AƔELSAN"; +"security_settings_crypto_sessions" = "TIƔIMIYIN-INU"; +"settings_identity_server_no_is" = "Ulac aqeddac n timagit yettusewlen"; +"settings_discovery_three_pid_details_enter_sms_code_action" = "Sekcem tangalt n usenqed s SMS"; +"settings_discovery_three_pid_details_cancel_email_validation_action" = "Sefsex asentem n yimayl"; +"settings_discovery_three_pid_details_title_phone_number" = "Sefrek uṭṭun n tiliɣri"; +"settings_discovery_error_message" = "Tella-d tuccḍa. Ttxil-k·m ɛreḍ tikkelt-nniḍen."; +"settings_discovery_three_pids_management_information_part3" = "."; +"settings_discovery_three_pids_management_information_part2" = "Iɣewwaren n useqdac"; +"settings_discovery_terms_not_signed" = "Qbel tiwtilin n umeẓlu n uqeddac n timagit (%@) i wakken ad tsirgeḍ iman-ik·im ad d-tettwafeḍ s yimayl neɣ s wuṭṭun n tiliɣri."; +"settings_key_backup_info_trust_signature_invalid_device_unverified" = "Aḥraz ɣer-s azmul arameɣtu seg %@"; +"settings_key_backup_info_trust_signature_invalid_device_verified" = "Aḥraz ɣer-s azmul arameɣtu seg %@"; +"settings_key_backup_info_trust_signature_valid_device_unverified" = "Aḥraz ɣer-s azmul seg %@"; +"settings_key_backup_info_trust_signature_valid_device_verified" = "Aḥraz ɣer-s azmul ameɣtu seg %@"; +"settings_key_backup_info_trust_signature_valid" = "Aḥraz ɣer-s azmul ameɣtu seg tɣimit-a"; +"settings_key_backup_info_trust_signature_unknown" = "Aḥraz ɣer-s azmul seg tɣimit s usulay: %@"; +"settings_key_backup_info_progress" = "Aḥraz n tsura %@…"; +"settings_key_backup_info_valid" = "Tiɣimit-a tḥerrez tisura-inek·inem."; +"settings_key_backup_info_algorithm" = "Alguritm: ù@"; +"settings_key_backup_info_version" = "Lqem n uḥraz n tsarut: %@"; +"settings_crypto_export" = "Sifeḍ tisura"; +"settings_crypto_device_key" = "\nTasarut n tɣimit:\n"; +"settings_crypto_device_id" = "\nAsulay n tɣimit: "; +"settings_crypto_device_name" = "Isem n tɣimit: "; +"settings_add_3pid_password_message" = "I wakken ad tkemmleḍ, ttxil-k·m sekcem awal-ik·im uffir"; +"settings_add_3pid_password_title_email" = "Rnu tansa n yimayl"; +"settings_confirm_password" = "sentem awal uffir"; +"settings_new_password" = "awal uffir amaynut"; +"settings_old_password" = "awal uffir aqbu"; +"settings_third_party_notices" = "Turagin n wis tlata"; +"settings_term_conditions" = "Tiwtilin & tfadiwin"; +"settings_olm_version" = "Lqem n olm n %@"; +"settings_version" = "Lqem n %@"; +"settings_unignore_user" = "Sken meṛṛa iznan sɣur %@?"; +"settings_ui_theme_picker_title" = "Fren asentel"; +"settings_integrations_allow_description" = "Seqdec amsefrak n yimsidaf i usefrek n yibuḍen (%@), n tleggiyin, n yiwiǧiten d yikemmusen n ustiker.\n\namsefrak n yimsidaf irmes-d isefka n twila, i izemren ad beddlen iwiǧiten, ad aznen tinubgiwin ɣer texxamin yerna ad sbadun iswiren n tezmert s yisem-ik·im."; +"settings_calls_stun_server_fallback_description" = "Sireg aqeddac n tallalt i yisawalen n %@ ma yili aqeddac-ik·im agejdan ur d-yettmudd ara yiwen (tansa-ik·im n IP ad tettwabḍu lawan n usiwel)."; +"settings_show_decrypted_content" = "Sken agbur ur nettwawgelhen ara"; +"settings_security" = "TAƔELLIST"; +"settings_three_pids_management_information_part3" = "."; +"settings_three_pids_management_information_part1" = "Sefrek anti tansiwin n yimayl neɣ uṭṭunen n tiliɣri i tzemreḍ ad tesqedceḍ i unekcum neɣ i tririt n umiḍan-inek·inem dagi. Wali d anwa i izemren ad ak·akem-id-yaf din "; +"settings_fail_to_update_profile" = "Aleqqem n umaɣun yecceḍ"; +"settings_night_mode" = "Askar abrkan"; +"settings_remove_phone_prompt_msg" = "Tebɣiḍ s tidet ad tekkseḍ uṭṭun n tiliɣri %@?"; +"settings_remove_email_prompt_msg" = "D tidet tebɣiḍ ad tekkseḍ tansa n yimayl %@?"; +"settings_surname" = "Isem n twacult"; +"settings_deactivate_account" = "SENS AMIḌAN"; +"settings_key_backup" = "AḤRAZ N TSARUT"; +"settings_cryptography" = "AWGELHEN"; +"settings_flair" = "Sken-d tasakezt anida yettusireg"; +"settings_labs" = "TINARIMIN"; +"settings_other" = "WAYEḌ"; +"settings_advanced" = "TALQAYT"; +"settings_contacts" = "INERMISEN IDIGANEN"; +"settings_ignored_users" = "ISEQDACEN YETTWANFEN"; +"settings_user_interface" = "AGRUDEM N USEQDAC"; +"settings_integrations" = "IMSIDAF"; +"settings_identity_server_settings" = "AQEDDAC N TIMAGIT"; +"settings_discovery_settings" = "ASNIREM"; +"settings_calls_settings" = "ISAWALEN"; +"settings_notifications_settings" = "IƔEWWAREN N YILƔA"; +"settings_user_settings" = "IƔEWWAREN N USEQDAC"; +"settings_config_user_id" = "Kcem d %@"; +"settings_config_identity_server" = "Aqeddac n timagit d %@"; +"settings_config_home_server" = "Aqeddac agejdan d %@"; +"settings_mark_all_as_read" = "Creḍ ɣef meṛṛa iznan ttwaɣran"; +"account_logout_all" = "Ffeɣ seg meṛṛa imiḍanen"; +"room_preview_try_join_an_unknown_room" = "Tettaɛraḍeḍ ad tkecmeḍ ɣer %@. Tebɣiḍ ad ternuḍ i wakken ad tettekkiḍ deg udiwenni?"; +"room_preview_unlinked_email_warning" = "Tinubga-a tettwazen i %@, ur ncudd ara ɣer umiḍan-a. Ilaq-ak·am ad tkecmeḍ s umiḍan-nniḍen, neɣ rnu imayl-a ɣer umiḍan-ik·im."; + +// Room Preview +"room_preview_invitation_format" = "Tettwanecdeḍ ad ternuḍ ɣer texxamt-a sɣur %@"; +"room_title_members" = "%@ d imttekkiyen"; +"room_title_invite_members" = "Nced-d imttekkiyen"; +"room_title_one_active_member" = "%@ %@ d aɛeggal urmid"; +"room_title_multiple_active_members" = "%@/%@ yiɛeggalen urmiden"; + +// Room Title +"room_title_new_room" = "Taxxamt tamaynut"; +"unknown_devices_title" = "Tiɣimiyin tarussanin"; +"unknown_devices_answer_anyway" = "Err akken yebɣu yili"; +"unknown_devices_alert" = "Taxxamt-a deg-s tiɣimiyin tarussinin ur nettwasenqed ara.\nAya yebɣa ad d-yini ulac aḍman belli tɣimiyin-a d tidet n yiseqdacen i d-temmal.\nAd ak·akem-nwelleh ad tuɣaleḍ ɣer ukala n usenqed n yal tiɣimit send akemmel, maca tzemreḍ ad talseḍ tuzna n yizen war asenqed ma yella tebɣiḍ."; +"external_link_confirmation_message" = "Aseɣwen-a %@ ad ak·akem-yawi ɣer usmel-nniḍen: %@\n\nD tidet tebɣiḍ ad tkemmleḍ?"; +"room_accessibility_hangup" = "Ɛelleq"; +"room_resource_usage_limit_reached_message_contact_3" = " i usnerni n talast-a."; +"room_resource_usage_limit_reached_message_1_monthly_active_user" = "Aqeddac-a agejdan yewweḍ ɣer talast n useqdac urmid n wayyur "; +"room_resource_usage_limit_reached_message_1_default" = "Aqeddac-a agejdan iɛedda yiwet seg tlisa-ines tiɣbula "; +"room_resource_limit_exceeded_message_contact_3" = " i ukemmel n useqdec n umeẓlu-a."; +"room_resource_limit_exceeded_message_contact_1" = " Ttxil-k·m "; +"room_predecessor_link" = "Sit da i wakken ad twaliḍ iznan iqdimen."; +"room_action_send_file" = "Azen afaylu"; +"room_action_send_photo_or_video" = "Azen tawlaft neɣ tavidyut"; +"room_event_failed_to_send" = "Tuzna ur teddi ara"; +"room_event_action_reaction_history" = "Azray n usedmar"; +"room_event_action_view_encryption" = "Talɣut yettwawgelhen"; +"room_event_action_cancel_send" = "Sefsex tuzna"; +"room_event_action_report_prompt_ignore_user" = "Tebɣiḍ ad teffreḍ meṛṛa iznan i d-yusan sɣur useqdac-a?"; +"room_event_action_ban_prompt_reason" = "Ssebba n ugdal n useqdc-a"; +"room_event_action_kick_prompt_reason" = "Ssebba n uḥwaya n useqdc-a"; +"room_prompt_cancel" = "sefsex kullec"; +"room_conference_call_no_power" = "Tesriḍ tisirag i wakken ad tesferkeḍ asarag s usiwel deg texxamt-a"; +"room_ongoing_conference_call_with_close" = "Asarag s usiwel iteddu. Rnu d %@ neɣ %@. %@ ."; +"room_ongoing_conference_call" = "Asarag s usiwel iteddu. Rnu d %@ neɣ %@."; +"room_unsent_messages_unknown_devices_notification" = "Ur yettwazen ara yizen acku llant tɣimiyin ur nettwassen ara. %@ neɣ %@ tura?"; +"room_unsent_messages_notification" = "Iznan ur ttwaznen ara. %@ neɣ %@ tura?"; +"room_message_unable_open_link_error_message" = "Yegguma ad yeldi useɣwen."; +"room_one_user_is_typing" = "%@ yettaru…"; +"room_accessiblity_scroll_to_bottom" = "Senkez d akessar"; + +// Chat +"room_jump_to_first_unread" = "Ɛeddi ɣer yizen amezwaru ur nettwaɣra ara"; +"room_member_power_level_custom_in" = "Asagen (%@) deg %@"; +"room_member_power_level_moderator_in" = "Aseɣyad deg %@"; +"room_member_power_level_admin_in" = "Anedbal %@"; +"room_participants_security_information_room_encrypted_for_dm" = "Iznan deg texxamt-a ttwawgelhen seg yixef ɣer yixef.\n\nIznan-inek·inem ttwaɣellsen s lemfatiḥ, rnu ala kečč d umesɣad i yesɛan tisura tasufin i tweldaywt-nsen."; +"room_participants_security_information_room_not_encrypted_for_dm" = "Iznan dagi ur ttwawgelhen ara seg yixef ɣer yixef."; +"room_participants_action_security_status_complete_security" = "Taɣellist temmed"; +"room_participants_action_start_video_call" = "Bdu asiwel s tvidyut"; +"room_participants_action_start_voice_call" = "Bdu asiwel s taɣect"; +"room_participants_action_start_new_chat" = "Bdu udiwenni amaynut"; +"room_participants_action_unignore" = "Sken meṛṛa iznan sɣur aseqdac-a"; +"room_participants_action_ignore" = "Ffer meṛṛa sɣur aseqdac-a"; +"room_participants_action_ban" = "Yettwagdel seg texxamt-a"; +"room_participants_action_section_direct_chats" = "Idiwenniyen usriden"; +"room_participants_action_section_admin_tools" = "Ifecka n unedbal"; +"room_participants_filter_room_members_for_dm" = "Sizdeg iɛeggalen"; +"room_participants_invite_prompt_msg" = "Tebɣiḍ s tidet ad d-tnecdeḍ %@ ɣer udiwenni-a?"; +"room_participants_remove_prompt_msg" = "Tebɣiḍ s tidet ad tekkseḍ %@ seg udiwenni-a?"; +"room_participants_leave_prompt_msg_for_dm" = "S tidet tebɣiḍ ad teffɣeḍ?"; +"room_participants_multi_participants" = "%d yimttekkiyen"; +"room_participants_one_participant" = "1 yimttekki"; +"room_participants_add_participant" = "Rnu imttekki"; +"contacts_user_directory_offline_section" = "AKARAM N USEQDAC (askar aruqqin)"; +"contacts_user_directory_section" = "AKARAM N USEQDAC"; +"contacts_address_book_no_contact" = "Ulac inermisen idiganen"; +"contacts_address_book_no_identity_server" = "Ulac aqeddac n timagit yettusewlen"; + +// Contacts +"contacts_address_book_section" = "INERMISEN IDIGANEN"; +"directory_search_results_more_than" = ">%tu igmaḍ yettwafen i %@"; +"directory_search_results" = "%tu igmaḍ yettwafen i %@"; +"directory_search_results_title" = "Nadi igmaḍ n ukaram"; +"directory_cell_description" = "%tu tixxamin"; +"search_people_placeholder" = "Nadi s usulay n useqdac, Isem neɣ imayl"; +"group_section" = "TIMQIWNIN"; +"people_conversation_section" = "IDIWENNIYEN"; +"room_recents_server_notice_section" = "ILƔA N UNAGRAW"; +"room_recents_favourites_section" = "ISMENYIFEN"; + +// Room recents +"room_recents_directory_section" = "AKARAM N TEXXAMT"; +"room_creation_keep_private" = "Eǧǧ-it·itt d uslig"; +"room_creation_make_public_prompt_title" = "Err adiwenni-a d azayez?"; +"room_creation_make_public" = "Err-it·itt d azayez"; +"room_creation_public_room" = "Adiwenni-a d azayez"; +"room_creation_private_room" = "Adiwenni-a d uslig"; +"room_creation_appearance_picture" = "Tugna n udiwenni (d tarmitant)"; +"auth_softlogout_reason" = "Anedbal n uqeddac-ik·im agejdan (%1$@) isuffeɣ-ik·ikem-id seg umiḍan-ik·im %2$@ (%3$@)."; +"auth_add_email_and_phone_warning" = "Ajerred s yimayl d wuṭṭun n tiliɣri ɣef tikkelt ur yettusefrak ara akka tura alamma yella api. Slid uṭṭun n tilifun ara yettwaṭṭfen deg umiḍan. Ilaq-ak·am ad ternuḍ imayl-ik·im ɣer umaɣun-inek·inem deg yiɣewwaren."; +"auth_reset_password_error_is_required" = "Ulac aqeddac n timagit yettusewlen: rnu yiwen deg textiṛiyin n uqeddac i wakken ad twennzeḍ awal-ik·im uffir."; +"auth_reset_password_error_not_found" = "Tansa-ik·im n yimayl ur d-tban ara i wakken ad tettwacudd d usulay Matrix deg usebter-a agejdan."; +"auth_reset_password_email_validation_message" = "Yettwazen yimayl ɣer %@. Akken ara tḍefreḍ aseɣwen i yellan deg-s, sit ddaw."; +"auth_recaptcha_message" = "Aqeddac-a aqejdan yesra ad iẓer ma mačči d aṛubut i telliḍ"; +"auth_msisdn_validation_message" = "Ad naze-n SMS deg-s tangalt n usenqed. Ttxil-k·m sekcem tangalt-a ddaw."; +"auth_email_not_found" = "Tuzna n yimayl ur teddi ara: Tansa-a n yimayl ulac-itt"; +"auth_forgot_password_error_no_configured_identity_server" = "Ulac aqeddac n timagit yettusewlen: rnu yiwen i wakken ad twennzeḍ awal-ik·im uffir."; +"auth_untrusted_id_server" = "Aqeddac n timagit ur yettwaman ara"; +"auth_phone_is_required" = "Ulac aqeddac n timagit yettusewlen, ɣef waya ur tettizmireḍ ara ad ternuḍ tansa n yimayl i wakken ad twennzeḍ awal-ik·im uffir ɣer sdat."; +"auth_invalid_phone" = "Ur tettban ara d uṭṭun n tiliɣri ameɣtu"; +"auth_invalid_email" = "Ur tettban ara d tansa n yimayl tameɣtut"; +"auth_identity_server_placeholder" = "URL (e.g. https://vector.im)"; +"auth_home_server_placeholder" = "URL (e.g. https://matrix.org)"; + +// Accessibility +"accessibility_checkbox_label" = "ṛcem tabewwaḍt"; +"switch" = "Uɣal"; +"send_to" = "Azen ɣer %@"; +"active_call_details" = "Asiwel urmid (%@)"; +"active_call" = "Rmed asiwel"; +"store_full_description" = "Element d anaw amaynut n usnas n tirawt d umɛiwen i:\n\n1. Ad ak·akem-yeǧǧ ad tsedduḍ aḍman n tudert-ik·im tabaḍnit\n2. Ad ak·akem-yeǧǧ ad teqqneḍ d yal win·tin yellan deg uzeṭṭa n Matrix, ula beṛṛa-ines s usleɣ n yisnasen am Slack\n3. Ad ak·akem-iḥrez seg udellel, seg yilɣa, seg tewwura yeffren d telmatin ifergen\n4. Ad tettuɣellseḍ s uwgelhen seg yixef ɣer yixef, s uzmul anmidag swayes ara tesneqdeḍ wiyaḍ\n\nElement yemgarad akk ɣef yisnasen-nniḍen n tirawt d umɛiwen yerna n uɣbalu yeldin.\n\nElement ad ak·akem-yeǧǧ ad tzedɣeḍ s wudem awurman - neɣ ad tferneḍ asenneftaɣ - i wakken ad tesɛuḍ tabaḍnit, ad tesɛuḍ ayla, ad tsedduḍ yisefka-inek·inem d yidewenniyen akken i tebɣiḍ. Ad ak·am-imudd anekcum ɣer uzeṭṭa yeldin; akken mačči kan d ameslay ara temmeslayeḍ d yiseqdacen-nniḍen n Element. Rnu d aɣellsan aṭas.\n\nElement yezmer ad yeg akk aya acku iteddu ɣef Matrix - alugen i teywalt yeldin.\n\nElement ad ak·am-imudd asenqed, ad ak·akem-yeǧǧ ad tferneḍ anwa ara yeɣren idiwenniyen-inek·inem. Seg usnas n Element, tzemreḍ ad tferneḍ iwumi ara tmuddeḍ tanezduɣt s yiberdan yemgaraden:\n\n1. Awi amiḍan baṭel ɣef uqeddac azayaz n matrix.org\n2. Sezdeɣ s timmad-ik·im amiḍan-inek·inem s uselkem n uqeddac ɣef yibenk-inek·inem\n3. Rnu amiḍan ɣef uqeddac udmawan s umulteɣ ɣer tɣerɣert n tnezduɣt n Element Matrix Services\n\nI wacu ara tferneḍ Element?\n\nILI-IK·IKEM D BAB N YISEFKA-INEK·INEM: D kečč·kemm ara ifernen adeg anida ara terreḍ isefka-inek·inem d yiznan-inek·inem. D ayla-inek·inem, ad t-tsedduḍ akken i tebɣiḍ. Mačči d kra n MEGACORP ara d-isuffɣen isefka-inek·inem neɣ ad imudd anekcum i wis kraḍ.\n\nTIRAWT YELDIN D UMƐIWEN: Tzemreḍ ad temmeslayeḍ d umdan-nniḍen akk n uzeṭṭa Matrix, isseqdac Element neɣ asnas-nniḍen n Matrix, ɣas ulamma isseqdac anagraw-nniḍen yemgarraden ɣef Slack, IRC neɣ XMPP.\n\nD AƔELLSAN ALMI DAYEN: d awgelhen n tidet seg yixef ɣer yixef (ala imttekkiyen deg udiwenni i izemren ad kksen awgelhen i yiznan) d uzmul anmidag i usenqed n yibenkan n yimttekkiyen deg udiwenni.\n\nTAYWALT YEMMDEN: Tirawt, isawalen s taɣect d tvidyut, beṭṭu n yifuyla, beṭṭu n ugdil d tegrumma yemmden n yimsidaf, n yibuten d yiwiǧiten. Rnu tixxamin, timɣiwnin, qqim mmeslay rnu seddu lecɣl.\n\nANIDA YEƔU TILIḌ: Ili-k·ikem d wid tettmeslayeḍ anida yebɣu tiliḍ s uzray n yiznan yemtawan akken iwata ɣef meṛṛa ibenkan-inek·inem akked ɣef web deg https://element.io/app."; +"settings_callkit_info" = "Nermes-d isawalen i d-ikecmen ɣef ugdil-inek·inem isekkṛen. Wali isawalen-inek·inem n Element deg uzray n yisawalen n unagraw. Ma yella iCloud yetturmed, azray-a n yisawalen ad yettwabḍu akked Apple."; +"store_promotional_text" = "Nermes-d isawalen i d-ikecmen ɣef ugdil-inek·inem isekkṛen. Wali isawalen-inek·inem n Element deg uzray n yisawalen n unagraw. Ma yella iCloud yetturmed, azray-a n yisawalen ad yettwabḍu akked Apple."; +"major_update_information" = "S tumert ara awen-d-nini nbeddel isem! Asnas-inek·inem yettwaleqqem, aql-ak·akem teqqneḍ ɣer umiḍan-inek·inem."; +"bug_report_logs_description" = "I wakken ad nessiweḍ ad d-naf uguren, iɣmisen n umsaɣ-a ad ttwaznen s uneqqis-a n wabug. Ma yella tebɣiḍ ad tazneḍ kan aḍris yellan nnig, ttxil-k·m ṛcem tabewwaḍt:"; + +// Success from passphrase +"key_backup_setup_success_from_passphrase_info" = "Tisura-inek·inem ad ttwaḥerzent.\n\nTasarut-ik·im n tririt i azeṭṭa aɣellsan - tzemreḍ ad tt-tesqedceḍ i tririt n unekcum ɣer yiznan-inek·inem yettwawgelhen ma yella tettuḍ tafyirt-ik·im tuffirt.\n\nErr tasarut-ik·im n tririt deg wadeg aɣellsan aṭas, am umsefrak n wawalen uffiren (neɣ deg usenduq isekkṛe)."; +"deactivate_account_informations_part5" = "Ma yella tebɣiḍ ad nettu iznan-inek·inem, ttxil-k·m ṛcem tabewwaḍt-a ddaw\n\nIznan deg Matrix ttbann-d am wid n yimayl. Tatut-nneɣ i yiznan-inek·inem anamek-is iznan i tuzneḍ ur ttwabḍun ara akked yiseqdacen imaynuten neɣ wid ur nettusekles, maca iseqdacen i ikecmen yakan mazal zemren ad kecmen ɣer tenɣalt-nsen."; +"user_verification_start_waiting_partner" = "Nettṛaǧu %@…"; +"key_verification_scan_confirmation_scanning_user_waiting_other" = "Araǧu n %@…"; +"key_verification_tile_request_status_data_loading" = "Asali n yisefka…"; + +// Recover from private key +"key_backup_recover_from_private_key_info" = "Tiririt n uḥraz…"; +"e2e_room_key_request_start_verification" = "Bdu asenqed…"; +"widget_picker_manage_integrations" = "Sefrek imsidaf…"; +"call_incoming_video" = "Asiwel s tvidyut i d-ikecmen…"; +"call_incoming_voice" = "Asiwel i d-ikecmen…"; +"security_settings_crypto_sessions_loading" = "Asali n tɣimiyin…"; +"settings_key_backup_info_checking" = "Asenqed…"; +"unknown_devices_verify" = "Senqed…"; +"room_many_users_are_typing" = "%@, %@ & d wiyaḍ ttarun…"; +"room_two_users_are_typing" = "%@ & %@ ttarun…"; +"e2e_need_log_in_again" = "Ilaq ad teqqneḍ tikkelt-nniḍen i usirew n tsura n uwgelhen qeg yixef ɣer yixef i tɣimit-a syen azen tasarut tazayezt ɣer uqeddac-ik·im agejdan.\nAya iḍerru-d kan yiwet n tikkelt. Suref-aɣ ɣef waya."; +"security_settings_crosssigning_info_trusted" = "Azmul anmidag yettwarmed. Tzemreḍ ad tettekleḍ ɣef yiseqdacen-nniḍen akked tɣimiyin-inek·inem-nniḍen yebnan ɣef uzmul anmidag maca ur tezmireḍ ara ad tgeḍ izmulen imdiganen seg tɣimit-a acku ulac ɣer-s tisura tusligin n uzmul anmidag."; +"pin_protection_not_allowed_pin" = "I ssebbat n tɣellist, tangalt-a PIN ulac-itt. Ttxil-k·m ɛreḍ tangalt-nniḍen n PIN"; +"user_verification_sessions_list_information" = "Iznan akked useqdac-a deg texxamt-a ttwawgelhen seg yixef ɣer yixef, ur zmiren ara ad ttwaɣren sɣur wis kraḍ."; +"key_verification_verified_other_session_information" = "Tzemreḍ tura ad teɣreḍ iznan iɣellsanen deg tɣimit-inek·inem-nniḍen, ula d iseqdacen-nniḍen ad ẓren belli zemren ad tteklen fell-as."; +"device_verification_self_verify_wait_information" = "Senqed tiɣimit-a seg yiwet gar tɣimiyin-inek·inem-nniḍen, serreḥ-as ad tekcem ɣer yiznan yettwawgelhen.\n\nSeqdec Element aneggaru ɣef yibenkan-inek·inem-nniḍen:"; +"key_backup_setup_passphrase_info" = "Ad nekles anɣal yettwawgelhen n tsura-inek·inem ɣef uqeddac-nneɣ. Mmesten aḥraz-inek·inem s tefyirt tuffirt i wakken ad yeqqim d aɣellsan.\n\nI wugar n tɣellistt, ilaq ad yemgarad ɣef wawal uffir n umiḍan-ik·im."; +"share_extension_failed_to_encrypt" = "Tuzna ur teddi ara. Senqed deg usnas agejdan iɣewwaren n uwgelhen n texxamt-a"; + +// Share extension +"share_extension_auth_prompt" = "Kcem ɣer usnas agejdan i beṭṭu n ugbur"; +"widget_integration_manager_disabled" = "Ilaq ad tremdeḍ amsefrak n yimsidaf deg yiɣewwaren"; +"bug_crash_report_description" = "Ttxil-k·m glem-d d acu i txedmeḍ send ad d-teḍru truẓi:"; +"e2e_key_backup_wrong_version" = "Aḥraz amaynut n tsarut n yiznan iɣellsanen yettwaf-d.\n\nWagi mačči d kečč·kemm, sbadu tafyirt tuffirt tamaynut deg yiɣewwaren."; + +// Crypto +"e2e_enabling_on_app_update" = "Element tura issefrak awgelhen seg yixef ɣer yixef maca tesriḍ ad tkecmeḍ i tikkelt-nniḍen i wakken ad t-tremdeḍ.\n\nTzemreḍ ad tgeḍ aya tura neɣ ticki deg yiɣewwaren n usnas."; + +// Crash report +"google_analytics_use_prompt" = "Tebɣiḍ ad talleḍ i usnerni n %@ s tuzna s wudem awurman n yineqqisen udrigen n truẓi d yisefka n useqdec?"; +"room_details_addresses_disable_main_address_prompt_msg" = "Ulac ɣur-k·m tansa n yimayl tagejdant i yettwafernen. Tansa n yimayl tamezwert i texxamt-a ad tettwafran kan akka"; +"identity_server_settings_alert_disconnect_still_sharing_3pid" = "Tebdiḍ tbeṭṭuḍ isefka-inek·inem udmawanen ɣef uqeddac n timagit %@.\n\nAd ak·akem-nweṣṣi ad tekkseḍ tansiwin-inek·inem n yimayl d wuṭṭunen n tiliɣri seg uqeddac n timagit send ad teffɣeḍ seg tuqqna."; +"identity_server_settings_description" = "Aql-ak·akem akka tura tesseqdaceḍ %@ i wakken ad d-tafeḍ, dɣen ad tettwafeḍ sɣur inermisen i yella i tessneḍ."; +"settings_discovery_three_pid_details_information_phone_number" = "Sefrek ismenyifen i wuṭṭun-a n tiliɣri, i izmiren iseqdacen ad sqedcen i wakken ad ak·akem-id-afen neɣ ad ak·akem-snubegten ɣer texxamin. Rnu neɣ kkes tansiwin n yimayl deg yimiḍanen."; +"settings_discovery_three_pid_details_information_email" = "Sefrek ismenyifen i tansa-a n yimayl, i izmiren iseqdacen ad sqedcen i wakken ad ak·akem-id-afen neɣ ad ak·akem-snubegten ɣer texxamin. Rnu neɣ kkes tansiwin n yimayl deg yimiḍanen."; +"people_empty_view_information" = "Adiwenni s wudem aɣellsan akked yal yiwen. Sit ɣef + i wakken ad tebduḍ ad ternuḍ imdanen."; +"settings_discovery_three_pids_management_information_part1" = "Sefrek anti tansiwin n yimayl neɣ uṭṭunen n tilifun ara yizmiren iseqdacen ad sqedcen i wakken ad ak·akem-id-afen neɣ ad ak·akem-snubegten ɣer texxamin. Rnu neɣ kkes tansiwin n yimayl neɣ uṭṭunen n tiliɣri seg tebdart-a deg "; +"settings_labs_e2e_encryption_prompt_message" = "I wakken ad yemmed usesteb n uwgelhen, ilaq ad talseḍ anekcum i tikkelt-nniḍen."; +"settings_contacts_discover_matrix_users" = "Seqdec imaylen neɣ uṭṭunen n tiliɣri i usnirem n yinermisen"; +"settings_ui_theme_picker_message" = "\"Auto\" isseqdac iɣewwaren n \"Asmutti initen\" n yibenk-inek·inem"; +"settings_sign_out_e2e_warn" = "Ad tesruḥeḍ tisura-inek·inem n uwgelhen seg yixef ɣer yixef. Aya anamek-is, ur tettizmireḍ ara ad teɣreḍ iznan iqburen n texxamin yettwawgelhen ɣef yibenk-a."; +"room_warning_about_encryption" = "Awgelhen seg yixef ɣer yixef ha-t-an deg lqem n beta yezmer ur yettili ara d uḍmin.\n\nUr ilaq ara ad tettekleḍ fell-as akka tura i tɣellist n yisefka.\n\nIbenkan ur ssawaḍen ara ad kksen awgelhen i uzray uqbel ad rnun ɣer texxamt.\n\nIznan yettwawgelhen ur d-ttbanen ara deg yimsaɣen i mazal ur slekmen ara awgelhen."; +"rooms_empty_view_information" = "Tixxamin gerrzent i yal adiwenni n ugraw, d uslig neɣ d azayaz. Sit ɣef + i tifin n texxamin yellan neɣ i tmerna n tiyaḍ."; +"room_creation_error_invite_user_by_email_without_identity_server" = "Ula d yiwen n uqeddac n timagit ur yettusqel, ihi ur tezmireḍ ara ad ternuḍ imttekki s yimayl."; +"room_creation_wait_for_creation" = "Tella texxamt i d-irennun akka tura. Ttxil-k·m ṛǧu."; +"room_creation_make_public_prompt_msg" = "S tidet tebɣiḍ ad terreḍ adiwenni-a d azayaz? Meṛṛa zemren ad ɣren iznan-inek·inem yerna ad d-rnun s adiwenni."; +"auth_softlogout_clear_data_sign_out_msg" = "S tidet tebɣiḍ ad tekkseḍ meṛṛa isefka yettukelsen akka tura ɣef yibenk-a? Kcem tikkelt-nniḍen i wakken ad tkecmeḍ ɣer yisefka d yiznan n umiḍan-ik·im."; +"auth_softlogout_clear_data_message_2" = "Sfeḍ-iten ma yella ur tettuɣaleḍ ara ad tesqedceḍ ibenk-a neɣ ma yella tebɣiḍ ad teqqneḍ s umiḍan-nniḍen."; +"secrets_reset_warning_message" = "Ad talseḍ asenker s war azray, iznan, ibenkan neɣ iseqdacen yettwaḍmanen."; +"secrets_reset_information" = "Ayagi ad t-tgeḍ kan ma yella ɣer-k·m yiwen yibenk i swayes i tzemreḍ ad tesneqdeḍ ibenk-a."; +"secrets_setup_recovery_passphrase_summary_information" = "Cfu ɣef tsarut-ik·im taɣellsant. Yezmer ad tettuseqdec i twaledyawt n yiznan-inek·inem d yisefka-inek·inem yettwawgelhen."; +"secrets_setup_recovery_key_storage_alert_message" = "✓ Siggez-itt syen err-itt deg wadeg aɣellsan\n✓ Sekles-itt deg tsarut USB neɣ deg yimeɣri n uḥraz\n✓ Nɣel-itt ɣer uklas-inek·inem udmawan deg usigna"; +"secrets_setup_recovery_key_information" = "Err tasarut-ik·im n tririt deg wadeg aɣellsan. Yezwer ad tettuseqdec i twaledyawt n yiznan & yisefka yettwawgelhen."; +"secrets_recovery_with_key_information_default" = "Kcem ɣer uzray n yiznan-inek·inem iɣellsanen d timagit n uzmul anmidag i usenqed n tɣimiyin-nniḍen s usekcem n tsarut-inek·inem n tririt."; +"secrets_recovery_with_passphrase_information_default" = "Kcem ɣer uzray n yiznan-inek·inem iɣellsanen d timagit n uzmul anmidag i usenqed n tɣimiyin-nniḍen s usekcem n tefyirt-inek·inem tuffirt n tririt."; + +// MARK: - Secrets recovery + +"secrets_recovery_reset_action_part_1" = "Tettuḍ neɣ tesruḥeḍ meṛṛa tixtiṛiyn n tririt? "; +"key_verification_verify_qr_code_scan_other_code_success_message" = "Tangalt QR tettuseɣbel akken iwata."; +"key_verification_verify_qr_code_other_scan_my_code_title" = "Wissen ma yella iseqdacen-nniḍen smiḍnen tangalt QR akken iwata?"; +"key_verification_verify_qr_code_information" = "Smiḍen tangalt i wakken ad tesneqdeḍ yal yiwen s wudem aɣellsan."; +"key_verification_bootstrap_not_setup_message" = "Tesriḍ ad tgeḍ tazwart s uzmul anmidag qbel."; +"key_verification_verified_this_session_information" = "Tzemreḍ tura ad teɣreḍ iznan iɣellsanen ɣef yibenk-a, ula d iseqdacen-nniḍen ad ẓren belli zemren ad tteklen fell-as."; +"key_verification_verified_new_session_information" = "Tzemreḍ tura ad teɣreḍ iznan iɣellsanen ɣef yibenk-inek·inem amaynut, ula d iseqdacen-nniḍen ad ẓren belli zemren ad tteklen fell-as."; +"device_verification_self_verify_wait_additional_information" = "Aya iteddu akked Element d yimsaɣen-nniḍen n Matrix yemṣadan d uzmul anmidag."; + +// Success from recovery key +"key_backup_setup_success_from_recovery_key_info" = "Tisura-inek·inem ad ttwaḥerzent.\n\nEg tanɣalt n tsarut-a n tririt, rnu err-itt deg wadeg yettwaḍmanen."; +"secure_key_backup_setup_existing_backup_error_info" = "Kkes-as asekkeṛ i wakken ad talseḍ aseqdec-ines deg uḥraz aɣellsan neɣ kkes-it i tmerna n uḥraz n yiznan imaynuten deg uḥraz aɣellsan."; +"service_terms_modal_message_identity_server" = "Qbel tiwital n uqeddac n timagit (%@) i usnirem n yinermisen."; +"no_voip" = "%@ yessawal-ak·am-d maca %@ ur isefrak ara isawalen akka tura.\nTzemreḍ ad tzegleḍ alɣu-a, ad terreḍ ɣef usiwel seg yibenk-nniḍen neɣ tzemreḍ ad t-tagiḍ."; +"photo_library_access_not_granted" = "%@ ur yesɛi ara tisirag ad ikcem ɣer temkarḍit n tewlafin, ttxil-k·m beddel-it deg yiɣewwaren n tbaḍnit"; +"camera_access_not_granted" = "%@ ur yesɛi ara tisirag ad iseqdec takamiṛat, ttxil-k·m beddel-it deg yiɣewwaren n tbaḍnit"; +"identity_server_settings_alert_error_terms_not_accepted" = "Ilaq ad tqebleḍ tiwtilin n %@ i t-tesbaduḍ d aqeddac n timagit."; + +// AuthenticatedSessionViewControllerFactory +"authenticated_session_flow_not_supported" = "Asnas-a ur isefrak ara amtawi n usesteb ɣef uqeddac-inek·inem agejdan."; +"security_settings_coming_soon" = "Nesḥassef. Tigawt-a ulac-itt ɣef Elemnt iOS akka tura. Ttxil-k·m seqdec amsaɣ-nniḍen n Matrix i usbadu-ines. Element iOS ad t-iseqdec."; +"security_settings_complete_security_alert_message" = "Ilaq deg tazwara ad temmed tɣellist deg tɣimit-agi-inek·inem tamirant."; +"security_settings_blacklist_unverified_devices_description" = "Senqed meṛṛa tiɣimiyin n yiseqdac i wakken ad tcerḍeḍ fell-asent ttwattkalent, azen-asen daɣen iznan."; +"security_settings_blacklist_unverified_devices" = "Ɣur-k·m ad tazneḍ akk iznan ɣer tɣimiyin ur nettwattkal ara"; +"security_settings_crypto_sessions_description_2" = "MA yella ur tessineḍ ara anekcum, senfel awal-ik·imuffir, rnu wennez aḥraz aɣellsan."; +"settings_send_crash_report" = "Azen tura tura isefka yerrẓen & useqdec"; +"settings_on_denied_notification" = "Ttwagin yilɣa i %@, ttxil-k·m sireg-iten deg yiɣewaren n yibenk-inek·inem"; +"settings_global_settings_info" = "Iɣewwaren n yilɣa imatuyen llan ɣef umsaɣ-inek·inem web %@"; +"room_participants_start_new_chat_error_using_user_email_without_identity_server" = "Ulac aqeddac n timagit i yettusbadun, ihi ur tezmireḍ ara ad tebduḍ adiwenni akked unermis isseqdacen imayl."; +"contacts_address_book_permission_required" = "Ttusrant tsirag i unekcum ɣer yinermisen idiganen"; +"favourites_empty_view_information" = "Tzemreḍ ad tesmenyafeḍ kra n yiberdan - arurad d asiti s war aḥbas. Sit ɣef yitri, ad d-tban s wudem awurman dagi i uḥraz aɣellsan."; +"home_empty_view_information" = "Asnas n udiwenni aɣellsan meṛṛa deg yiwen i yigrawen, i yimeddukkal d tkebbaniyin. Sit ɣef tqeffalt + yellan ddaw i tmerna n yimdanen d texxamin."; +"pin_protection_explanatory" = "Asesteb n tengalt PIN ad ak·akem-yeǧǧ ad temmestneḍ isefka am yiznan d yinermisen,, akken ala kečč·kemm ara yizmiren ad yekcem·tekcem s tira n tengalt PIN mi ara yekker usnas."; +"secrets_recovery_with_passphrase_information_verify_device" = "Seqdec tafyirt-ik·im tuffirt n tririt i usenqed n yibenk-a."; + + +// Cancel + +"secure_key_backup_setup_cancel_alert_title" = "Tetḥeqqeḍ?"; +"settings_identity_server_description" = "Aseqdec n uqeddac n timagit yettusbadun ddaw, tzemreḍ ad d-tafeḍ daɣen ad d-tettwafeḍ sɣur yinermisen yellan i tessneḍ."; +"cross_signing_setup_banner_subtitle" = "Senqed ibenkan-ik·im s sshala"; +"secrets_recovery_with_key_invalid_recovery_key_message" = "Ttxil-k·m sefqed ma d tasarut n tririt tameɣtut i teskecmeḍ."; +"secrets_recovery_with_key_invalid_recovery_key_title" = "D awezɣi ad yili unekcum ɣer uklas uffir"; +"secrets_recovery_with_key_information_verify_device" = "Seqdec tasarut-ik·im n tririt i usenqed n yibenk-a."; +"secrets_recovery_with_passphrase_invalid_passphrase_title" = "D awezɣi ad yili unekcum ɣer uklas uffir"; +"user_verification_session_details_information_untrusted_current_user" = "Senqed tiɣimit-a i wakken ad tt-tcerḍeḍ tettwattkal & anef-as ad tekcem ɣer yiznan yettwawgelhen:"; +"user_verification_start_information_part2" = " s usenqed n tengalt n useqdec asuf ɣef isin yibenkan-inek·inem."; +"user_verification_start_information_part1" = "I wugar n tɣellist, senqed "; +"key_verification_scan_confirmation_scanned_device_information" = "Wissen ma yella ibenk-nniḍen kifkif aɣer i d-yeskanay?"; +"key_verification_scan_confirmation_scanned_user_information" = "%@ kifkif shield i d-yeskanay?"; +"key_verification_scan_confirmation_scanning_device_waiting_other" = "Araǧu n yibenk-nniḍen…"; +"key_verification_verify_qr_code_information_other_device" = "Siggez tangalt ddaw i usenqed:"; +"key_verification_tile_conclusion_warning_title" = "Anekcum ur nettwaman ara"; + + +// Generic errors +"error_invite_3pid_with_no_identity_server" = "Rnu aqeddac n timagit ɣer yiɣewwaren-inek·inem i uncad s yimayl."; +"file_upload_error_unsupported_file_type_message" = "Anaw n ufaylu-agi ur yettusefrak ara."; +"key_verification_verify_sas_title_number" = "Serwes gar wuṭṭunen"; +"device_verification_self_verify_wait_recover_secrets_checking_availability" = "Anadi n tzemmar-nniḍen n usenqed ..."; +"device_verification_self_verify_wait_recover_secrets_additional_information" = "Ma yella ur tezmireḍ ara ad tkecmeḍ ɣer tɣimit i yellan"; +"device_verification_start_use_legacy" = "Ulac acu i d-yettwabanen? Mačči akk imsaɣen ssefraken aselkin amyigew ar tura. Seqdec aselkin aqbur."; +"device_verification_start_wait_partner" = "Aṛaǧu n usentem sɣur bab…"; +"device_verification_error_cannot_load_device" = "Asali n talɣut n tɣimit ur yeddi ara."; +"device_verification_cancelled_by_me" = "Asenqed yettusefex. SSebba: %@"; +"device_verification_security_advice_number" = "Serwes uṭṭunen, s uḍman ad d-banen deg yiwen usemizwer."; +"key_verification_new_session_title" = "Senqed tiɣimit-inek·inem tamaynut"; +"sign_out_key_backup_in_progress_alert_cancel_action" = "Ad rǧuɣ"; +"sign_out_non_existing_key_backup_sign_out_confirmation_alert_message" = "Ad tesruḥeḍ anekcum ɣer yiznan-ik•im yettwawgelhen anagar ma tkelseḍ tisura-inek•inem send tuffɣa."; +"sign_out_non_existing_key_backup_alert_title" = "Ad tesruḥeḍ anekcum ɣer yiznan-ik•im yettwawgelhen ma teffɣeḍ tura"; + +// Recover from recovery key + +"key_backup_recover_from_recovery_key_info" = "Seqdec tasarut-ik·im n tririt i twaledyawt n uzray n yiznan-ik·im iɣellsanen"; + +// Recover from passphrase + +"key_backup_recover_from_passphrase_info" = "Seqdec tafyirt-ik·im tuffirt n tririt i twaledyawt n uzray n yiznan-ik·im iɣellsanen"; +"key_backup_setup_passphrase_confirm_passphrase_valid" = "D ayen izaden!"; +"key_backup_setup_passphrase_passphrase_invalid" = "Ɛreḍ timerna n wawal"; +"key_backup_setup_passphrase_passphrase_valid" = "D ayen izaden!"; +"key_backup_setup_intro_setup_connect_action_with_existing_backup" = "Qqen tiɣimit-a ɣer uḥraz n tsarut"; +"key_backup_setup_skip_alert_message" = "Yezmer tesruḥeḍ anekcum ɣer yiznan-ik·im ma yella teffɣeḍ neɣ tesruḥeḍ ibenk-a."; +"secure_key_backup_setup_existing_backup_error_title" = "Aḥraz i yiznan yella yakan"; +"secure_key_backup_setup_intro_use_security_passphrase_title" = "Seqdec tafyirt tuffirt taɣellsant"; +"deactivate_account_informations_part4_emphasize" = "ur aɣ-isettu ara iznan i tuzneḍ s wudem amezwer. "; +"deactivate_account_informations_part3" = "\n\nAsensi n umiḍan-inek·inem "; +"deactivate_account_informations_part2_emphasize" = "Ulac tuɣalin ɣer deffir deg tigawt-a."; +"service_terms_modal_policy_checkbox_accessibility_hint" = "Senqed i wakken ad tqebleḍ %@"; + +// Service terms - Variant for identity server when displayed out of a context +"service_terms_modal_title_identity_server" = "Asnirem n unermis"; + +// GDPR +"gdpr_consent_not_given_alert_message" = "I wakken ad tkemmleḍ aseqdec n uqeddac agejdan %@ ilaq ad talseḍ asenqed syen ad tqebleḍ tiwtilin-nneɣ s umata."; + +// Room key request dialog +"e2e_room_key_request_title" = "Tasarut n uwgelhen tettusra"; + +// Widget +"widget_no_integrations_server_configured" = "Ulac aqeddac n yimsidaf yettusewlen"; +"call_already_displayed" = "Yella usiwel i iteddun akka tura."; +"camera_unavailable" = "Takamiṛat-ik·im ulac-itt ɣef yibenk-inek·inem"; +"rage_shake_prompt" = "Akka d-yettban tetthuzzuḍ tiliɣri s lxiq. Tebɣiḍ ad teldiḍ agdil i tuzna n wabug?"; +"bug_report_prompt" = "Asnas yerreẓ tikkelt-nni taneggarut. Tebɣiḍ ad teldiḍ agdil n uneqqis n truẓi?"; +"homeserver_connection_lost" = "Yegguma ad yeqqen ɣer uqeddac agejdan."; +"network_offline_prompt" = "Tuqqna internet tettban deg uskan aruqqin."; +"event_formatter_jitsi_widget_removed_by_you" = "Tekkseḍ asarag n VoIP"; +"group_participants_invite_malformed_id" = "Asulay ur yemsil ara akken iwata. Ilaq ad yili d asulay n Matrix am '@localpart:domain'"; +"group_participants_invite_malformed_id_title" = "Tuccḍa deg uncd"; +"group_participants_invite_another_user" = "Nadi / snubget s usulay n useqdac, Isem neɣ imayl"; +"group_participants_invite_prompt_msg" = "Tebɣiḍ s tidet ad d-tnecdeḍ %@ ɣer ugraw-a?"; +"group_participants_remove_prompt_msg" = "Tebɣiḍ s tidet ad tekkseḍ %@ seg ugraw-a?"; +"group_participants_leave_prompt_msg" = "S tidet tebɣiḍ ad teǧǧeḍ agraw?"; +"identity_server_settings_disconnect_info" = "Tuffɣa seg tuqqna n uqeddac-ik·im n timagit anamek-is dayen ur yettuɣal yiwen ad ak·akem-id-yaf daɣen ur tettizmireḍ ara ad d-necdeḍ wiyaḍ s yimayl neɣ s tiliɣri."; +"identity_server_settings_no_is_description" = "Akka tura ur tesseqdaceḍ aqeddac n timagit. I wakken ad d-tafeḍ daɣen ad d-tettwafeḍ sɣur yinermisen yellan i tessneḍ, rnu yiwen ddaw."; +"security_settings_crosssigning_info_exists" = "Amiḍan-inek·inem ɣer-s timagit n uzmul anmidag, maca mazal ur yettwaman ara sɣur taxxamt-a. Smed taɣellist n texxamt-a."; +"security_settings_crosssigning_info_not_bootstrapped" = "Azmul anmidag ùazalar tura ur yettusbadu ara."; +"settings_identity_server_no_is_description" = "Akka tura ur tesseqdaceḍ aqeddac n timagit. I wakken ad d-tafeḍ daɣen ad d-tettwafeḍ sɣur yinermisen yellan i tessneḍ, rnu yiwen ddaw."; +"settings_discovery_no_identity_server" = "Akka tura ur tesseqdaceḍ aqeddac n timagit. I wakken ad d-tettwafeḍ sɣur yinermisen yellan i tessneḍ, rnu yiwen."; +"settings_key_backup_info_not_valid" = "Tiɣimit-a ur tḥerrez ara tisura-inek·inem, maca ɣur-k·m aḥraz yellan yakan tzemreḍ ad d-terreḍ seg-s, wuɣur daɣen ad ternuḍ ɣer sdat."; +"settings_key_backup_info_signout_warning" = "Qqen tiɣimit-a ɣer uḥraz n tsura send ad teffɣeḍ seg tuqqna i wakken ad tḍemneḍ ur ttruḥunt ara tsura i yellan kan deg tɣimit-a."; +"settings_fail_to_update_password" = "Aleqqem n wawal uffir yecceḍ"; +"settings_labs_message_reaction" = "Sedmer iznan s yimujit"; +//"settings_enable_all_notif" = "Enable all notifications"; +//"settings_messages_my_display_name" = "Msg containing my display name"; +//"settings_messages_my_user_name" = "Msg containing my user name"; +//"settings_messages_sent_to_me" = "Messages sent to me"; +//"settings_invited_to_room" = "When i'm invited to a room"; +//"settings_join_leave_rooms" = "When people join or leave rooms"; +//"settings_call_invitations" = "Call invitations"; + +"settings_enable_callkit" = "Asiwel usliɣ"; +"settings_enable_push_notif" = "Ilɣa ɣef yibenk-a"; +"settings_config_no_build_info" = "Ulac akk talɣut n lebni"; +"room_resource_usage_limit_reached_message_2" = "kra n yiseqdacen ur ttizmiren ara ad kecmen."; +"room_participants_invite_malformed_id_title" = "Tuccḍa deg uncd"; +"room_participants_invite_another_user" = "Nadi / snubget s usulay n useqdac, Isem neɣ imayl"; +"room_participants_remove_third_party_invite_prompt_msg" = "Tebɣiḍ s tidet ad tesfesxeḍ tinnubga-a?"; +"contacts_address_book_permission_denied" = "Ur teǧǧiḍ ara Element ad yekcem ɣer yinermisen-ik·im idiganen"; +"directory_search_fail" = "Alqaḍ n yisefka yecceḍ"; +"room_creation_invite_another_user" = "Nadi / snubget s usulay n useqdac, Isem neɣ imayl"; +"auth_softlogout_clear_data_message_1" = "Ɣur-k·m: Isefka-inek·inem udmawanen (rnu ɣer-sen tisura n uwgelhen) mazal ttukelsent ɣef yibenk-a."; diff --git a/Riot/Assets/nb-NO.lproj/Vector.strings b/Riot/Assets/nb-NO.lproj/Vector.strings index 04293b0dc..be44defbb 100644 --- a/Riot/Assets/nb-NO.lproj/Vector.strings +++ b/Riot/Assets/nb-NO.lproj/Vector.strings @@ -585,3 +585,163 @@ "switch" = "Bytt"; "joined" = "Ble med"; "store_promotional_text" = "Personvernbevarende chat- og samarbeidsapp på et åpent nettverk. Desentralisert for å gi deg kontroll. Ingen datamining, ingen bakdører og ingen tredjepartsadgang."; +"auth_softlogout_reason" = "Hjemmeserveren din (%1$@) har logget deg ut av kontoen din %2$@ (%3$@)."; +"settings_show_decrypted_content" = "Vis dekryptert innhold"; +"settings_enable_push_notif" = "Varsler på denne enheten"; +"settings_three_pids_management_information_part3" = "."; +"settings_three_pids_management_information_part1" = "Administrer hvilke e-postadresser eller telefonnumre du kan bruke til å logge på eller gjenopprette kontoen din her. Kontroller hvem som kan finne deg i "; +"settings_fail_to_update_profile" = "Kunne ikke oppdatere profilen"; +"settings_email_address_placeholder" = "Skriv inn email adressen din"; +"settings_remove_phone_prompt_msg" = "Er du sikker på at du vil fjerne telefonnummeret %@?"; +"settings_remove_email_prompt_msg" = "Er du sikker på at du vil fjerne e-postadressen %@?"; +"settings_surname" = "Etternavn"; +"settings_sign_out_e2e_warn" = "Du mister end-to-end-krypteringsnøklene. Det betyr at du ikke lenger vil kunne lese gamle meldinger i krypterte rom på denne enheten."; +"settings_deactivate_account" = "DEAKTIVER KONTO"; +"settings_devices" = "SESSJONER"; +"settings_identity_server_settings" = "IDENTITETSSERVER"; +"settings_calls_settings" = "SAMTALER"; +"settings_config_user_id" = "Logget inn som %@"; +"settings_config_identity_server" = "Identitetsserver er %@"; +"settings_config_home_server" = "Hjemmeserver er %@"; +"settings_mark_all_as_read" = "Merk alle meldinger som lest"; +"settings_config_no_build_info" = "Ingen bygningsinfo"; +"account_logout_all" = "Logg ut alle kontoer"; +"room_preview_try_join_an_unknown_room_default" = "et rom"; +"room_preview_try_join_an_unknown_room" = "Du prøver å få tilgang til %@. Vil du være med for å delta i diskusjonen?"; +"room_preview_unlinked_email_warning" = "Denne invitasjonen ble sendt til %@, som ikke er tilknyttet denne kontoen. Det kan være lurt å logge på med en annen konto, eller legge til denne e-posten i kontoen din."; +"room_preview_subtitle" = "Dette er en forhåndsvisning av dette rommet. Rominteraksjoner er deaktivert."; + +// Room Preview +"room_preview_invitation_format" = "Du er invitert til å bli med i dette rommet av %@"; +"room_title_invite_members" = "Inviter medlemmer"; +"room_title_one_active_member" = "%@/%@ aktivt medlem"; +"room_title_multiple_active_members" = "%@/%@ aktive medlemmer"; +"unknown_devices_answer_anyway" = "Svar uansett"; +"unknown_devices_call_anyway" = "Ring uansett"; +"unknown_devices_send_anyway" = "Send uansett"; +"unknown_devices_alert" = "Dette rommet inneholder ukjente økter som ikke er bekreftet.\nDette betyr at det ikke er noen garanti for at øktene tilhører brukerne de hevder å.\nVi anbefaler at du går gjennom bekreftelsesprosessen for hver økt før du fortsetter, men du kan sende meldingen på nytt uten å bekrefte om du foretrekker det."; + +// Unknown devices +"unknown_devices_alert_title" = "Rommet inneholder ukjente økter"; +"room_accessibility_call" = "Ring"; +"room_resource_usage_limit_reached_message_contact_3" = " for å få denne grensen økt."; +"room_resource_usage_limit_reached_message_2" = "noen brukere vil ikke kunne logge på."; +"room_resource_usage_limit_reached_message_1_monthly_active_user" = "Denne hjemmeserveren har nådd grensen for månedlig aktiv bruker så "; +"room_resource_usage_limit_reached_message_1_default" = "Denne hjemmeserveren har overskredet en av sine ressursgrenser så "; +"room_resource_limit_exceeded_message_contact_3" = " for å fortsette å bruke denne tjenesten."; +"room_resource_limit_exceeded_message_contact_2_link" = "kontakt tjenesteadministratoren"; +"room_resource_limit_exceeded_message_contact_1" = " Vær så snill "; +"room_predecessor_link" = "Trykk her for å se eldre meldinger."; +"room_predecessor_information" = "Dette rommet er en fortsettelse av en annen samtale."; +"room_replacement_information" = "Dette rommet er erstattet og er ikke lenger aktivt."; +"room_action_send_sticker" = "Send klistremerke"; +"room_action_send_photo_or_video" = "Send bilde eller video"; +"room_event_failed_to_send" = "Mislykket sending"; +"room_warning_about_encryption" = "End-to-end-kryptering er i beta og er kanskje ikke pålitelig.\n\nDu bør ennå ikke stole på det for å sikre data.\n\nEnheter vil ennå ikke kunne dekryptere historikken fra før de ble med i rommet.\n\nKrypterte meldinger vil ikke være synlige på klienter som ennå ikke implementerer kryptering."; +"room_event_action_reaction_history" = "Reaksjonshistorikk"; +"room_event_action_view_encryption" = "Krypteringsinformasjon"; +"room_event_action_cancel_send" = "Avbryt Send"; +"room_event_action_report_prompt_ignore_user" = "Vil du skjule alle meldinger fra denne brukeren?"; +"room_event_action_report_prompt_reason" = "Årsak til å rapportere dette innholdet"; +"room_event_action_report" = "Rapporter innhold"; +"room_event_action_view_decrypted_source" = "Vis dekryptert kilde"; +"room_conference_call_no_power" = "Du trenger tillatelse for å administrere konferansesamtaler i dette rommet"; +"room_ongoing_conference_call_with_close" = "Pågående konferansesamtale. Bli med som %@ eller %@. %@ det."; +"room_ongoing_conference_call" = "Pågående konferansesamtale. Bli med som %@ eller %@."; +"room_unsent_messages_unknown_devices_notification" = "Meldingen ble ikke sendt på grunn av ukjente økter. %@ eller %@ nå?"; +"room_unsent_messages_notification" = "Meldinger ikke sendt. %@ eller %@ nå?"; +"room_offline_notification" = "Tilkoblingen til serveren har gått tapt."; +"encrypted_room_message_reply_to_placeholder" = "Send et kryptert svar…"; +"encrypted_room_message_placeholder" = "Send en kryptert melding…"; +"room_do_not_have_permission_to_post" = "Du har ikke tillatelse til å legge ut innlegg i dette rommet"; +"room_message_unable_open_link_error_message" = "Kan ikke åpne lenken."; +"room_message_reply_to_placeholder" = "Send et svar (ukryptert)…"; +"room_accessiblity_scroll_to_bottom" = "Bla til bunnen"; + +// Chat +"room_jump_to_first_unread" = "Gå til første uleste melding"; +"room_participants_security_information_room_encrypted_for_dm" = "Meldinger her er kryptert fra ende til ende.\n\nMeldingene dine er sikret med låser, og bare du og mottakeren har de unike nøklene for å låse dem opp."; +"room_participants_security_information_room_encrypted" = "Meldinger i dette rommet er kryptert fra ende til ende.\n\nMeldingene dine er sikret med låser, og bare du og mottakeren har de unike nøklene for å låse dem opp."; +"room_participants_security_information_room_not_encrypted_for_dm" = "Meldinger her er ikke kryptert fra ende til ende."; +"room_participants_security_information_room_not_encrypted" = "Meldinger i dette rommet er ikke kryptert fra ende til ende."; +"room_participants_action_mention" = "Nevne"; +"room_participants_action_start_video_call" = "Start videosamtale"; +"room_participants_action_start_voice_call" = "Start taleanrop"; +"room_participants_action_start_new_chat" = "Start ny chat"; +"room_participants_action_set_default_power_level" = "Tilbakestill til normal bruker"; +"room_participants_action_unignore" = "Vis alle meldinger fra denne brukeren"; +"room_participants_action_ignore" = "Skjul alle meldinger fra denne brukeren"; +"room_participants_action_section_admin_tools" = "Administrasjonsverktøy"; +"room_participants_start_new_chat_error_using_user_email_without_identity_server" = "Ingen identitetsserver er konfigurert, så du kan ikke starte en prat med en kontakt ved hjelp av en e-post."; +"room_participants_invite_malformed_id" = "Misdannet ID. Bør være en e-postadresse eller en matrix-ID som '@localpart: domain'"; +"room_participants_invite_malformed_id_title" = "Inviter feil"; +"room_participants_invite_another_user" = "Søk / inviter etter bruker-ID, navn eller e-post"; +"room_participants_filter_room_members_for_dm" = "Filtrer medlemmer"; +"room_participants_invite_prompt_msg" = "Er du sikker på at du vil invitere %@ til denne chatten?"; +"room_participants_remove_third_party_invite_prompt_msg" = "Er du sikker på at du vil tilbakekalle denne invitasjonen?"; +"room_participants_remove_prompt_msg" = "Er du sikker på at du vil fjerne %@ fra denne chatten?"; +"room_participants_leave_prompt_msg_for_dm" = "Er du sikker på at du vil dra?"; +"room_participants_leave_prompt_msg" = "Er du sikker på at du vil forlate rommet?"; +"room_participants_leave_prompt_title_for_dm" = "Forlat"; +"contacts_address_book_permission_denied" = "Du tillot ikke Element å få tilgang til de lokale kontaktene dine"; +"contacts_address_book_permission_required" = "Tillatelse kreves for å få tilgang til lokale kontakter"; +"contacts_address_book_no_contact" = "Ingen lokale kontakter"; +"contacts_address_book_no_identity_server" = "Ingen identitetsserver konfigurert"; +"contacts_address_book_matrix_users_toggle" = "Kun Matrix brukere"; +"directory_search_fail" = "Kunne ikke hente data"; +"directory_search_results" = "%tu resultater funnet for %@"; +"search_people_placeholder" = "Søk etter bruker-ID, navn eller e-post"; +"group_section" = "FELLESSKAPER"; +"rooms_empty_view_information" = "Rommene er ypperlige for enhver gruppechat, privat eller offentlig. Trykk på + for å finne eksisterende rom, eller lage nye."; +"rooms_empty_view_title" = "Rom"; + +// Rooms tab +"room_directory_no_public_room" = "Ingen offentlige rom tilgjengelig"; +"people_empty_view_information" = "Chat sikkert med hvem som helst. Trykk på + for å begynne å legge til folk."; +"people_empty_view_title" = "Folk"; +"room_recents_join_room_prompt" = "Skriv inn et rom-ID eller et romalias"; +"room_recents_start_chat_with" = "Start chat"; +"room_recents_server_notice_section" = "SYSTEMVARSLER"; +"room_recents_low_priority_section" = "LAV PRIORITET"; +"room_recents_no_conversation" = "Ingen rom"; +"room_recents_conversations_section" = "ROM"; +"room_recents_people_section" = "FOLK"; +"room_recents_favourites_section" = "FAVORITTER"; +"room_creation_error_invite_user_by_email_without_identity_server" = "Ingen identitetsserver er konfigurert, så du kan ikke legge til en deltaker med en e-post."; +"room_creation_invite_another_user" = "Søk / inviter etter bruker-ID, navn eller e-post"; +"room_creation_wait_for_creation" = "Det opprettes allerede et rom. Vennligst vent."; +"room_creation_make_private" = "Gjør privat"; +"room_creation_keep_private" = "Hold deg privat"; +"room_creation_make_public_prompt_msg" = "Er du sikker på at du vil gjøre denne chatten offentlig? Alle kan lese meldingene dine og delta i chatten."; +"room_creation_make_public_prompt_title" = "Vil du gjøre denne chatten offentlig?"; +"room_creation_make_public" = "Gjør offentlig"; +"room_creation_appearance_picture" = "Chatbilde (valgfritt)"; + +// Errors +"error_user_already_logged_in" = "Det ser ut til at du prøver å koble til en annen hjemmeserver. Vil du logge av?"; +"auth_softlogout_clear_data_sign_out_msg" = "Er du sikker på at du vil slette alle data som er lagret på denne enheten? Logg på igjen for å få tilgang til kontodataene og meldingene dine."; +"auth_softlogout_clear_data_message_2" = "Fjern det hvis du er ferdig med å bruke denne enheten, eller hvis du vil logge på en annen konto."; +"auth_softlogout_clear_data_message_1" = "Advarsel: Dine personlige data (inkludert krypteringsnøkler) er fortsatt lagret på denne enheten."; +"auth_softlogout_recover_encryption_keys" = "Logg på for å gjenopprette krypteringsnøkler som er lagret eksklusivt på denne enheten. Du trenger dem for å lese alle dine sikre meldinger på en hvilken som helst enhet."; +"auth_autodiscover_invalid_response" = "Ugyldig svar på hjemmeserver"; +"auth_accept_policies" = "Vennligst gjennomgå og godta retningslinjene til denne hjemmeserveren:"; +"auth_add_email_and_phone_warning" = "Registrering med e-post og telefonnummer på en gang støttes ikke ennå før api eksisterer. Bare telefonnummeret blir tatt i betraktning. Du kan legge til e-postmeldingen din i profilen din i innstillingene."; +"auth_reset_password_success_message" = "Passordet ditt har blitt tilbakestilt.\n\nDu er logget ut av alle økter og vil ikke lenger motta push-varsler. For å aktivere varsler på nytt, logg på på nytt på hver enhet."; +"auth_reset_password_error_is_required" = "Ingen identitetsserver er konfigurert: legg til en i serveralternativene for å tilbakestille passordet ditt."; +"auth_reset_password_error_not_found" = "E-postadressen din ser ikke ut til å være tilknyttet en Matrix-ID på denne hjemmeserveren."; +"auth_reset_password_error_unauthorized" = "Kunne ikke bekrefte e-postadressen: sørg for at du har klikket på lenken i e-posten"; +"auth_reset_password_email_validation_message" = "En e-post er sendt til %@. Når du har fulgt lenken den inneholder, klikker du nedenfor."; +"auth_reset_password_missing_password" = "Det må oppgis et nytt passord."; +"auth_reset_password_missing_email" = "E-postadressen som er knyttet til kontoen din, må oppgis."; +"auth_reset_password_message" = "For å tilbakestille passordet ditt, skriv inn e-postadressen som er knyttet til kontoen din:"; +"auth_recaptcha_message" = "Denne hjemmeserveren vil sørge for at du ikke er en robot"; +"auth_msisdn_validation_message" = "Vi har sendt en SMS med en aktiveringskode. Vennligst skriv inn denne koden nedenfor."; +"auth_email_validation_message" = "Sjekk e-postadressen din for å fortsette registreringen"; +"auth_use_server_options" = "Bruk tilpassede serveralternativer (avansert)"; +"auth_email_not_found" = "Kunne ikke sende e-post: Denne e-postadressen ble ikke funnet"; +"auth_forgot_password_error_no_configured_identity_server" = "Ingen identitetsserver er konfigurert: legg til en for å tilbakestille passordet ditt."; +"auth_untrusted_id_server" = "Identitetsserveren er ikke klarert"; +"auth_phone_is_required" = "Ingen identitetsserver er konfigurert, så du kan ikke legge til et telefonnummer for å tilbakestille passordet ditt i fremtiden."; +"auth_email_is_required" = "Ingen identitetsserver er konfigurert, så du kan ikke legge til en e-postadresse for å tilbakestille passordet ditt i fremtiden."; +"active_call_details" = "Aktiv samtale (%@)"; +"active_call" = "Aktiv samtale"; diff --git a/Riot/Assets/nb.lproj/InfoPlist.strings b/Riot/Assets/nb.lproj/InfoPlist.strings new file mode 100644 index 000000000..ede4574fd --- /dev/null +++ b/Riot/Assets/nb.lproj/InfoPlist.strings @@ -0,0 +1,10 @@ + + + +"NSFaceIDUsageDescription" = "Face ID brukes til å få tilgang til appen din."; +"NSCalendarsUsageDescription" = "Se de planlagte møtene dine i appen."; +"NSContactsUsageDescription" = "For å oppdage kontakter som allerede bruker Matrix, kan Element sende e-postadresser og telefonnummer i adresseboken til den valgte Matrix-identitetsserveren. Der det støttes, hasheres personlige data før sending - vennligst sjekk identitetsserverens personvernregler for mer informasjon."; +"NSMicrophoneUsageDescription" = "Mikrofonen brukes til å ta videoer, ringe."; +"NSPhotoLibraryUsageDescription" = "Fotobiblioteket brukes til å sende bilder og videoer."; +// Permissions usage explanations +"NSCameraUsageDescription" = "Kameraet brukes til å ta bilder og videoer, ringe videosamtaler."; diff --git a/Riot/Assets/nb.lproj/Localizable.strings b/Riot/Assets/nb.lproj/Localizable.strings new file mode 100644 index 000000000..a881afa33 --- /dev/null +++ b/Riot/Assets/nb.lproj/Localizable.strings @@ -0,0 +1,67 @@ + + + + +/* Look, stuff's happened, alright? Just open the app. */ +"MSGS_IN_TWO_PLUS_ROOMS" = "%@ nye meldinger i %@, %@ og andre"; + +/* Multiple messages in two rooms */ +"MSGS_IN_TWO_ROOMS" = "%@ nye meldinger i %@ og %@"; + +/* Multiple unread messages from two plus people (ie. for 4+ people: 'others' replaces the third person) */ +"MSGS_FROM_TWO_PLUS_USERS" = "%@ nye meldinger fra %@, %@ og andre"; + +/* Multiple unread messages from three people */ +"MSGS_FROM_THREE_USERS" = "%@ nye meldinger fra %@, %@ og %@"; + +/* Multiple unread messages from two people */ +"MSGS_FROM_TWO_USERS" = "%@ nye meldinger fra %@ og %@"; + +/* Multiple unread messages from a specific person, not referencing a room */ +"MSGS_FROM_USER" = "%@ nye meldinger i %@"; + +/** Coalesced messages **/ + +/* Multiple unread messages in a room */ +"UNREAD_IN_ROOM" = "%@ nye meldinger i %@"; +"MESSAGE_PROTECTED" = "Ny Melding"; + +/* New message indicator on a room */ +"MESSAGE_IN_X" = "Melding i %@"; + +/* New message indicator from a DM */ +"MESSAGE_FROM_X" = "Melding fra %@"; + +/** Notification messages **/ + +/* New message indicator on unknown room */ +"MESSAGE" = "Melding"; + +/* Sticker from a specific person, not referencing a room. */ +"STICKER_FROM_USER" = "%@ sendte et klistremerke"; + +/** Image Messages **/ + +/* New action message from a specific person, not referencing a room. */ +"IMAGE_FROM_USER" = "%@ sendte et bilde %@"; + +/* New action message from a specific person in a named room. */ +"ACTION_FROM_USER_IN_ROOM" = "%@: * %@ %@"; + +/* New action message from a specific person, not referencing a room. */ +"ACTION_FROM_USER" = "* %@ %@"; + +/* New message from a specific person in a named room. Content included. */ +"MSG_FROM_USER_IN_ROOM_WITH_CONTENT" = "%@ i %@: %@"; + +/** Single, unencrypted messages (where we can include the content */ + +/* New message from a specific person, not referencing a room. Content included. */ +"MSG_FROM_USER_WITH_CONTENT" = "%@: %@"; +/* Message title for a specific person in a named room */ +"MSG_FROM_USER_IN_ROOM_TITLE" = "%@ i %@"; + +/** Single, end-to-end encrypted messages (ie. we don't know what they say) */ + +/* New message from a specific person, not referencing a room */ +"MSG_FROM_USER" = "%@ sendte en melding"; diff --git a/Riot/Assets/pt_BR.lproj/Vector.strings b/Riot/Assets/pt_BR.lproj/Vector.strings index ff5537534..a2582a618 100644 --- a/Riot/Assets/pt_BR.lproj/Vector.strings +++ b/Riot/Assets/pt_BR.lproj/Vector.strings @@ -559,7 +559,7 @@ // String for App Store "store_short_description" = "Conversas e chamadas: seguras e descentralizadas"; "store_full_description" = "O Element é um novo tipo de aplicativo de comunicação e colaboração que:↵\n↵\n1. Coloca você no controle de sua privacidade;↵\n2. Permite que você se comunique com qualquer pessoa na rede Matrix, e até mais além, integrando-se a aplicativos como o Slack;↵\n3. Protege você de publicidade, mineração de dados, backdoors e ecossistemas fechados;↵\n4. Protege você por meio da criptografia de ponta a ponta, com autoverificação para confirmar outras pessoas.↵\n↵\nO Element é completamente diferente de outros aplicativos de mensagens e colaboração porque é descentralizado e de código aberto.↵\n↵\nO Element permite que você use seu próprio servidor - ou escolha uma alternativa de armazenamento - para ter privacidade, propriedade e controle de seus dados e conversas. Dá acesso a uma rede aberta; para que você não fique falando apenas com outros usuários do Element. E é muito seguro.↵\n↵\nO Element é capaz de fazer tudo isso porque opera na rede Matrix - o padrão para comunicação aberta e descentralizada.↵\n↵\nO Element coloca você no controle, permitindo escolher quem armazena suas conversas. No aplicativo do Element, você pode optar por armazenar de diferentes maneiras:↵\n↵\n1. Obtenha uma conta gratuita no servidor público matrix.org↵\n2. Armazene sua conta automaticamente, executando um servidor em seu próprio hardware↵\n3. Inscreva-se em uma conta para um servidor personalizado, basta se inscrever na plataforma de armazenamento do Element Matrix Services↵\n↵\nPor que escolher o Element?↵\n↵\nPOSSUA SEUS DADOS: você decide onde guardar seus dados e mensagens. Você os possui e controla, e não alguma MEGA CORPORAÇÃO que vende seus dados ou dá acesso a terceiros.↵\n↵\nMENSAGEM ABERTA E COLABORAÇÃO: você pode conversar com qualquer outra pessoa na rede Matrix, esteja ela usando o Element ou outro aplicativo que se conecta na rede Matrix. E mesmo se estiverem usando um sistema de mensagens diferente, como Slack, IRC ou XMPP.↵\n↵\nSUPER SEGURO: criptografia real de ponta a ponta (somente aqueles na conversa podem descriptografar as mensagens) e autoverificação para confirmar os aparelhos dos participantes da conversa.↵\n↵\nCOMUNICAÇÃO COMPLETA: mensagens, chamadas de voz e de vídeo, compartilhamento de arquivos, compartilhamento de tela e um monte de integrações, bots e widgets. Crie salas, comunidades, mantenha contato e faça as coisas acontecerem.↵\n↵\nONDE QUER QUE VOCÊ ESTEJA: mantenha contato onde quer que você esteja, com o histórico de mensagens totalmente sincronizado em todos os seus aparelhos e no navegador de internet em https://element.io/app."; -"auth_login_single_sign_on" = "Entre com o logon único"; +"auth_login_single_sign_on" = "Entrar"; "auth_autodiscover_invalid_response" = "Resposta de descoberta inválida no servidor local"; "room_message_unable_open_link_error_message" = "Não foi possível abrir o link."; "settings_key_backup" = "BACKUP DA CHAVE"; @@ -1235,8 +1235,34 @@ "secrets_recovery_reset_action_part_2" = "Redefinir tudo"; "secrets_setup_recovery_passphrase_summary_information" = "Lembre-se da sua frase de segurança. Ela pode ser usada para desbloquear suas mensagens e dados criptografados."; "secrets_setup_recovery_passphrase_summary_title" = "Salve a sua frase de segurança"; -"home_empty_view_information" = "O aplicativo de conversas seguro e completo para equipes, amigos e organizações. Toque no botão \"+\" abaixo para adicionar pessoas e salas."; +"home_empty_view_information" = "O aplicativo de conversas seguro e completo para equipes, amigos e organizações. Toque no botão + abaixo para adicionar pessoas e salas."; // MARK: - Home -"home_empty_view_title" = "Boas-vindas ao Element,\n%@"; +"home_empty_view_title" = "Boas-vindas ao %@,\n%@"; +"people_empty_view_title" = "Pessoas"; +"favourites_empty_view_information" = "Você pode adicionar aos favoritos de algumas maneiras - a mais rápida é simplesmente pressionar e segurar. Toque na estrela e eles aparecerão automaticamente aqui, para fins de segurança."; + +// MARK: - Favourites + +"favourites_empty_view_title" = "Salas e pessoas favoritas"; +"rooms_empty_view_information" = "Salas são ótimas para qualquer conversa em grupo, privada ou pública. Toque em + para encontrar salas existentes ou crie novas."; +"rooms_empty_view_title" = "Salas"; +"people_empty_view_information" = "Converse com segurança com qualquer pessoa. Toque em + para começar a adicionar pessoas."; +"invite_friends_share_text" = "Ei, converse comigo no %@: %@"; + +// MARK: - Invite friends + +"invite_friends_action" = "Convidar amigos para o %@"; +"pin_protection_settings_change_pin" = "Alterar o PIN"; +"pin_protection_confirm_pin_to_change" = "Confirme o PIN para alterá-lo"; +"bug_report_background_mode" = "Continuar em segundo plano"; +"social_login_button_title_sign_up" = "Registrar-se com %@"; +"social_login_button_title_sign_in" = "Entrar com %@"; +"social_login_button_title_continue" = "Continuar com %@"; +"social_login_list_title_sign_up" = "Ou registrar-se com"; +"social_login_list_title_sign_in" = "Ou entrar com"; + +// Social login + +"social_login_list_title_continue" = "Continuar com"; diff --git a/Riot/Assets/ru.lproj/Vector.strings b/Riot/Assets/ru.lproj/Vector.strings index 086c3a63d..3ad1ec882 100644 --- a/Riot/Assets/ru.lproj/Vector.strings +++ b/Riot/Assets/ru.lproj/Vector.strings @@ -670,7 +670,7 @@ // String for App Store "store_short_description" = "Безопасный децентрализованный чат/VoIP"; "store_full_description" = "Element - это новый тип мессенджера и приложения для совместной работы, которое:\n\n1. Ставит вас под контроль, чтобы сохранить вашу частную жизнь\n2. Позволяет вам общаться с кем угодно в cети Matrix и даже за ее пределами, интегрируясь с такими приложениями, как Slack\n3. Защищает вас от рекламы, сбора данных, бэкдоров и огороженных стеной садов\n4. Обеспечивает безопасность с помощью сквозного шифрования с кросс-подписью для проверки других пользователей\n\nElement полностью отличается от других приложений для обмена сообщениями и совместной работы, поскольку он децентрализован и имеет открытый исходный код.\n\nElement позволяет вам самостоятельно разместить или выбрать хост так, чтобы у вас была конфиденциальность, право собственности и контроль над вашими данными и разговорами. Это дает вам доступ к открытой сети; так чтобы вы не были ограничены, разговаривая только с другими пользователями Element. И это очень безопасно.\n\nElement способен делать все это, потому что он работает на Matrix - стандарте открытой, децентрализованной коммуникации.\n\nElement дает вам возможность контролировать, позволяя вам выбирать, кто будет вести ваши разговоры. В приложении Element вы можете выбрать размещение различными способами:\n\n1. Получите бесплатный аккаунт на сайте matrix.org - это публичный сервер\n2. Самостоятельно разместите свою учетную запись, запустив сервер на собственном оборудовании\n3. Подпишитесь на учетную запись на пользовательском сервере, просто подписавшись на хостинг-платформу Element Matrix Services\n\nПочему нужно использовать Element?\n\nВЛАДЕЙТЕ ВАШИМИ ДАННЫМИ: вы сами решаете, где хранить ваши данные и сообщения. Вы владеете ими и контролируете их, а не какая-то мегакорпорация, которая добывает ваши данные или предоставляет к ним доступ третьим лицам.\n\nОТКРЫТОЕ ОБЩЕНИЕ И СОВМЕСТНАЯ РАБОТА: вы можете общаться с кем угодно в сети Matrix, независимо от того, используют ли сам Element или другое приложение Matrix, и даже если они используют другую систему обмена сообщениями, такую как Slack, IRC или XMPP.\n\nАБСОЛЮТНАЯ БЕЗОПАСНОСТЬ: реальное сквозное шифрование (только те, кто находится в разговоре, могут расшифровывать сообщения) и кросс-подпись для проверки устройств участников разговора.\n\nСОВЕРШЕННАЯ КОММУНИКАЦИЯ: обмен сообщениями, голосовые и видеозвонки, общий доступ к файлам, общий доступ к экрану и целая куча интеграций, ботов и виджетов. Создавайте комнаты, сообщества, оставайтесь на связи и делайте все возможное.\n\nГДЕ БЫ ВЫ НЕ БЫЛИ: оставайтесь на связи, где бы вы ни находились, с полностью синхронизированной историей сообщений на всех ваших устройствах и в Интернете по адресу https://element.io/app."; -"auth_login_single_sign_on" = "Войти с помощью единого входа (sign-on)"; +"auth_login_single_sign_on" = "Войти"; "room_message_unable_open_link_error_message" = "Невозможно открыть ссылку."; "auth_autodiscover_invalid_response" = "Неверный ответ обнаружения сервера"; "room_event_action_reply" = "Ответ"; @@ -1247,10 +1247,36 @@ "secrets_recovery_reset_action_part_1" = "Забыли или потеряли все варианты восстановления? "; "less" = "Меньше"; -"home_empty_view_information" = "Комплексное безопасное приложение для общения в чате для команд, друзей и организаций. Нажмите кнопку \"+\" внизу, чтобы добавить людей и комнаты."; +"home_empty_view_information" = "Комплексное безопасное приложение для общения в чате для команд, друзей и организаций. Нажмите кнопку + внизу, чтобы добавить людей и комнаты."; // MARK: - Home -"home_empty_view_title" = "Добро пожаловать в Element!\n%@"; +"home_empty_view_title" = "Добро пожаловать в %@,\n%@"; "secrets_setup_recovery_passphrase_summary_information" = "Запомните свою секретную фразу. Её можно использовать для разблокировки ваших зашифрованных сообщений и данных."; "secrets_setup_recovery_passphrase_summary_title" = "Сохраните вашу секретную фразу"; +"favourites_empty_view_information" = "Вы можете добавить в избранное несколькими способами - самый быстрый - просто нажать и удерживать. Нажмите на звёздочку, и они автоматически появятся здесь, и вы их навсегда сохраните."; + +// MARK: - Favourites + +"favourites_empty_view_title" = "Избранные комнаты и люди"; +"rooms_empty_view_information" = "Комнаты отлично подходят для любого группового чата, приватного или публичного. Коснитесь +, чтобы найти существующие комнаты или создать новые."; +"rooms_empty_view_title" = "Комнаты"; +"people_empty_view_information" = "Общайтесь в безопасном чате с кем угодно. Нажмите +, чтобы начать добавлять людей."; +"people_empty_view_title" = "Люди"; +"invite_friends_share_text" = "Эй, поговори со мной в %@: %@"; + +// MARK: - Invite friends + +"invite_friends_action" = "Пригласить друзей в %@"; +"pin_protection_confirm_pin_to_change" = "Подтвердите PIN-код, чтобы изменить PIN-код"; +"pin_protection_settings_change_pin" = "Изменить PIN-код"; +"bug_report_background_mode" = "Продолжить в фоне"; +"social_login_button_title_sign_up" = "Зарегистрироваться через %@"; +"social_login_button_title_sign_in" = "Войти в систему через %@"; + +// Social login + +"social_login_list_title_continue" = "Продолжить с"; +"social_login_button_title_continue" = "Продолжить с %@"; +"social_login_list_title_sign_up" = "Или зарегистрируйтесь через"; +"social_login_list_title_sign_in" = "Или войдите через"; diff --git a/Riot/Assets/sl.lproj/Vector.strings b/Riot/Assets/sl.lproj/Vector.strings new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/Riot/Assets/sl.lproj/Vector.strings @@ -0,0 +1 @@ + diff --git a/Riot/Assets/sq.lproj/Vector.strings b/Riot/Assets/sq.lproj/Vector.strings index f70225401..112644270 100644 --- a/Riot/Assets/sq.lproj/Vector.strings +++ b/Riot/Assets/sq.lproj/Vector.strings @@ -1252,3 +1252,17 @@ "secrets_recovery_reset_action_part_2" = "Riktheni gjithçka te parazgjedhjet"; "secrets_setup_recovery_passphrase_summary_information" = "Mbani mend Frazën tuaj të Sigurisë. Mund të përdoret për të shkyçur mesazhet & të dhëna tuajat të fshehtëzuara."; "secrets_setup_recovery_passphrase_summary_title" = "Ruani Frazën tuaj të Sigurisë"; +"favourites_empty_view_information" = "Dikujt ose diçkaje mund t’i vini shenjë si i parapëlqyer me disa mënyra - më e shpejta është thjesht ta shtypni dhe ta mbani të shtypur. Prekni yllin dhe do të shfaqen këtu, për ruajtje të sigurt."; + +// MARK: - Favourites + +"favourites_empty_view_title" = "Dhoma dhe persona të parapëlqyer"; +"home_empty_view_information" = "Aplikacioni “all-in-one” për fjalosje të sigurt, me ekipe, shokë dhe ente. Prekni butonin + më poshtë, që të shtoni persona dhe dhoma."; + +// MARK: - Home + +"home_empty_view_title" = "Mirë se vini te %@,\n%@"; +"rooms_empty_view_information" = "Dhomat janë të goditura për çfarëdo fjalosjeje në grup, private ose publike. Prekni + që të gjeni dhoma ekzistuese, ose të krijoni të reja."; +"rooms_empty_view_title" = "Dhoma"; +"people_empty_view_information" = "Fjalosuni në mënyrë të sigurt me këdo. Prekni + që të filloni të shtoni persona."; +"people_empty_view_title" = "Njerëz"; diff --git a/Riot/Assets/sv.lproj/Vector.strings b/Riot/Assets/sv.lproj/Vector.strings index 20b09df94..5da224c27 100644 --- a/Riot/Assets/sv.lproj/Vector.strings +++ b/Riot/Assets/sv.lproj/Vector.strings @@ -407,7 +407,7 @@ "client_desktop_name" = "Element Skrivbord"; "client_web_name" = "Element Webb"; "auth_submit" = "Skicka"; -"auth_login_single_sign_on" = "Logga in med externt konto"; +"auth_login_single_sign_on" = "Logga in"; "auth_send_reset_email" = "Skicka återställningsmeddelande"; "auth_return_to_login" = "Gå tillbaka till inloggningsskärmen"; "auth_home_server_placeholder" = "URL (t.ex. https://matrix.org)"; @@ -1203,3 +1203,34 @@ "secrets_reset_warning_title" = "Om du återställer allt"; "secrets_setup_recovery_passphrase_summary_information" = "Kom ihåg din säkerhetsfras. Den kan användas för att låsa upp dina krypterade meddelanden och data."; "secrets_setup_recovery_passphrase_summary_title" = "Spara din säkerhetsfras"; +"favourites_empty_view_information" = "Du kan favoritmarkera på flera sätt - den snabbaste är att bar trycka och hålla in. Tryck på stjärnan så hamnar de automatiskt här för att var lättillgängliga."; + +// MARK: - Favourites + +"favourites_empty_view_title" = "Favoritmarkerade rum och personer"; +"home_empty_view_information" = "En säker allt-i-ett-chattapp för lag, vänner och organisationer. Tryck på +nedan för att lägga till personer och rum."; + +// MARK: - Home + +"home_empty_view_title" = "Välkommen till %@,\n%@"; +"rooms_empty_view_information" = "Rum är bra för vilken gruppchatt som helst, privat eller offentlig. Tryck på + för att hitta existerande rum eller skapa nya."; +"rooms_empty_view_title" = "Rum"; +"people_empty_view_information" = "Chatta säkert med vem som helst. Tryck på + för att börja lägga till folk."; +"people_empty_view_title" = "Personer"; +"invite_friends_share_text" = "Hallå där, prata med mig på %@: %@"; + +// MARK: - Invite friends + +"invite_friends_action" = "Bjud in vänner till %@"; +"pin_protection_settings_change_pin" = "Byt PIN-kod"; +"pin_protection_confirm_pin_to_change" = "Bekräfta PIN-kod för att fortsätta"; +"bug_report_background_mode" = "Fortsätt i bakgrunden"; +"social_login_button_title_sign_up" = "Skapa konto med %@"; +"social_login_button_title_sign_in" = "Logga in med %@"; +"social_login_button_title_continue" = "Fortsätt med %@"; +"social_login_list_title_sign_up" = "Eller registrera med"; +"social_login_list_title_sign_in" = "Eller logga in med"; + +// Social login + +"social_login_list_title_continue" = "Fortsätt med"; diff --git a/Riot/Assets/szl.lproj/InfoPlist.strings b/Riot/Assets/szl.lproj/InfoPlist.strings new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/Riot/Assets/szl.lproj/InfoPlist.strings @@ -0,0 +1 @@ + diff --git a/Riot/Assets/szl.lproj/Localizable.strings b/Riot/Assets/szl.lproj/Localizable.strings new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/Riot/Assets/szl.lproj/Localizable.strings @@ -0,0 +1 @@ + diff --git a/Riot/Assets/szl.lproj/Vector.strings b/Riot/Assets/szl.lproj/Vector.strings new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/Riot/Assets/szl.lproj/Vector.strings @@ -0,0 +1 @@ + diff --git a/Riot/Assets/uk.lproj/Vector.strings b/Riot/Assets/uk.lproj/Vector.strings index 49cc7bbd4..56ac63b7b 100644 --- a/Riot/Assets/uk.lproj/Vector.strings +++ b/Riot/Assets/uk.lproj/Vector.strings @@ -138,7 +138,7 @@ "client_desktop_name" = "Element Desktop"; "client_web_name" = "Element Web"; "client_ios_name" = "Element iOS"; -"auth_login_single_sign_on" = "Увійти за допомогою єдиного входу"; +"auth_login_single_sign_on" = "Увійти"; "room_creation_invite_another_user" = "Пошук / запрошення по ідентифікатору користувача, імені або адреси електронної пошти"; "room_creation_error_invite_user_by_email_without_identity_server" = "Сервер ідентифікації не налаштовано, тому ви не можете додати учасника з е-поштою."; // Room recents @@ -236,3 +236,49 @@ "settings_phone_number" = "Телефон"; "settings_add_email_address" = "Додати адресу електронної пошти"; "settings_email_address_placeholder" = "Введіть вашу адресу електронної пошти"; +"room_title_one_active_member" = "%@/%@ активний учасник"; + +// Group Details +"group_details_title" = "Подробиці спільноти"; +"group_details_home" = "Домівка"; +"group_participants_invite_prompt_title" = "Підтвердження"; +"group_participants_remove_prompt_title" = "Підтвердження"; +"group_participants_leave_prompt_msg" = "Ви впевнені, що хочете покинути групу?"; +"group_participants_leave_prompt_title" = "Покинути групу"; + +// Group participants +"group_participants_add_participant" = "Додати учасника"; +"room_title_members" = "%@ учасників"; +"room_info_list_several_members" = "%@ учасників"; +"group_invitation_format" = "%@ запрошує вас приєднатися до спільноти"; +"group_home_multi_rooms_format" = "%tu кімнат"; +"group_home_one_room_format" = "1 кімната"; +"group_home_multi_members_format" = "%tu учасників"; +"room_title_one_member" = "1 учасник"; + +// MARK: - Room Info + +"room_info_list_one_member" = "1 учасник"; + +// Group Home +"group_home_one_member_format" = "1 учасник"; +"group_details_rooms" = "Кімнати"; +"rooms_empty_view_title" = "Кімнати"; +"group_details_people" = "Люди"; +"people_empty_view_title" = "Люди"; +"social_login_button_title_sign_up" = "Приєднатися через %@"; +"social_login_button_title_sign_in" = "Увійти через %@"; +"social_login_list_title_sign_up" = "Або зареєструватися через"; +"social_login_list_title_sign_in" = "Або увійти через"; +"settings_discovery_three_pid_details_revoke_action" = "Відкликати"; +"settings_discovery_three_pid_details_share_action" = "Поділитися"; +"room_event_action_share" = "Поділитися"; +"social_login_button_title_continue" = "Продовжити з %@"; + +// Social login + +"social_login_list_title_continue" = "Продовжити з"; +"less" = "Менше"; +"room_event_action_more" = "Більше"; +"more" = "Більше"; +"joined" = "Долучається"; diff --git a/Riot/Assets/zh_Hans.lproj/Vector.strings b/Riot/Assets/zh_Hans.lproj/Vector.strings index d75c4292f..2dcf813a0 100644 --- a/Riot/Assets/zh_Hans.lproj/Vector.strings +++ b/Riot/Assets/zh_Hans.lproj/Vector.strings @@ -252,7 +252,7 @@ "settings_labs" = "实验室"; "settings_devices" = "会话"; "settings_cryptography" = "加密"; -"settings_sign_out" = "注销"; +"settings_sign_out" = "退出"; "settings_sign_out_confirmation" = "你确定?"; "settings_sign_out_e2e_warn" = "您将丢失所有端对端加密密钥。这意味着在此设备上您将再也无法阅读已加密聊天室里的旧消息。"; "settings_profile_picture" = "档案图片"; @@ -503,18 +503,18 @@ "room_resource_limit_exceeded_message_contact_1" = " 请 "; "room_resource_limit_exceeded_message_contact_2_link" = "联系您的服务管理员"; "room_resource_limit_exceeded_message_contact_3" = " 以继续使用本服务。"; -"settings_deactivate_account" = "注销账户"; +"settings_deactivate_account" = "停用帐户"; "settings_labs_room_members_lazy_loading" = "延迟加载聊天室成员"; "settings_labs_room_members_lazy_loading_error_message" = "您的主服务器尚不支持延迟加载聊天室成员。请稍后再试。"; -"settings_deactivate_my_account" = "注销我的账户"; +"settings_deactivate_my_account" = "停用我的帐户"; "event_formatter_jitsi_widget_added" = "VoIP 会议已被 %@ 添加"; "event_formatter_rerequest_keys_part1_link" = "重新请求加密密钥"; "event_formatter_rerequest_keys_part2" = " (从您的其他会话中)。"; "homeserver_connection_lost" = "无法连接至主服务器。"; "call_jitsi_error" = "电话会议加入失败。"; "deactivate_account_forget_messages_information_part2_emphasize" = "警告"; -"deactivate_account_validate_action" = "注销账户"; -"deactivate_account_password_alert_title" = "注销账户"; +"deactivate_account_validate_action" = "停用账户"; +"deactivate_account_password_alert_title" = "停用账户"; // Re-request confirmation dialog "rerequest_keys_alert_title" = "请求已发送"; "settings_callkit_info" = "在锁屏上接收来电。在系统通话记录中查看你的Element通话。如果启用iCloud,此通话记录将与苹果公司共享。"; @@ -579,13 +579,13 @@ // GDPR "gdpr_consent_not_given_alert_message" = "要继续使用该 %@ 主服务器,您必须查看并同意其服务条款和条件。"; "gdpr_consent_not_given_alert_review_now_action" = "立即查看"; -"deactivate_account_title" = "注销账户"; +"deactivate_account_title" = "停用帐户"; "deactivate_account_informations_part1" = "这将使您的账号永久无法使用。 您将无法登录,也无法重新注册相同的用户 ID 。 这将导致您的账号离开其参与的所有聊天室,并且会从您的身份服务器中删除您的账号详细信息。 "; "deactivate_account_informations_part2_emphasize" = "此项操作无法逆转。"; -"deactivate_account_informations_part3" = "\n\n正在注销您的账号 "; +"deactivate_account_informations_part3" = "\n\n正在停用您的账号 "; "deactivate_account_informations_part4_emphasize" = "默认情况下不会导致我们忘记您发送的消息。 "; "deactivate_account_informations_part5" = "如果您希望我们忘记您的消息,请勾选下面的框\n\nMatrix中的消息可见性与电子邮件类似。 我们忘记您的消息意味着您已发送的消息将不会再与任何新用户或未注册用户共享,但已有权访问这些消息的注册用户仍可访问其副本。"; -"deactivate_account_forget_messages_information_part1" = "当我的账号注销时请忘记我所有的已发送消息("; +"deactivate_account_forget_messages_information_part1" = "当我的帐户被停用时,请忘记我发送的所有消息("; "deactivate_account_forget_messages_information_part3" = ": 这会导致将来加入的用户看到的是一段不完整的对话)"; "deactivate_account_password_alert_message" = "要继续,请输入您的密码"; "rerequest_keys_alert_message" = "请在另一台可以解密消息的设备上启动Element,这样它就可以将密钥发送到此会话。"; @@ -1094,3 +1094,22 @@ "secrets_recovery_with_key_recover_action" = "使用密钥"; "secrets_recovery_with_key_invalid_recovery_key_title" = "无法访问机密存储"; "secrets_recovery_with_key_invalid_recovery_key_message" = "请验证您输入的恢复密钥是否正确。"; +"rooms_empty_view_information" = "房间非常适合任何群聊,无论是私人的还是公共的。点击+以查找现有房间,或新建房间。"; +"security_settings_user_password_description" = "通过输入您的帐户密码确认您的身份"; +"rooms_empty_view_title" = "聊天室"; +"people_empty_view_information" = "与任何人安全聊天。点击+开始添加人员。"; +"people_empty_view_title" = "用户"; +"less" = "较小地"; +"more" = "更多"; +"switch" = "开关"; +"joined" = "已加入"; +"store_promotional_text" = "在开放网络上保护隐私的聊天和协作应用程序。分散权力让你掌控一切。没有数据挖掘,没有后门,也没有第三方访问。"; +"social_login_button_title_sign_up" = "以 %@ 方式登录"; +"social_login_button_title_sign_in" = "以 %@ 方式登录"; +"social_login_button_title_continue" = "继续 %@ 以其他方式登录"; +"social_login_list_title_sign_in" = "利用社交媒体登录"; +"social_login_list_title_sign_up" = "利用社交媒体注册"; + +// Social login + +"social_login_list_title_continue" = "以其他方式登录"; diff --git a/Riot/Assets/zh_Hant.lproj/Vector.strings b/Riot/Assets/zh_Hant.lproj/Vector.strings index 08a89cec6..3092bb226 100644 --- a/Riot/Assets/zh_Hant.lproj/Vector.strings +++ b/Riot/Assets/zh_Hant.lproj/Vector.strings @@ -637,3 +637,35 @@ "store_full_description" = "Element是一種新型的通訊和協作應用程式,它可以使你:\n\n1.掌控您的隱私\n2.可以與Matrix網絡中的任何人進行通信,甚至可以與Slack等應用程式整合\n3.保護您免受廣告,數據挖掘,後門和封閉平台的侵害\n4.通過端到端加密和交互簽名來驗證他人,從而保護您的安全\n\nElement是去中心化的開源軟件,因此與其他通訊和協作應用程式完全不同。\n\nElement允許您自行架設(或選擇託管)伺服器,使您擁有隱私權,所有權以及對數據和會話的控制權。自行架設的伺服器可以使您訪問開放的網絡;因此,您不僅可以只與其他 Element 用戶聊天。而且非常安全。\n\nElement之所以能夠達至所有這些目標,是因為它在Matrix(開放,去中心化通信的標準)上運行。\n\nElement通過讓您選擇託管對話的伺服器來控制您的訊息和資料。在Element應用程式中,您可以選擇以不同方式託管你的訊息:\n\n1.在matrix.org公共伺服器上獲得一個免費帳戶\n2.通過在自己的硬件上架設伺服器來託管帳戶\n3.訂閱Element Matrix Services託管平台,即可在自定伺服器上註冊帳戶\n\n為什麼選擇Element?\n\n擁有您的數據:您可以決定將數據和訊息保留在何處。您擁有並控制它,而不是某些超大型企業一樣,會挖掘您的數據或把數據提供給第三方。\n\n開放的通訊和協作:您可以與Matrix網絡中的任何人聊天,無論他們使用的是Element還是其他Matrix應用程式,甚至他們使用的是Slack,IRC或XMPP之類的其他通訊系統。\n\n超級安全:真正的端到端加密(只有對話中的人才能解密消息),並進行交互簽名以驗證對話參與者的設備。\n\n完整的通信:文字通訊,語音和視像通話,文件共享,屏幕共享以及大量整合,機器人和小部件。建立房間、社群,保持聯繫並完成工作。\n\n無論您身在何處都可保持聯繫:無論您身在何處,都可以通過 https://element.io/app 在所有設備和網絡上完全同步訊息歷史記錄來保持聯繫。"; // String for App Store "store_short_description" = "去中心化的安全通訊軟件"; +"settings_three_pids_management_information_part1" = "在此管理你可以用作登入或回復帳戶的電郵或電話號碼。你也可控制誰可以用這些資料找到你。 "; +"external_link_confirmation_message" = "此鏈結 %@ 將帶你到另一網頁: %@\n\n確定要前往?"; +"external_link_confirmation_title" = "按此鏈結"; +"media_type_accessibility_sticker" = "貼圖"; +"media_type_accessibility_file" = "檔案"; +"media_type_accessibility_location" = "位置"; +"media_type_accessibility_video" = "影片"; +"media_type_accessibility_audio" = "錄音"; +"media_type_accessibility_image" = "圖片"; +"room_accessibility_hangup" = "結束通話"; +"room_accessibility_call" = "致電"; +"room_accessibility_upload" = "上傳"; +"room_accessibility_search" = "搜尋"; +"room_message_edits_history_title" = "修改訊息"; +"room_resource_usage_limit_reached_message_contact_3" = " 以提升上限。"; +"room_resource_usage_limit_reached_message_2" = "部分用戶將不能登入。"; +"room_resource_usage_limit_reached_message_1_monthly_active_user" = "此伺服器已超出每月活躍用戶上限,所以 "; +"room_resource_limit_exceeded_message_contact_3" = " 以繼續使用此服務。"; +"room_resource_limit_exceeded_message_contact_2_link" = "聯絡伺服器管理員"; +"room_resource_usage_limit_reached_message_1_default" = "此伺服器已超出其中一項資源上限,所以 "; +"room_resource_limit_exceeded_message_contact_1" = " 請 "; +"room_action_reply" = "回覆"; +"room_action_send_file" = "傳送檔案"; +"room_action_camera" = "拍攝照片或影片"; +"room_event_action_reaction_show_less" = "顯示更少"; +"room_event_action_reaction_show_all" = "顯示全部"; +"room_event_action_edit" = "修改"; +"room_event_action_reply" = "回覆"; +"rooms_empty_view_information" = "聊天室適合任何公開或私人群組。按 + 尋找聊天室,或建立新聊天室。"; +"rooms_empty_view_title" = "聊天室"; +"people_empty_view_information" = "和任何人安全地通話。按 + 添加聯絡人。"; +"people_empty_view_title" = "聯絡人"; diff --git a/Riot/Categories/MXKRoomBubbleTableViewCell+Riot.h b/Riot/Categories/MXKRoomBubbleTableViewCell+Riot.h index ce1282065..ac04ef63f 100644 --- a/Riot/Categories/MXKRoomBubbleTableViewCell+Riot.h +++ b/Riot/Categories/MXKRoomBubbleTableViewCell+Riot.h @@ -56,6 +56,13 @@ extern NSString *const kMXKRoomBubbleCellKeyVerificationIncomingRequestAcceptPre */ extern NSString *const kMXKRoomBubbleCellKeyVerificationIncomingRequestDeclinePressed; +/** + Action identifier used when the user pressed "Call back" button for a declined call. + + The `userInfo` dictionary contains an `MXEvent` object under the `kMXKRoomBubbleCellEventKey` key, representing the invite event of the declined call. + */ +extern NSString *const kMXKRoomBubbleCellCallBackButtonPressed; + /** Define a `MXKRoomBubbleTableViewCell` category at Riot level to handle bubble customisation. */ diff --git a/Riot/Categories/MXKRoomBubbleTableViewCell+Riot.m b/Riot/Categories/MXKRoomBubbleTableViewCell+Riot.m index 6723f2dc0..f48054f7f 100644 --- a/Riot/Categories/MXKRoomBubbleTableViewCell+Riot.m +++ b/Riot/Categories/MXKRoomBubbleTableViewCell+Riot.m @@ -33,6 +33,7 @@ NSString *const kMXKRoomBubbleCellLongPressOnReactionView = @"kMXKRoomBubbleCell NSString *const kMXKRoomBubbleCellEventIdKey = @"kMXKRoomBubbleCellEventIdKey"; NSString *const kMXKRoomBubbleCellKeyVerificationIncomingRequestAcceptPressed = @"kMXKRoomBubbleCellKeyVerificationAcceptPressed"; NSString *const kMXKRoomBubbleCellKeyVerificationIncomingRequestDeclinePressed = @"kMXKRoomBubbleCellKeyVerificationDeclinePressed"; +NSString *const kMXKRoomBubbleCellCallBackButtonPressed = @"kMXKRoomBubbleCellCallBackButtonPressed"; @implementation MXKRoomBubbleTableViewCell (Riot) diff --git a/Riot/Categories/RoomBubbleCellData.swift b/Riot/Categories/RoomBubbleCellData.swift new file mode 100644 index 000000000..d8ceca1fb --- /dev/null +++ b/Riot/Categories/RoomBubbleCellData.swift @@ -0,0 +1,50 @@ +// +// Copyright 2020 New Vector Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation + +@objc extension RoomBubbleCellData { + + /// Gathers all collapsable events in both directions (previous and next) + /// - Returns: Array of events containing collapsable events in both sides. + func allLinkedEvents() -> [MXEvent] { + var result: [MXEvent] = [] + + // add prev linked events + var prevBubbleData = prevCollapsableCellData + while prevBubbleData != nil { + if let events = prevBubbleData?.events { + result.append(contentsOf: events) + } + prevBubbleData = prevBubbleData?.prevCollapsableCellData + } + + // add self events + result.append(contentsOf: events) + + // add next linked events + var nextBubbleData = nextCollapsableCellData + while nextBubbleData != nil { + if let events = nextBubbleData?.events { + result.append(contentsOf: events) + } + nextBubbleData = nextBubbleData?.nextCollapsableCellData + } + + return result + } + +} diff --git a/Riot/Categories/String.swift b/Riot/Categories/String.swift index f6bbd04bc..bdcc12248 100644 --- a/Riot/Categories/String.swift +++ b/Riot/Categories/String.swift @@ -38,4 +38,15 @@ extension String { func vc_caseInsensitiveContains(_ other: String) -> Bool { return self.range(of: other, options: .caseInsensitive) != nil } + + /// Returns a globally unique string + static var vc_unique: String { + return ProcessInfo.processInfo.globallyUniqueString + } + + /// Returns a new string by removing all whitespaces from the receiver object + /// - Returns: New string without whitespaces from the receiver + func vc_removingAllWhitespaces() -> String { + return components(separatedBy: .whitespaces).joined() + } } diff --git a/Config/Common.xcconfig b/Riot/Common.xcconfig similarity index 62% rename from Config/Common.xcconfig rename to Riot/Common.xcconfig index 59db66f87..173727042 100644 --- a/Config/Common.xcconfig +++ b/Riot/Common.xcconfig @@ -17,15 +17,15 @@ // Configuration settings file format documentation can be found at: // https://help.apple.com/xcode/#/dev745c5c974 -BUNDLE_DISPLAY_NAME = Element +#include "Config/AppIdentifiers.xcconfig" -APPLICATION_GROUP_IDENTIFIER = group.im.vector +PRODUCT_NAME = Riot +PRODUCT_BUNDLE_IDENTIFIER = $(BASE_BUNDLE_IDENTIFIER) -BASE_BUNDLE_IDENTIFIER = im.vector.app +INFOPLIST_FILE = Riot/SupportingFiles/Info.plist +ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon -KEYCHAIN_ACCESS_GROUP = $(AppIdentifierPrefix)$(BASE_BUNDLE_IDENTIFIER).keychain.shared +CODE_SIGN_ENTITLEMENTS = Riot/SupportingFiles/Riot.entitlements -//Make Xcode 12 and fastlane(xcodebuild) happy while some pods are not updated -EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64 - -APPLICATION_SCHEME = element +SWIFT_OBJC_BRIDGING_HEADER = $(SRCROOT)/$(PRODUCT_NAME)/SupportingFiles/Riot-Bridging-Header.h +LD_RUNPATH_SEARCH_PATHS = $(inherited) @executable_path/Frameworks diff --git a/Riot/SupportingFiles/App-Debug.xcconfig b/Riot/Debug.xcconfig similarity index 96% rename from Riot/SupportingFiles/App-Debug.xcconfig rename to Riot/Debug.xcconfig index 59aa4f856..247b53040 100644 --- a/Riot/SupportingFiles/App-Debug.xcconfig +++ b/Riot/Debug.xcconfig @@ -17,5 +17,5 @@ // Configuration settings file format documentation can be found at: // https://help.apple.com/xcode/#/dev745c5c974 -#include "App-Common.xcconfig" +#include "Common.xcconfig" #include "Pods/Target Support Files/Pods-RiotPods-Riot/Pods-RiotPods-Riot.debug.xcconfig" diff --git a/Riot/Generated/Images.swift b/Riot/Generated/Images.swift index a6b1ae49f..90a35d7ac 100644 --- a/Riot/Generated/Images.swift +++ b/Riot/Generated/Images.swift @@ -23,14 +23,22 @@ internal enum Asset { internal static let socialLoginButtonApple = ImageAsset(name: "social_login_button_apple") internal static let socialLoginButtonFacebook = ImageAsset(name: "social_login_button_facebook") internal static let socialLoginButtonGithub = ImageAsset(name: "social_login_button_github") + internal static let socialLoginButtonGitlab = ImageAsset(name: "social_login_button_gitlab") internal static let socialLoginButtonGoogle = ImageAsset(name: "social_login_button_google") internal static let socialLoginButtonTwitter = ImageAsset(name: "social_login_button_twitter") internal static let callAudioMuteOffIcon = ImageAsset(name: "call_audio_mute_off_icon") internal static let callAudioMuteOnIcon = ImageAsset(name: "call_audio_mute_on_icon") internal static let callChatIcon = ImageAsset(name: "call_chat_icon") + internal static let callDialpadBackspaceIcon = ImageAsset(name: "call_dialpad_backspace_icon") + internal static let callDialpadCallIcon = ImageAsset(name: "call_dialpad_call_icon") internal static let callHangupLarge = ImageAsset(name: "call_hangup_large") + internal static let callMoreIcon = ImageAsset(name: "call_more_icon") + internal static let callPausedIcon = ImageAsset(name: "call_paused_icon") + internal static let callPausedWhiteIcon = ImageAsset(name: "call_paused_white_icon") + internal static let callPipIcon = ImageAsset(name: "call_pip_icon") internal static let callSpeakerOffIcon = ImageAsset(name: "call_speaker_off_icon") internal static let callSpeakerOnIcon = ImageAsset(name: "call_speaker_on_icon") + internal static let callVideoIcon = ImageAsset(name: "call_video_icon") internal static let callVideoMuteOffIcon = ImageAsset(name: "call_video_mute_off_icon") internal static let callVideoMuteOnIcon = ImageAsset(name: "call_video_mute_on_icon") internal static let callkitIcon = ImageAsset(name: "callkit_icon") @@ -51,6 +59,7 @@ internal enum Asset { internal static let revealPasswordButton = ImageAsset(name: "reveal_password_button") internal static let selectionTick = ImageAsset(name: "selection_tick") internal static let selectionUntick = ImageAsset(name: "selection_untick") + internal static let shareActionButton = ImageAsset(name: "share_action_button") internal static let shrinkIcon = ImageAsset(name: "shrink_icon") internal static let smartphone = ImageAsset(name: "smartphone") internal static let startChat = ImageAsset(name: "start_chat") diff --git a/Riot/Generated/Storyboards.swift b/Riot/Generated/Storyboards.swift index 41f427e46..0b1492b69 100644 --- a/Riot/Generated/Storyboards.swift +++ b/Riot/Generated/Storyboards.swift @@ -12,6 +12,16 @@ import UIKit // swiftlint:disable explicit_type_interface identifier_name line_length type_body_length type_name internal enum StoryboardScene { + internal enum CallTransferMainViewController: StoryboardType { + internal static let storyboardName = "CallTransferMainViewController" + + internal static let initialScene = InitialSceneType(storyboard: CallTransferMainViewController.self) + } + internal enum CallTransferSelectContactViewController: StoryboardType { + internal static let storyboardName = "CallTransferSelectContactViewController" + + internal static let initialScene = InitialSceneType(storyboard: CallTransferSelectContactViewController.self) + } internal enum DeviceVerificationIncomingViewController: StoryboardType { internal static let storyboardName = "DeviceVerificationIncomingViewController" @@ -22,6 +32,11 @@ internal enum StoryboardScene { internal static let initialScene = InitialSceneType(storyboard: DeviceVerificationStartViewController.self) } + internal enum DialpadViewController: StoryboardType { + internal static let storyboardName = "DialpadViewController" + + internal static let initialScene = InitialSceneType(storyboard: DialpadViewController.self) + } internal enum EditHistoryViewController: StoryboardType { internal static let storyboardName = "EditHistoryViewController" diff --git a/Riot/Generated/Strings.swift b/Riot/Generated/Strings.swift index c19c5b298..dbec4b6ab 100644 --- a/Riot/Generated/Strings.swift +++ b/Riot/Generated/Strings.swift @@ -378,6 +378,10 @@ internal enum VectorL10n { internal static var bugCrashReportTitle: String { return VectorL10n.tr("Vector", "bug_crash_report_title") } + /// Continue in background + internal static var bugReportBackgroundMode: String { + return VectorL10n.tr("Vector", "bug_report_background_mode") + } /// Please describe the bug. What did you do? What did you expect to happen? What actually happened? internal static var bugReportDescription: String { return VectorL10n.tr("Vector", "bug_report_description") @@ -414,6 +418,10 @@ internal enum VectorL10n { internal static var bugReportTitle: String { return VectorL10n.tr("Vector", "bug_report_title") } + /// Resume + internal static var callActionsUnhold: String { + return VectorL10n.tr("Vector", "call_actions_unhold") + } /// There is already a call in progress. internal static var callAlreadyDisplayed: String { return VectorL10n.tr("Vector", "call_already_displayed") @@ -454,6 +462,58 @@ internal enum VectorL10n { internal static func callNoStunServerErrorUseFallbackButton(_ p1: String) -> String { return VectorL10n.tr("Vector", "call_no_stun_server_error_use_fallback_button", p1) } + /// All + internal static var callTransferContactsAll: String { + return VectorL10n.tr("Vector", "call_transfer_contacts_all") + } + /// Recent + internal static var callTransferContactsRecent: String { + return VectorL10n.tr("Vector", "call_transfer_contacts_recent") + } + /// Dial pad + internal static var callTransferDialpad: String { + return VectorL10n.tr("Vector", "call_transfer_dialpad") + } + /// Call transfer failed + internal static var callTransferErrorMessage: String { + return VectorL10n.tr("Vector", "call_transfer_error_message") + } + /// Error + internal static var callTransferErrorTitle: String { + return VectorL10n.tr("Vector", "call_transfer_error_title") + } + /// Transfer + internal static var callTransferTitle: String { + return VectorL10n.tr("Vector", "call_transfer_title") + } + /// Users + internal static var callTransferUsers: String { + return VectorL10n.tr("Vector", "call_transfer_users") + } + /// 1 active call (%@) · %@ paused calls + internal static func callbarActiveAndMultiplePaused(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "callbar_active_and_multiple_paused", p1, p2) + } + /// 1 active call (%@) · 1 paused call + internal static func callbarActiveAndSinglePaused(_ p1: String) -> String { + return VectorL10n.tr("Vector", "callbar_active_and_single_paused", p1) + } + /// %@ paused calls + internal static func callbarOnlyMultiplePaused(_ p1: String) -> String { + return VectorL10n.tr("Vector", "callbar_only_multiple_paused", p1) + } + /// Active call (%@) + internal static func callbarOnlySingleActive(_ p1: String) -> String { + return VectorL10n.tr("Vector", "callbar_only_single_active", p1) + } + /// Paused call + internal static var callbarOnlySinglePaused: String { + return VectorL10n.tr("Vector", "callbar_only_single_paused") + } + /// Return + internal static var callbarReturn: String { + return VectorL10n.tr("Vector", "callbar_return") + } /// Camera internal static var camera: String { return VectorL10n.tr("Vector", "camera") @@ -950,7 +1010,7 @@ internal enum VectorL10n { internal static var deviceVerificationSelfVerifyStartWaiting: String { return VectorL10n.tr("Vector", "device_verification_self_verify_start_waiting") } - /// This works with Element and other cross-signing capable Matrix cients. + /// This works with Element and other cross-signing capable Matrix clients. internal static var deviceVerificationSelfVerifyWaitAdditionalInformation: String { return VectorL10n.tr("Vector", "device_verification_self_verify_wait_additional_information") } @@ -1014,6 +1074,10 @@ internal enum VectorL10n { internal static var deviceVerificationVerifyWaitPartner: String { return VectorL10n.tr("Vector", "device_verification_verify_wait_partner") } + /// Dial pad + internal static var dialpadTitle: String { + return VectorL10n.tr("Vector", "dialpad_title") + } /// %tu rooms internal static func directoryCellDescription(_ p1: Int) -> String { return VectorL10n.tr("Vector", "directory_cell_description", p1) @@ -1174,6 +1238,30 @@ internal enum VectorL10n { internal static var errorUserAlreadyLoggedIn: String { return VectorL10n.tr("Vector", "error_user_already_logged_in") } + /// Call back + internal static var eventFormatterCallBack: String { + return VectorL10n.tr("Vector", "event_formatter_call_back") + } + /// This call has ended + internal static var eventFormatterCallHasEnded: String { + return VectorL10n.tr("Vector", "event_formatter_call_has_ended") + } + /// Video call + internal static var eventFormatterCallVideo: String { + return VectorL10n.tr("Vector", "event_formatter_call_video") + } + /// Voice call + internal static var eventFormatterCallVoice: String { + return VectorL10n.tr("Vector", "event_formatter_call_voice") + } + /// You're currently in this call + internal static var eventFormatterCallYouCurrentlyIn: String { + return VectorL10n.tr("Vector", "event_formatter_call_you_currently_in") + } + /// You declined this call + internal static var eventFormatterCallYouDeclined: String { + return VectorL10n.tr("Vector", "event_formatter_call_you_declined") + } /// VoIP conference added by %@ internal static func eventFormatterJitsiWidgetAdded(_ p1: String) -> String { return VectorL10n.tr("Vector", "event_formatter_jitsi_widget_added", p1) @@ -1454,6 +1542,14 @@ internal enum VectorL10n { internal static var invite: String { return VectorL10n.tr("Vector", "invite") } + /// Invite friends to %@ + internal static func inviteFriendsAction(_ p1: String) -> String { + return VectorL10n.tr("Vector", "invite_friends_action", p1) + } + /// Hey, talk to me on %@: %@ + internal static func inviteFriendsShareText(_ p1: String, _ p2: String) -> String { + return VectorL10n.tr("Vector", "invite_friends_share_text", p1, p2) + } /// Join internal static var join: String { return VectorL10n.tr("Vector", "join") @@ -2794,6 +2890,10 @@ internal enum VectorL10n { internal static func roomOngoingConferenceCallWithClose(_ p1: String, _ p2: String, _ p3: String) -> String { return VectorL10n.tr("Vector", "room_ongoing_conference_call_with_close", p1, p2, p3) } + /// Dial pad + internal static var roomOpenDialpad: String { + return VectorL10n.tr("Vector", "room_open_dialpad") + } /// Ban from this room internal static var roomParticipantsActionBan: String { return VectorL10n.tr("Vector", "room_participants_action_ban") @@ -3014,6 +3114,10 @@ internal enum VectorL10n { internal static var roomParticipantsUnknown: String { return VectorL10n.tr("Vector", "room_participants_unknown") } + /// Voice call + internal static var roomPlaceVoiceCall: String { + return VectorL10n.tr("Vector", "room_place_voice_call") + } /// This room is a continuation of another conversation. internal static var roomPredecessorInformation: String { return VectorL10n.tr("Vector", "room_predecessor_information") @@ -3666,7 +3770,7 @@ internal enum VectorL10n { internal static var serviceTermsModalTitleIdentityServer: String { return VectorL10n.tr("Vector", "service_terms_modal_title_identity_server") } - /// Invalid password + /// Invalid credentials internal static var settingsAdd3pidInvalidPasswordMessage: String { return VectorL10n.tr("Vector", "settings_add_3pid_invalid_password_message") } @@ -4290,11 +4394,11 @@ internal enum VectorL10n { internal static var socialLoginListTitleContinue: String { return VectorL10n.tr("Vector", "social_login_list_title_continue") } - /// Or login with + /// Or internal static var socialLoginListTitleSignIn: String { return VectorL10n.tr("Vector", "social_login_list_title_sign_in") } - /// Or register with + /// Or internal static var socialLoginListTitleSignUp: String { return VectorL10n.tr("Vector", "social_login_list_title_sign_up") } diff --git a/Riot/Managers/Call/AsyncOperation.swift b/Riot/Managers/Call/AsyncOperation.swift new file mode 100644 index 000000000..1e8e87c07 --- /dev/null +++ b/Riot/Managers/Call/AsyncOperation.swift @@ -0,0 +1,90 @@ +// +// Copyright 2020 New Vector Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation + +class AsyncOperation: Operation { + + @objc private enum State: Int { + case ready + case executing + case finished + } + + private var _state: State = .ready + private let stateQueue = DispatchQueue(label: "AsyncOpStateQueue_\(String.vc_unique)", + attributes: .concurrent) + + @objc private dynamic var state: State { + get { + return stateQueue.sync { + _state + } + } set { + stateQueue.sync(flags: .barrier) { + _state = newValue + } + } + } + + override var isAsynchronous: Bool { + return true + } + + override var isReady: Bool { + return super.isReady && state == .ready + } + + override var isExecuting: Bool { + return state == .executing + } + + override var isFinished: Bool { + return state == .finished + } + + override func start() { + if isCancelled { + finish() + return + } + self.state = .executing + main() + } + + override func main() { + fatalError("Subclasses must implement `main` without calling super.") + } + + @objc class var keyPathsForValuesAffectingIsReady: Set { + return [#keyPath(state)] + } + + @objc class var keyPathsForValuesAffectingIsExecuting: Set { + return [#keyPath(state)] + } + + @objc class var keyPathsForValuesAffectingIsFinished: Set { + return [#keyPath(state)] + } + + func finish() { + if isExecuting { + self.state = .finished + } + } + +} diff --git a/Riot/Managers/Call/CallPresenter.swift b/Riot/Managers/Call/CallPresenter.swift new file mode 100644 index 000000000..94d03f578 --- /dev/null +++ b/Riot/Managers/Call/CallPresenter.swift @@ -0,0 +1,564 @@ +// +// Copyright 2020 New Vector Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation +import MatrixKit + +@objcMembers +/// Service to manage call screens and call bar UI management. +class CallPresenter: NSObject { + + private enum Constants { + static let pipAnimationDuration: TimeInterval = 0.25 + } + + private var sessions: [MXSession] = [] + private var callVCs: [String: CallViewController] = [:] + private var callBackgroundTasks: [String: MXBackgroundTask] = [:] + private weak var presentedCallVC: CallViewController? { + didSet { + updateOnHoldCall() + } + } + private weak var inBarCallVC: CallViewController? + private weak var pipCallVC: CallViewController? + private var uiOperationQueue: OperationQueue = .main + private var isStarted: Bool = false + private var callTimer: Timer? + + private var isCallKitEnabled: Bool { + MXCallKitAdapter.callKitAvailable() && MXKAppSettings.standard()?.isCallKitEnabled == true + } + + private var activeCallVC: CallViewController? { + return callVCs.values.filter { (callVC) -> Bool in + guard let call = callVC.mxCall else { + return false + } + return !call.isOnHold + }.first + } + + private var onHoldCallVCs: [CallViewController] { + return callVCs.values.filter { (callVC) -> Bool in + guard let call = callVC.mxCall else { + return false + } + return call.isOnHold + } + } + + private var numberOfPausedCalls: UInt { + return UInt(callVCs.values.filter { (callVC) -> Bool in + guard let call = callVC.mxCall else { + return false + } + return call.isOnHold + }.count) + } + + // MARK: - Public + + /// Maximum number of concurrent calls allowed. + let maximumNumberOfConcurrentCalls: UInt = 2 + + /// Delegate object + weak var delegate: CallPresenterDelegate? + + func addMatrixSession(_ session: MXSession) { + sessions.append(session) + } + + func removeMatrixSession(_ session: MXSession) { + if let index = sessions.firstIndex(of: session) { + sessions.remove(at: index) + } + } + + /// Start the service + func start() { + addCallObservers() + startCallTimer() + } + + /// Stop the service + func stop() { + removeCallObservers() + stopCallTimer() + } + + /// Method to be called when the call status bar is tapped. + /// - Returns: If the user interaction handled or not + func callStatusBarButtonTapped() -> Bool { + if let callVC = inBarCallVC ?? activeCallVC { + dismissCallBar(for: callVC) + presentCallVC(callVC) + return true + } + return false + } + + // MARK: - Private + + private func updateOnHoldCall() { + guard let presentedCallVC = presentedCallVC else { + return + } + + if onHoldCallVCs.isEmpty { + // no on hold calls, clear the call + presentedCallVC.mxCallOnHold = nil + } else { + for callVC in onHoldCallVCs where callVC != presentedCallVC { + // do not set the same call (can happen in case of two on hold calls) + presentedCallVC.mxCallOnHold = callVC.mxCall + break + } + } + } + + private func shouldHandleCall(_ call: MXCall) -> Bool { + if let delegate = delegate, !delegate.callPresenter(self, shouldHandleNewCall: call) { + return false + } + return callVCs.count < maximumNumberOfConcurrentCalls + } + + private func callHolded(withCallId callId: String) { + updateOnHoldCall() + } + + private func endCall(withCallId callId: String) { + guard let callVC = callVCs[callId] else { + return + } + + let completion = { [weak self] in + guard let self = self else { + return + } + + self.updateOnHoldCall() + + self.callVCs.removeValue(forKey: callId) + callVC.destroy() + self.callBackgroundTasks[callId]?.stop() + self.callBackgroundTasks.removeValue(forKey: callId) + + // if still have some calls and there is no present operation in the queue + if let oldCallVC = self.callVCs.values.first, + self.presentedCallVC == nil, + !self.uiOperationQueue.containsPresentCallVCOperation, + !self.uiOperationQueue.containsPresentCallBarOperation { + // present the call bar after dismissing this one + self.presentCallBar(for: oldCallVC) + } + } + + if inBarCallVC == callVC { + // this call currently in the status bar, + // first present it and then dismiss it + presentCallVC(callVC) + } + if pipCallVC == callVC { + // this call currently in the PiP mode, + // first present it by exiting PiP mode and then dismiss it + exitPipCallVC(callVC) { + self.dismissCallVC(callVC, completion: completion) + } + return + } + dismissCallVC(callVC, completion: completion) + } + + // MARK: - Timer + + private func startCallTimer() { + callTimer = Timer.scheduledTimer(timeInterval: 1.0, + target: self, + selector: #selector(callTimerFired(_:)), + userInfo: nil, + repeats: true) + } + + private func stopCallTimer() { + callTimer?.invalidate() + callTimer = nil + } + + @objc private func callTimerFired(_ timer: Timer) { + guard let inBarCallVC = inBarCallVC else { + return + } + guard let call = inBarCallVC.mxCall else { + return + } + guard call.state != .ended else { + return + } + + presentCallBar(for: inBarCallVC, isUpdateOnly: true) + } + + // MARK: - Observers + + private func addCallObservers() { + guard !isStarted else { + return + } + + NotificationCenter.default.addObserver(self, + selector: #selector(newCall(_:)), + name: NSNotification.Name(rawValue: kMXCallManagerNewCall), + object: nil) + NotificationCenter.default.addObserver(self, + selector: #selector(callStateChanged(_:)), + name: NSNotification.Name(rawValue: kMXCallStateDidChange), + object: nil) + NotificationCenter.default.addObserver(self, + selector: #selector(callTileTapped(_:)), + name: .RoomCallTileTapped, + object: nil) + + isStarted = true + } + + private func removeCallObservers() { + guard isStarted else { + return + } + + NotificationCenter.default.removeObserver(self, + name: NSNotification.Name(rawValue: kMXCallManagerNewCall), + object: nil) + NotificationCenter.default.removeObserver(self, + name: NSNotification.Name(rawValue: kMXCallStateDidChange), + object: nil) + NotificationCenter.default.removeObserver(self, + name: .RoomCallTileTapped, + object: nil) + + isStarted = false + } + + @objc + private func newCall(_ notification: Notification) { + guard let call = notification.object as? MXCall else { + return + } + + if !shouldHandleCall(call) { + return + } + + guard let newCallVC = CallViewController(call) else { + return + } + newCallVC.playRingtone = !isCallKitEnabled + newCallVC.delegate = self + callVCs[call.callId] = newCallVC + + if UIApplication.shared.applicationState == .background && call.isIncoming { + // Create backgound task. + // Without CallKit this will allow us to play vibro until the call was ended + // With CallKit we'll inform the system when the call is ended to let the system terminate our app to save resources + let handler = MXSDKOptions.sharedInstance().backgroundModeHandler + let callBackgroundTask = handler.startBackgroundTask(withName: "[CallService] addMatrixCallObserver", expirationHandler: nil) + + callBackgroundTasks[call.callId] = callBackgroundTask + } + + if call.isIncoming && isCallKitEnabled { + return + } else { + presentCallVC(newCallVC) + } + } + + @objc + private func callStateChanged(_ notification: Notification) { + guard let call = notification.object as? MXCall else { + return + } + + switch call.state { + case .createAnswer: + NSLog("[CallService] callStateChanged: call created answer: \(call.callId)") + if call.isIncoming, isCallKitEnabled, let callVC = callVCs[call.callId] { + presentCallVC(callVC) + } + case .connected: + NSLog("[CallService] callStateChanged: call connected: \(call.callId)") + callTimer?.fire() + case .onHold: + NSLog("[CallService] callStateChanged: call holded: \(call.callId)") + callTimer?.fire() + callHolded(withCallId: call.callId) + case .remotelyOnHold: + NSLog("[CallService] callStateChanged: call remotely holded: \(call.callId)") + callTimer?.fire() + callHolded(withCallId: call.callId) + case .ended: + NSLog("[CallService] callStateChanged: call ended: \(call.callId)") + endCall(withCallId: call.callId) + default: + break + } + } + + @objc + private func callTileTapped(_ notification: Notification) { + NSLog("[CallService] callTileTapped") + guard let bubbleData = notification.object as? RoomBubbleCellData else { + return + } + + guard let randomEvent = bubbleData.allLinkedEvents().randomElement() else { + return + } + + guard let callEventContent = MXCallEventContent(fromJSON: randomEvent.content) else { + return + } + + NSLog("[CallService] callTileTapped: for call: \(callEventContent.callId)") + + guard let session = sessions.first else { return } + + guard let call = session.callManager.call(withCallId: callEventContent.callId) else { + return + } + + if call.state == .ended { + return + } + + guard let callVC = callVCs[call.callId] else { + return + } + + presentCallVC(callVC) + } + + // MARK: - Call Screens + + private func presentCallVC(_ callVC: CallViewController, completion: (() -> Void)? = nil) { + NSLog("[CallService] presentCallVC: call: \(String(describing: callVC.mxCall?.callId))") + + // do not use PiP transitions here, as we really want to present the screen + callVC.transitioningDelegate = nil + + if let inBarCallVC = inBarCallVC { + dismissCallBar(for: inBarCallVC) + } + + if let presentedCallVC = presentedCallVC { + dismissCallVC(presentedCallVC) + } + + let operation = CallVCPresentOperation(presenter: self, callVC: callVC) { [weak self] in + self?.presentedCallVC = callVC + if callVC == self?.pipCallVC { + self?.pipCallVC = nil + } + completion?() + } + uiOperationQueue.addOperation(operation) + } + + private func dismissCallVC(_ callVC: CallViewController, completion: (() -> Void)? = nil) { + NSLog("[CallService] dismissCallVC: call: \(String(describing: callVC.mxCall?.callId))") + + // do not use PiP transitions here, as we really want to dismiss the screen + callVC.transitioningDelegate = nil + + let operation = CallVCDismissOperation(presenter: self, callVC: callVC) { [weak self] in + if callVC == self?.presentedCallVC { + self?.presentedCallVC = nil + } + completion?() + } + uiOperationQueue.addOperation(operation) + } + + private func enterPipCallVC(_ callVC: CallViewController, completion: (() -> Void)? = nil) { + NSLog("[CallService] enterPipCallVC: call: \(String(describing: callVC.mxCall?.callId))") + + // assign self as transitioning delegate + callVC.transitioningDelegate = self + + let operation = CallVCEnterPipOperation(presenter: self, callVC: callVC) { [weak self] in + self?.pipCallVC = callVC + if callVC == self?.presentedCallVC { + self?.presentedCallVC = nil + } + completion?() + } + uiOperationQueue.addOperation(operation) + } + + private func exitPipCallVC(_ callVC: CallViewController, completion: (() -> Void)? = nil) { + NSLog("[CallService] exitPipCallVC: call: \(String(describing: callVC.mxCall?.callId))") + + // assign self as transitioning delegate + callVC.transitioningDelegate = self + + let operation = CallVCExitPipOperation(presenter: self, callVC: callVC) { [weak self] in + if callVC == self?.pipCallVC { + self?.pipCallVC = nil + } + self?.presentedCallVC = callVC + completion?() + } + uiOperationQueue.addOperation(operation) + } + + // MARK: - Call Bar + + private func presentCallBar(for callVC: CallViewController?, isUpdateOnly: Bool = false, completion: (() -> Void)? = nil) { + NSLog("[CallService] presentCallBar: call: \(String(describing: callVC?.mxCall?.callId))") + + let activeCallVC = self.activeCallVC + + let operation = CallBarPresentOperation(presenter: self, activeCallVC: activeCallVC, numberOfPausedCalls: numberOfPausedCalls) { [weak self] in + // active calls are more prior to paused ones. + // So, if user taps the bar when we have one active and one paused calls, we navigate to the active one. + if !isUpdateOnly { + self?.inBarCallVC = activeCallVC ?? callVC + } + completion?() + } + uiOperationQueue.addOperation(operation) + } + + private func dismissCallBar(for callVC: CallViewController, completion: (() -> Void)? = nil) { + NSLog("[CallService] dismissCallBar: call: \(String(describing: callVC.mxCall?.callId))") + + let operation = CallBarDismissOperation(presenter: self) { [weak self] in + if callVC == self?.inBarCallVC { + self?.inBarCallVC = nil + } + completion?() + } + + uiOperationQueue.addOperation(operation) + } + +} + +// MARK: - MXKCallViewControllerDelegate + +extension CallPresenter: MXKCallViewControllerDelegate { + + func dismiss(_ callViewController: MXKCallViewController!, completion: (() -> Void)!) { + guard let callVC = callViewController as? CallViewController else { + // this call screen is not handled by this service + completion?() + return + } + + if callVC.mxCall == nil || callVC.mxCall.state == .ended { + // wait for the call state changes, will be handled there + return + } else { + dismissCallVC(callVC) + self.presentCallBar(for: callVC, completion: completion) + } + } + + func callViewControllerDidTap(onHoldCall callViewController: MXKCallViewController!) { + guard let callOnHold = callViewController.mxCallOnHold else { + return + } + guard let onHoldCallVC = callVCs[callOnHold.callId] else { + return + } + + if callOnHold.state == .onHold { + // call is on hold locally, switch calls + callViewController.mxCall.hold(true) + callOnHold.hold(false) + } + + // switch screens + presentCallVC(onHoldCallVC) + } + + func callViewControllerDidTapPiPButton(_ callViewController: MXKCallViewController!) { + guard let callVC = callViewController as? CallViewController else { + // this call screen is not handled by this service + return + } + + // sanity check + // do not enter PiP mode if not a video call + guard callVC.mxCall.isVideoCall else { return } + + // go to pip mode here + enterPipCallVC(callVC) + } + +} + +// MARK: - UIViewControllerTransitioningDelegate + +extension CallPresenter: UIViewControllerTransitioningDelegate { + + func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? { + return PiPAnimator(animationDuration: Constants.pipAnimationDuration, + animationType: .exit, + pipViewDelegate: nil) + } + + func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? { + return PiPAnimator(animationDuration: Constants.pipAnimationDuration, + animationType: .enter, + pipViewDelegate: self) + } + +} + +// MARK: - PiPViewDelegate + +extension CallPresenter: PiPViewDelegate { + + func pipViewDidTap(_ view: PiPView) { + guard let pipCallVC = pipCallVC else { return } + + exitPipCallVC(pipCallVC) + } + +} + +// MARK: - OperationQueue Extension + +extension OperationQueue { + + var containsPresentCallVCOperation: Bool { + return containsOperation(ofType: CallVCPresentOperation.self) + } + + var containsPresentCallBarOperation: Bool { + return containsOperation(ofType: CallBarPresentOperation.self) + } + + private func containsOperation(ofType type: Operation.Type) -> Bool { + return operations.contains { (operation) -> Bool in + return operation.isKind(of: type.self) + } + } + +} diff --git a/Riot/Managers/Call/CallPresenterDelegate.swift b/Riot/Managers/Call/CallPresenterDelegate.swift new file mode 100644 index 000000000..c3a47cb3a --- /dev/null +++ b/Riot/Managers/Call/CallPresenterDelegate.swift @@ -0,0 +1,49 @@ +// +// Copyright 2020 New Vector Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation + +@objc +protocol CallPresenterDelegate: class { + // New call + func callPresenter(_ presenter: CallPresenter, + shouldHandleNewCall call: MXCall) -> Bool + + // Call screens + func callPresenter(_ presenter: CallPresenter, + presentCallViewController viewController: CallViewController, + completion:(() -> Void)?) + func callPresenter(_ presenter: CallPresenter, + dismissCallViewController viewController: CallViewController, + completion:(() -> Void)?) + + // Call Bar + func callPresenter(_ presenter: CallPresenter, + presentCallBarFor activeCallViewController: CallViewController?, + numberOfPausedCalls: UInt, + completion:(() -> Void)?) + func callPresenter(_ presenter: CallPresenter, + dismissCallBar completion:(() -> Void)?) + + // PiP + func callPresenter(_ presenter: CallPresenter, + enterPipForCallViewController viewController: CallViewController, + completion:(() -> Void)?) + + func callPresenter(_ presenter: CallPresenter, + exitPipForCallViewController viewController: CallViewController, + completion:(() -> Void)?) +} diff --git a/Riot/Managers/Call/Operations/CallBarDismissOperation.swift b/Riot/Managers/Call/Operations/CallBarDismissOperation.swift new file mode 100644 index 000000000..02be105d1 --- /dev/null +++ b/Riot/Managers/Call/Operations/CallBarDismissOperation.swift @@ -0,0 +1,37 @@ +// +// Copyright 2020 New Vector Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation + +class CallBarDismissOperation: AsyncOperation { + + private var presenter: CallPresenter + private var completion: (() -> Void)? + + init(presenter: CallPresenter, + completion: (() -> Void)? = nil) { + self.presenter = presenter + self.completion = completion + } + + override func main() { + presenter.delegate?.callPresenter(presenter, dismissCallBar: { + self.finish() + self.completion?() + }) + } + +} diff --git a/Riot/Managers/Call/Operations/CallBarPresentOperation.swift b/Riot/Managers/Call/Operations/CallBarPresentOperation.swift new file mode 100644 index 000000000..8e2eb610a --- /dev/null +++ b/Riot/Managers/Call/Operations/CallBarPresentOperation.swift @@ -0,0 +1,43 @@ +// +// Copyright 2020 New Vector Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation + +class CallBarPresentOperation: AsyncOperation { + + private var presenter: CallPresenter + private var activeCallVC: CallViewController? + private var numberOfPausedCalls: UInt + private var completion: (() -> Void)? + + init(presenter: CallPresenter, + activeCallVC: CallViewController?, + numberOfPausedCalls: UInt, + completion: (() -> Void)? = nil) { + self.presenter = presenter + self.activeCallVC = activeCallVC + self.numberOfPausedCalls = numberOfPausedCalls + self.completion = completion + } + + override func main() { + presenter.delegate?.callPresenter(presenter, presentCallBarFor: activeCallVC, numberOfPausedCalls: numberOfPausedCalls, completion: { + self.finish() + self.completion?() + }) + } + +} diff --git a/Riot/Managers/Call/Operations/CallVCDismissOperation.swift b/Riot/Managers/Call/Operations/CallVCDismissOperation.swift new file mode 100644 index 000000000..7a7073d39 --- /dev/null +++ b/Riot/Managers/Call/Operations/CallVCDismissOperation.swift @@ -0,0 +1,40 @@ +// +// Copyright 2020 New Vector Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation + +class CallVCDismissOperation: AsyncOperation { + + private var presenter: CallPresenter + private var callVC: CallViewController + private var completion: (() -> Void)? + + init(presenter: CallPresenter, + callVC: CallViewController, + completion: (() -> Void)? = nil) { + self.presenter = presenter + self.callVC = callVC + self.completion = completion + } + + override func main() { + presenter.delegate?.callPresenter(presenter, dismissCallViewController: callVC, completion: { + self.finish() + self.completion?() + }) + } + +} diff --git a/Riot/Managers/Call/Operations/CallVCEnterPipOperation.swift b/Riot/Managers/Call/Operations/CallVCEnterPipOperation.swift new file mode 100644 index 000000000..be140e7ae --- /dev/null +++ b/Riot/Managers/Call/Operations/CallVCEnterPipOperation.swift @@ -0,0 +1,40 @@ +// +// Copyright 2020 New Vector Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation + +class CallVCEnterPipOperation: AsyncOperation { + + private var presenter: CallPresenter + private var callVC: CallViewController + private var completion: (() -> Void)? + + init(presenter: CallPresenter, + callVC: CallViewController, + completion: (() -> Void)? = nil) { + self.presenter = presenter + self.callVC = callVC + self.completion = completion + } + + override func main() { + presenter.delegate?.callPresenter(presenter, enterPipForCallViewController: callVC, completion: { + self.finish() + self.completion?() + }) + } + +} diff --git a/Riot/Managers/Call/Operations/CallVCExitPipOperation.swift b/Riot/Managers/Call/Operations/CallVCExitPipOperation.swift new file mode 100644 index 000000000..0a4d17147 --- /dev/null +++ b/Riot/Managers/Call/Operations/CallVCExitPipOperation.swift @@ -0,0 +1,40 @@ +// +// Copyright 2020 New Vector Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation + +class CallVCExitPipOperation: AsyncOperation { + + private var presenter: CallPresenter + private var callVC: CallViewController + private var completion: (() -> Void)? + + init(presenter: CallPresenter, + callVC: CallViewController, + completion: (() -> Void)? = nil) { + self.presenter = presenter + self.callVC = callVC + self.completion = completion + } + + override func main() { + presenter.delegate?.callPresenter(presenter, exitPipForCallViewController: callVC, completion: { + self.finish() + self.completion?() + }) + } + +} diff --git a/Riot/Managers/Call/Operations/CallVCPresentOperation.swift b/Riot/Managers/Call/Operations/CallVCPresentOperation.swift new file mode 100644 index 000000000..1a58f86cd --- /dev/null +++ b/Riot/Managers/Call/Operations/CallVCPresentOperation.swift @@ -0,0 +1,40 @@ +// +// Copyright 2020 New Vector Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation + +class CallVCPresentOperation: AsyncOperation { + + private var presenter: CallPresenter + private var callVC: CallViewController + private var completion: (() -> Void)? + + init(presenter: CallPresenter, + callVC: CallViewController, + completion: (() -> Void)? = nil) { + self.presenter = presenter + self.callVC = callVC + self.completion = completion + } + + override func main() { + presenter.delegate?.callPresenter(presenter, presentCallViewController: callVC, completion: { + self.finish() + self.completion?() + }) + } + +} diff --git a/Riot/Managers/Call/PiPAnimator.swift b/Riot/Managers/Call/PiPAnimator.swift new file mode 100644 index 000000000..17faf256e --- /dev/null +++ b/Riot/Managers/Call/PiPAnimator.swift @@ -0,0 +1,149 @@ +// +// Copyright 2020 New Vector Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation + +@objc enum PiPAnimationType: Int { + case enter + case exit +} + +@objcMembers +class PiPAnimator: NSObject { + + private enum Constants { + static let pipViewScale: CGFloat = 0.3 + } + + let animationDuration: TimeInterval + let animationType: PiPAnimationType + weak var pipViewDelegate: PiPViewDelegate? + + init(animationDuration: TimeInterval, + animationType: PiPAnimationType, + pipViewDelegate: PiPViewDelegate?) { + self.animationDuration = animationDuration + self.animationType = animationType + self.pipViewDelegate = pipViewDelegate + super.init() + } + + private func enterAnimation(context: UIViewControllerContextTransitioning) { + guard let keyWindow = UIApplication.shared.keyWindow else { + context.completeTransition(false) + return + } + + guard let fromVC = context.viewController(forKey: .from) else { + context.completeTransition(false) + return + } + + fromVC.willMove(toParent: nil) + // TODO: find a way to call this at the end of animation + context.completeTransition(true) + fromVC.removeFromParent() + + let pipView = PiPView(frame: fromVC.view.bounds) + pipView.contentView = fromVC.view + pipView.delegate = pipViewDelegate + keyWindow.addSubview(pipView) + + let transform = CGAffineTransform(scaleX: Constants.pipViewScale, y: Constants.pipViewScale) + let targetRect = fromVC.view.bounds.applying(transform) + + let animator = UIViewPropertyAnimator(duration: animationDuration, dampingRatio: 1) { + pipView.transform = transform + + pipView.move(in: keyWindow, + to: .bottomLeft, + targetSize: targetRect.size) + } + + animator.addCompletion { (position) in + if let pipable = fromVC as? PictureInPicturable { + pipable.enterPiP?() + } + fromVC.dismiss(animated: false, completion: nil) + } + + animator.startAnimation() + } + + private func exitAnimation(context: UIViewControllerContextTransitioning) { + guard let keyWindow = UIApplication.shared.keyWindow else { + context.completeTransition(false) + return + } + + guard let toVC = context.viewController(forKey: .to), + let snapshot = toVC.view.snapshotView(afterScreenUpdates: true) else { + context.completeTransition(false) + return + } + + guard let pipView = toVC.view.superview as? PiPView else { + return + } + + context.containerView.addSubview(toVC.view) + context.containerView.addSubview(snapshot) + toVC.view.isHidden = true + + toVC.additionalSafeAreaInsets = keyWindow.safeAreaInsets + + pipView.contentView = nil + pipView.removeFromSuperview() + + snapshot.frame = pipView.frame + + let animator = UIViewPropertyAnimator(duration: animationDuration, dampingRatio: 1) { + snapshot.frame = context.finalFrame(for: toVC) + } + + animator.addCompletion { (position) in + + toVC.additionalSafeAreaInsets = .zero + toVC.view.isHidden = false + + snapshot.removeFromSuperview() + if let pipable = toVC as? PictureInPicturable { + pipable.exitPiP?() + } + + context.completeTransition(!context.transitionWasCancelled) + } + + animator.startAnimation() + } +} + +extension PiPAnimator: UIViewControllerAnimatedTransitioning { + + func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval { + return animationDuration + } + + func animateTransition(using transitionContext: UIViewControllerContextTransitioning) { + switch animationType { + case .enter: + enterAnimation(context: transitionContext) + case .exit: + exitAnimation(context: transitionContext) + } + } + +} diff --git a/Riot/Managers/Call/PiPView.swift b/Riot/Managers/Call/PiPView.swift new file mode 100644 index 000000000..2eb15b56c --- /dev/null +++ b/Riot/Managers/Call/PiPView.swift @@ -0,0 +1,239 @@ +// +// Copyright 2020 New Vector Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import UIKit + +@objc enum PiPViewPosition: Int { + case bottomLeft // default value + case bottomRight + case topRight + case topLeft +} + +@objc protocol PiPViewDelegate: class { + @objc optional func pipView(_ view: PiPView, didMoveTo position: PiPViewPosition) + @objc optional func pipViewDidTap(_ view: PiPView) +} + +@objcMembers +class PiPView: UIView { + + private enum Defaults { + static let margins: UIOffset = UIOffset(horizontal: 20, vertical: 20) + static let cornerRadius: CGFloat = 8 + static let animationDuration: TimeInterval = 0.25 + } + + var margins: UIOffset = Defaults.margins { + didSet { + guard self.superview != nil else { return } + self.move(to: self.position, animated: true) + } + } + var cornerRadius: CGFloat = Defaults.cornerRadius { + didSet { + layer.cornerRadius = cornerRadius + } + } + var position: PiPViewPosition = .bottomLeft + weak var delegate: PiPViewDelegate? + + private var originalCenter: CGPoint = .zero + private var isMoving: Bool = false + private lazy var tapGestureRecognizer: UITapGestureRecognizer = { + return UITapGestureRecognizer(target: self, action: #selector(tapped(_:))) + }() + private lazy var panGestureRecognizer: UIPanGestureRecognizer = { + return UIPanGestureRecognizer(target: self, action: #selector(panned(_:))) + }() + private var rotationObserver: NSObjectProtocol? + + init() { + super.init(frame: .zero) + setup() + } + + override init(frame: CGRect) { + super.init(frame: frame) + setup() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + setup() + } + + var contentView: UIView? { + willSet { + if let contentView = contentView { + // restore properties of old content view + contentView.isUserInteractionEnabled = true + } + } didSet { + if let contentView = contentView { + contentView.isUserInteractionEnabled = false + addSubview(contentView) +NSLayoutConstraint.activate([ + contentView.leadingAnchor.constraint(equalTo: leadingAnchor), + contentView.trailingAnchor.constraint(equalTo: trailingAnchor), + contentView.topAnchor.constraint(equalTo: topAnchor), + contentView.bottomAnchor.constraint(equalTo: bottomAnchor) + ]) + } + } + } + + func move(in view: UIView? = nil, + to position: PiPViewPosition = .bottomLeft, + targetSize: CGSize? = nil, + animated: Bool = false, + completion: ((Bool) -> Void)? = nil) { + + let block = { + let targetFrame = self.targetFrame(for: position, in: view, targetSize: targetSize) + self.frame = targetFrame + } + + if animated { + UIView.animate(withDuration: Defaults.animationDuration, animations: block) { (completed) in + self.position = position + completion?(completed) + } + } else { + block() + self.position = position + completion?(true) + } + } + + deinit { + if let rotationObserver = rotationObserver { + NotificationCenter.default.removeObserver(rotationObserver) + } + } + + // MARK: - Private + + private func setup() { + isUserInteractionEnabled = true + clipsToBounds = true + layer.cornerRadius = cornerRadius + addGestureRecognizer(tapGestureRecognizer) + addGestureRecognizer(panGestureRecognizer) + rotationObserver = NotificationCenter.default.addObserver(forName: UIDevice.orientationDidChangeNotification, object: nil, queue: nil) { [weak self] (_) in + guard let self = self else { return } + guard self.superview != nil else { return } + self.move(to: self.position, animated: true) + } + } + + private func targetFrame(for position: PiPViewPosition, + in view: UIView?, + targetSize: CGSize?) -> CGRect { + guard let view = view ?? superview else { + return .zero + } + let targetSize = targetSize ?? frame.size + + switch position { + case .bottomLeft: + let origin = CGPoint(x: margins.horizontal + view.safeAreaInsets.left, + y: view.bounds.height - view.safeAreaInsets.bottom - targetSize.height - margins.vertical) + return CGRect(origin: origin, + size: targetSize) + case .bottomRight: + let origin = CGPoint(x: view.bounds.width - view.safeAreaInsets.right - margins.horizontal - targetSize.width, + y: view.bounds.height - view.safeAreaInsets.bottom - targetSize.height - margins.vertical) + return CGRect(origin: origin, + size: targetSize) + case .topRight: + let origin = CGPoint(x: view.bounds.width - view.safeAreaInsets.right - margins.horizontal - targetSize.width, + y: margins.vertical + view.safeAreaInsets.top) + return CGRect(origin: origin, + size: targetSize) + case .topLeft: + let origin = CGPoint(x: margins.horizontal + view.safeAreaInsets.left, + y: margins.vertical + view.safeAreaInsets.top) + return CGRect(origin: origin, + size: targetSize) + } + } + + @objc private func tapped(_ sender: UITapGestureRecognizer) { + delegate?.pipViewDidTap?(self) + } + + @objc private func panned(_ sender: UIPanGestureRecognizer) { + switch sender.state { + case .possible: + isMoving = false + case .began: + originalCenter = center + isMoving = true + case .changed: + let translation = sender.translation(in: superview) + + if isMoving { + center = CGPoint(x: originalCenter.x + translation.x, + y: originalCenter.y + translation.y) + } + case .ended: + defer { + isMoving = false + } + + if isMoving { + guard let superview = self.superview else { return } + + let translation = sender.translation(in: superview) + + let bounds = superview.bounds + let midX = bounds.width / 2 + let midY = bounds.height / 2 + + let onLeftHalf = originalCenter.x + translation.x < midX + let onTopHalf = originalCenter.y + translation.y < midY + + var newPosition: PiPViewPosition = .bottomLeft + + if onLeftHalf { + if onTopHalf { + newPosition = .topLeft + } else { + newPosition = .bottomLeft + } + } else { + if onTopHalf { + newPosition = .topRight + } else { + newPosition = .bottomRight + } + } + + move(to: newPosition) { (_) in + self.delegate?.pipView?(self, didMoveTo: newPosition) + } + } + case .cancelled: + isMoving = false + case .failed: + isMoving = false + @unknown default: + isMoving = false + } + } + +} diff --git a/Riot/SupportingFiles/App-Common.xcconfig b/Riot/Managers/Call/PictureInPicturable.swift similarity index 69% rename from Riot/SupportingFiles/App-Common.xcconfig rename to Riot/Managers/Call/PictureInPicturable.swift index 7f45a3e58..b8ee9ae05 100644 --- a/Riot/SupportingFiles/App-Common.xcconfig +++ b/Riot/Managers/Call/PictureInPicturable.swift @@ -1,5 +1,5 @@ // -// Copyright 2020 Vector Creations Ltd +// Copyright 2020 New Vector Ltd // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -14,9 +14,11 @@ // limitations under the License. // -// Configuration settings file format documentation can be found at: -// https://help.apple.com/xcode/#/dev745c5c974 +import Foundation -#include "Config/Common.xcconfig" - -PRODUCT_BUNDLE_IDENTIFIER = $(BASE_BUNDLE_IDENTIFIER) +@objc protocol PictureInPicturable { + + @objc optional func enterPiP() + @objc optional func exitPiP() + +} diff --git a/Riot/Managers/PushNotification/PushNotificationService.m b/Riot/Managers/PushNotification/PushNotificationService.m index 5058b1e16..44a639c9e 100644 --- a/Riot/Managers/PushNotification/PushNotificationService.m +++ b/Riot/Managers/PushNotification/PushNotificationService.m @@ -547,15 +547,28 @@ Matrix session observer used to detect new opened sessions. // when we have a VoIP push while the application is killed, session.callManager will not be ready yet. Configure it. [[AppDelegate theDelegate] configureCallManagerIfRequiredForSession:session]; - if (lastCallInvite.isEncrypted) - { - [session decryptEvent:lastCallInvite inTimeline:nil]; - } - NSLog(@"[PushNotificationService] didReceiveIncomingPushWithPayload: lastCallInvite: %@", lastCallInvite); if ([lastCallInvite.eventId isEqualToString:eventId]) { + // We're using this dispatch_group to continue event stream after cache fully processed. + dispatch_group_t dispatchGroup = dispatch_group_create(); + + dispatch_group_enter(dispatchGroup); + // Not continuing in completion block here, because PushKit mandates reporting a new call in the same run loop. + // 'handleBackgroundSyncCacheIfRequiredWithCompletion' is processing to-device events synchronously. + [session handleBackgroundSyncCacheIfRequiredWithCompletion:^{ + dispatch_group_leave(dispatchGroup); + }]; + + if (lastCallInvite.isEncrypted && ![session decryptEvent:lastCallInvite inTimeline:nil]) + { + NSLog(@"[PushNotificationService] didReceiveIncomingPushWithPayload: Failed to decrypt the call invite event: %@", eventId); + completion(); + return; + } + + // process the call invite synchronously [session.callManager handleCallEvent:lastCallInvite]; MXCall *call = [session.callManager callWithCallId:lastCallInvite.content[@"call_id"]]; if (call) @@ -563,8 +576,11 @@ Matrix session observer used to detect new opened sessions. [session.callManager.callKitAdapter reportIncomingCall:call]; NSLog(@"[PushNotificationService] didReceiveIncomingPushWithPayload: Reporting new call in room %@ for the event: %@", roomId, eventId); - // After reporting the call, we can continue async. Launch a background sync to handle call answers/declines on other devices of the user. - [self launchBackgroundSync]; + // Wait for the sync response in cache to be processed for data integrity. + dispatch_group_notify(dispatchGroup, dispatch_get_main_queue(), ^{ + // After reporting the call, we can continue async. Launch a background sync to handle call answers/declines on other devices of the user. + [self launchBackgroundSync]; + }); } else { diff --git a/Riot/Managers/Theme/Theme.swift b/Riot/Managers/Theme/Theme.swift index 24e7bf62a..554b6c6d4 100644 --- a/Riot/Managers/Theme/Theme.swift +++ b/Riot/Managers/Theme/Theme.swift @@ -62,6 +62,10 @@ import UIKit var placeholderTextColor: UIColor { get } var selectedBackgroundColor: UIColor { get } + + // MARK: - Call Screen Specific Colors + + var callScreenButtonTintColor: UIColor { get } // MARK: - Appearance and style @@ -84,7 +88,7 @@ import UIKit /// Color to tint the search background image var matrixSearchBackgroundImageTintColor: UIColor { get } - + // MARK: - Customisation methods diff --git a/Riot/Managers/Theme/Themes/DarkTheme.swift b/Riot/Managers/Theme/Themes/DarkTheme.swift index c7998763b..653d6ed66 100644 --- a/Riot/Managers/Theme/Themes/DarkTheme.swift +++ b/Riot/Managers/Theme/Themes/DarkTheme.swift @@ -79,6 +79,7 @@ class DarkTheme: NSObject, Theme { var placeholderTextColor: UIColor = UIColor(rgb: 0xA1B2D1) // Use secondary text color var selectedBackgroundColor: UIColor = UIColor(rgb: 0x040506) + var callScreenButtonTintColor: UIColor = UIColor(rgb: 0xFFFFFF) var overlayBackgroundColor: UIColor = UIColor(white: 0.7, alpha: 0.5) var matrixSearchBackgroundImageTintColor: UIColor = UIColor(rgb: 0x7E7E7E) diff --git a/Riot/Managers/Theme/Themes/DefaultTheme.swift b/Riot/Managers/Theme/Themes/DefaultTheme.swift index 8dcab9c10..8ea63ec80 100644 --- a/Riot/Managers/Theme/Themes/DefaultTheme.swift +++ b/Riot/Managers/Theme/Themes/DefaultTheme.swift @@ -87,6 +87,8 @@ class DefaultTheme: NSObject, Theme { var selectedBackgroundColor: UIColor = UIColor(rgb: 0xF5F7FA) + var callScreenButtonTintColor: UIColor = UIColor(rgb: 0xFFFFFF) + var overlayBackgroundColor: UIColor = UIColor(white: 0.7, alpha: 0.5) var matrixSearchBackgroundImageTintColor: UIColor = UIColor(rgb: 0xE7E7E7) diff --git a/Riot/Managers/Widgets/Widget.h b/Riot/Managers/Widgets/Widget.h index c2ebc14f5..3146d9d73 100644 --- a/Riot/Managers/Widgets/Widget.h +++ b/Riot/Managers/Widgets/Widget.h @@ -73,7 +73,7 @@ /** The room id of the widget. */ -@property (nonatomic, readonly, nonnull) NSString *roomId; +@property (nonatomic, readonly, nullable) NSString *roomId; /** Create a Widget instance from a widget event. diff --git a/Riot/Managers/Widgets/Widget.m b/Riot/Managers/Widgets/Widget.m index 7a6f00b9f..29eba78ab 100644 --- a/Riot/Managers/Widgets/Widget.m +++ b/Riot/Managers/Widgets/Widget.m @@ -56,16 +56,26 @@ NSString *userId = self.mxSession.myUser.userId; NSString *displayName = self.mxSession.myUser.displayname ? self.mxSession.myUser.displayname : self.mxSession.myUser.userId; NSString *avatarUrl = self.mxSession.myUser.avatarUrl ? self.mxSession.myUser.avatarUrl : @""; + NSString *widgetId = self.widgetId; // Escape everything to build a valid URL string // We can't know where the values escaped here will be inserted in the URL, so the alphanumeric charset is used userId = [MXTools encodeURIComponent:userId]; displayName = [MXTools encodeURIComponent:displayName]; avatarUrl = [MXTools encodeURIComponent:avatarUrl]; + widgetId = [MXTools encodeURIComponent:widgetId]; widgetUrl = [widgetUrl stringByReplacingOccurrencesOfString:@"$matrix_user_id" withString:userId]; widgetUrl = [widgetUrl stringByReplacingOccurrencesOfString:@"$matrix_display_name" withString:displayName]; widgetUrl = [widgetUrl stringByReplacingOccurrencesOfString:@"$matrix_avatar_url" withString:avatarUrl]; + widgetUrl = [widgetUrl stringByReplacingOccurrencesOfString:@"$matrix_widget_id" withString:widgetId]; + + if (self.roomId) + { + NSString *roomId = [MXTools encodeURIComponent:self.roomId]; + widgetUrl = [widgetUrl stringByReplacingOccurrencesOfString:@"$matrix_room_id" withString:roomId]; + } + // Integrate widget data into widget url for (NSString *key in _data) diff --git a/Riot/Modules/Application/AppCoordinator.swift b/Riot/Modules/Application/AppCoordinator.swift index 026e4fc58..a6e42bf87 100755 --- a/Riot/Modules/Application/AppCoordinator.swift +++ b/Riot/Modules/Application/AppCoordinator.swift @@ -57,6 +57,7 @@ final class AppCoordinator: NSObject, AppCoordinatorType { func start() { self.showSplitView(session: self.mainSession) + NSLog("[AppCoordinator] Showed split view") } func open(url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool { @@ -120,6 +121,8 @@ extension AppCoordinator: LegacyAppDelegateDelegate { func legacyAppDelegate(_ legacyAppDelegate: LegacyAppDelegate!, wantsToPopToHomeViewControllerAnimated animated: Bool, completion: (() -> Void)!) { + NSLog("[AppCoordinator] wantsToPopToHomeViewControllerAnimated") + self.splitViewCoordinator?.popToHome(animated: animated, completion: completion) } diff --git a/Riot/Modules/Application/LegacyAppDelegate.h b/Riot/Modules/Application/LegacyAppDelegate.h index 6a53f17b6..ac28af8f8 100644 --- a/Riot/Modules/Application/LegacyAppDelegate.h +++ b/Riot/Modules/Application/LegacyAppDelegate.h @@ -29,6 +29,7 @@ @protocol Configurable; @protocol LegacyAppDelegateDelegate; +@class CallBar; #pragma mark - Notifications /** @@ -50,7 +51,11 @@ extern NSString *const AppDelegateDidValidateEmailNotificationClientSecretKey; */ extern NSString *const AppDelegateUniversalLinkDidChangeNotification; -@interface LegacyAppDelegate : UIResponder +@interface LegacyAppDelegate : UIResponder < +UIApplicationDelegate, +UISplitViewControllerDelegate, +UINavigationControllerDelegate, +JitsiViewControllerDelegate> { // background sync management void (^_completionHandler)(UIBackgroundFetchResult); @@ -234,7 +239,7 @@ extern NSString *const AppDelegateUniversalLinkDidChangeNotification; Call status window displayed when user goes back to app during a call. */ @property (nonatomic, readonly) UIWindow* callStatusBarWindow; -@property (nonatomic, readonly) UIButton* callStatusBarButton; +@property (nonatomic, readonly) CallBar* callBar; #pragma mark - App version management diff --git a/Riot/Modules/Application/LegacyAppDelegate.m b/Riot/Modules/Application/LegacyAppDelegate.m index 21bb7c98c..4c4ff28f3 100644 --- a/Riot/Modules/Application/LegacyAppDelegate.m +++ b/Riot/Modules/Application/LegacyAppDelegate.m @@ -90,7 +90,7 @@ NSString *const AppDelegateDidValidateEmailNotificationClientSecretKey = @"AppDe NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUniversalLinkDidChangeNotification"; -@interface LegacyAppDelegate () +@interface LegacyAppDelegate () { /** Reachability observer @@ -113,16 +113,6 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni id addedAccountObserver; id removedAccountObserver; - /** - matrix call observer used to handle incoming/outgoing call. - */ - id matrixCallObserver; - - /** - The current call view controller (if any). - */ - CallViewController *currentCallViewController; - /** Incoming room key requests observers */ @@ -177,7 +167,6 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni */ BOOL isErrorNotificationSuspended; - /** The listeners to call events. There is one listener per MXSession. @@ -235,6 +224,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni @property (nonatomic, strong) PushNotificationService *pushNotificationService; @property (nonatomic, strong) PushNotificationStore *pushNotificationStore; @property (nonatomic, strong) LocalAuthenticationService *localAuthenticationService; +@property (nonatomic, strong) CallPresenter *callPresenter; @property (nonatomic, strong) MajorUpdateManager *majorUpdateManager; @@ -254,7 +244,8 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni // Redirect NSLogs to files only if we are not debugging if (!isatty(STDERR_FILENO)) { - [MXLogger redirectNSLogToFiles:YES numberOfFiles:50]; + NSUInteger sizeLimit = 100 * 1024 * 1024; // 100MB + [MXLogger redirectNSLogToFiles:YES numberOfFiles:50 sizeLimit:sizeLimit]; } NSLog(@"[AppDelegate] initialize: Done"); @@ -436,7 +427,6 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni [NSBundle mxk_setLanguage:language]; [NSBundle mxk_setFallbackLanguage:@"en"]; - mxSessionArray = [NSMutableArray array]; callEventsListeners = [NSMutableDictionary dictionary]; @@ -464,6 +454,9 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni [analytics start]; self.localAuthenticationService = [[LocalAuthenticationService alloc] initWithPinCodePreferences:[PinCodePreferences shared]]; + + self.callPresenter = [[CallPresenter alloc] init]; + self.callPresenter.delegate = self; self.pushNotificationStore = [PushNotificationStore new]; self.pushNotificationService = [[PushNotificationService alloc] initWithPushNotificationStore:self.pushNotificationStore]; @@ -1146,9 +1139,9 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni [[NSNotificationCenter defaultCenter] postNotificationName:AppDelegateUniversalLinkDidChangeNotification object:nil]; } - if ([webURL.path isEqualToString:@"/"]) + if ([self handleServerProvionningLink:webURL]) { - return [self handleServerProvionningLink:webURL]; + return YES; } NSString *validateEmailSubmitTokenPath = @"validate/email/submitToken"; @@ -1255,6 +1248,10 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni NSLog(@"[AppDelegate] Universal link: handleUniversalLinkFragment: %@", fragment); + // Make sure we have plain utf8 character for separators + fragment = [fragment stringByRemovingPercentEncoding]; + NSLog(@"[AppDelegate] Universal link: handleUniversalLinkFragment: %@", fragment); + // The app manages only one universal link at a time // Discard any pending one [self resetPendingUniversalLink]; @@ -1376,9 +1373,27 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni withString:[MXTools encodeURIComponent:roomId] ]; - universalLinkFragmentPendingRoomAlias = @{roomId: roomIdOrAlias}; + // The previous operation can fail because of percent encoding + // TBH we are not clean on data inputs. For the moment, just give another try with no encoding + // TODO: Have a dedicated module and tests to handle universal links (matrix.to, email link, etc) + if ([newUniversalLinkFragment isEqualToString:fragment]) + { + newUniversalLinkFragment = + [fragment stringByReplacingOccurrencesOfString:roomIdOrAlias + withString:[MXTools encodeURIComponent:roomId]]; + } - [self handleUniversalLinkFragment:newUniversalLinkFragment]; + if (![newUniversalLinkFragment isEqualToString:fragment]) + { + universalLinkFragmentPendingRoomAlias = @{roomId: roomIdOrAlias}; + + [self handleUniversalLinkFragment:newUniversalLinkFragment]; + } + else + { + // Do not continue. Else we will loop forever + NSLog(@"[AppDelegate] Universal link: Error: Cannot resolve alias in %@ to the room id %@", fragment, roomId); + } } } failure:^(NSError *error) { @@ -1422,40 +1437,32 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni // FIXME: In case of multi-account, ask the user which one to use MXKAccount* account = accountManager.activeAccounts.firstObject; - RoomPreviewData *roomPreviewData; + RoomPreviewData *roomPreviewData = [[RoomPreviewData alloc] initWithRoomId:roomIdOrAlias + andSession:account.mxSession]; if (queryParams) { + roomPreviewData.viaServers = queryParams[@"via"]; + } + + // Is it a link to an event of a room? + // If yes, the event will be displayed once the room is joined + roomPreviewData.eventId = (pathParams.count >= 3) ? pathParams[2] : nil; + + // Try to get more information about the room before opening its preview + [roomPreviewData peekInRoom:^(BOOL succeeded) { + // Note: the activity indicator will not disappear if the session is not ready [homeViewController stopActivityIndicator]; - roomPreviewData = [[RoomPreviewData alloc] initWithRoomId:roomIdOrAlias emailInvitationParams:queryParams andSession:account.mxSession]; - roomPreviewData.viaServers = queryParams[@"via"]; + // If no data is available for this room, we name it with the known room alias (if any). + if (!succeeded && universalLinkFragmentPendingRoomAlias[roomIdOrAlias]) + { + roomPreviewData.roomName = universalLinkFragmentPendingRoomAlias[roomIdOrAlias]; + } + universalLinkFragmentPendingRoomAlias = nil; + [self showRoomPreview:roomPreviewData]; - } - else - { - roomPreviewData = [[RoomPreviewData alloc] initWithRoomId:roomIdOrAlias andSession:account.mxSession]; - - // Is it a link to an event of a room? - // If yes, the event will be displayed once the room is joined - roomPreviewData.eventId = (pathParams.count >= 3) ? pathParams[2] : nil; - - // Try to get more information about the room before opening its preview - [roomPreviewData peekInRoom:^(BOOL succeeded) { - - // Note: the activity indicator will not disappear if the session is not ready - [homeViewController stopActivityIndicator]; - - // If no data is available for this room, we name it with the known room alias (if any). - if (!succeeded && universalLinkFragmentPendingRoomAlias[roomIdOrAlias]) - { - roomPreviewData.roomName = universalLinkFragmentPendingRoomAlias[roomIdOrAlias]; - } - universalLinkFragmentPendingRoomAlias = nil; - - [self showRoomPreview:roomPreviewData]; - }]; - } + }]; } } @@ -1764,8 +1771,8 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni } else if (mxSession.state == MXSessionStateStoreDataReady) { - // A new call observer may be added here - [self addMatrixCallObserver]; + // start the call service + [self.callPresenter start]; // Look for the account related to this session. NSArray *mxAccounts = [MXKAccountManager sharedManager].activeAccounts; @@ -1969,6 +1976,9 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni // Register the session to the widgets manager [[WidgetManager sharedManager] addMatrixSession:mxSession]; + // register the session to the call service + [_callPresenter addMatrixSession:mxSession]; + [mxSessionArray addObject:mxSession]; // Do the one time check on device id @@ -1982,6 +1992,9 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni // Update home data sources [_masterTabBarController removeMatrixSession:mxSession]; + + // remove session from the call service + [_callPresenter removeMatrixSession:mxSession]; // Update the widgets manager [[WidgetManager sharedManager] removeMatrixSession:mxSession]; @@ -1997,10 +2010,10 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni [mxSessionArray removeObject:mxSession]; - if (!mxSessionArray.count && matrixCallObserver) + if (!mxSessionArray.count) { - [[NSNotificationCenter defaultCenter] removeObserver:matrixCallObserver]; - matrixCallObserver = nil; + // if no session left, stop the call service + [self.callPresenter stop]; } } @@ -2199,113 +2212,6 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni } } -- (void)addMatrixCallObserver -{ - if (matrixCallObserver) - { - return; - } - - MXWeakify(self); - - // Register call observer in order to handle incoming calls - matrixCallObserver = [[NSNotificationCenter defaultCenter] addObserverForName:kMXCallManagerNewCall - object:nil - queue:[NSOperationQueue mainQueue] - usingBlock:^(NSNotification *notif) - { - MXStrongifyAndReturnIfNil(self); - - // Ignore the call if a call is already in progress - if (!self->currentCallViewController && !self->_jitsiViewController) - { - MXCall *mxCall = (MXCall*)notif.object; - - BOOL isCallKitEnabled = [MXCallKitAdapter callKitAvailable] && [MXKAppSettings standardAppSettings].isCallKitEnabled; - - // Prepare the call view controller - self->currentCallViewController = [CallViewController callViewController:nil]; - self->currentCallViewController.playRingtone = !isCallKitEnabled; - self->currentCallViewController.mxCall = mxCall; - self->currentCallViewController.delegate = self; - - UIApplicationState applicationState = UIApplication.sharedApplication.applicationState; - - // App has been woken by PushKit notification in the background - if (applicationState == UIApplicationStateBackground && mxCall.isIncoming) - { - // Create backgound task. - // Without CallKit this will allow us to play vibro until the call was ended - // With CallKit we'll inform the system when the call is ended to let the system terminate our app to save resources - id handler = [MXSDKOptions sharedInstance].backgroundModeHandler; - id callBackgroundTask = [handler startBackgroundTaskWithName:@"[AppDelegate] addMatrixCallObserver" expirationHandler:nil]; - - MXWeakify(self); - - // Start listening for call state change notifications - __weak NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; - __block id token = [[NSNotificationCenter defaultCenter] addObserverForName:kMXCallStateDidChange - object:mxCall - queue:nil - usingBlock:^(NSNotification * _Nonnull note) { - - MXStrongifyAndReturnIfNil(self); - - MXCall *call = (MXCall *)note.object; - - if (call.state == MXCallStateEnded) - { - // Set call vc to nil to let our app handle new incoming calls even it wasn't killed by the system - [self->currentCallViewController destroy]; - self->currentCallViewController = nil; - [notificationCenter removeObserver:token]; - [callBackgroundTask stop]; - } - }]; - } - - if (mxCall.isIncoming && isCallKitEnabled) - { - MXWeakify(self); - - // Let's CallKit display the system incoming call screen - // Show the callVC only after the user answered the call - __weak NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; - __block id token = [[NSNotificationCenter defaultCenter] addObserverForName:kMXCallStateDidChange - object:mxCall - queue:nil - usingBlock:^(NSNotification * _Nonnull note) { - - MXStrongifyAndReturnIfNil(self); - - MXCall *call = (MXCall *)note.object; - - NSLog(@"[AppDelegate] call.state: %@", call); - - if (call.state == MXCallStateCreateAnswer) - { - [notificationCenter removeObserver:token]; - - NSLog(@"[AppDelegate] presentCallViewController"); - [self presentCallViewController:NO completion:nil]; - } - else if (call.state == MXCallStateEnded) - { - [notificationCenter removeObserver:token]; - - // Set call vc to nil to let our app handle new incoming calls even it wasn't killed by the system - [self dismissCallViewController:self->currentCallViewController completion:nil]; - } - }]; - } - else - { - [self presentCallViewController:YES completion:nil]; - } - } - }]; -} - - (void)handleAppState { MXSession *mainSession = self.mxSessions.firstObject; @@ -2333,6 +2239,11 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni case MXSessionStateSyncInProgress: // Stay in launching during the first server sync if the store is empty. isLaunching = (mainSession.rooms.count == 0 && launchAnimationContainerView); + + if (mainSession.crypto.crossSigning && mainSession.crypto.crossSigning.state == MXCrossSigningStateCrossSigningExists) + { + [mainSession.crypto setOutgoingKeyRequestsEnabled:NO onComplete:nil]; + } break; default: isLaunching = NO; @@ -3047,78 +2958,6 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni }]; } -#pragma mark - MXKCallViewControllerDelegate - -- (void)dismissCallViewController:(MXKCallViewController *)callViewController completion:(void (^)(void))completion -{ - if (currentCallViewController && callViewController == currentCallViewController) - { - if (callViewController.isBeingPresented) - { - // Here the presentation of the call view controller is in progress - // Postpone the dismiss - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [self dismissCallViewController:callViewController completion:completion]; - }); - } - // Check whether the call view controller is actually presented - else if (callViewController.presentingViewController) - { - BOOL callIsEnded = (callViewController.mxCall.state == MXCallStateEnded); - NSLog(@"Call view controller is dismissed (%d)", callIsEnded); - - [callViewController dismissViewControllerAnimated:YES completion:^{ - - if (!callIsEnded) - { - NSString *btnTitle = [NSString stringWithFormat:NSLocalizedStringFromTable(@"active_call_details", @"Vector", nil), callViewController.callerNameLabel.text]; - [self addCallStatusBar:btnTitle]; - } - - if ([callViewController isKindOfClass:[CallViewController class]] - && ((CallViewController*)callViewController).shouldPromptForStunServerFallback) - { - [self promptForStunServerFallback]; - } - - if (completion) - { - completion(); - } - - }]; - - if (callIsEnded) - { - [self removeCallStatusBar]; - - // Release properly - [currentCallViewController destroy]; - currentCallViewController = nil; - } - } - else if (_callStatusBarWindow) - { - // Here the call view controller was not presented. - NSLog(@"Call view controller was not presented"); - - // Workaround to manage the "back to call" banner: present temporarily the call screen. - // This will correctly manage the navigation bar layout. - [self presentCallViewController:YES completion:^{ - - [self dismissCallViewController:currentCallViewController completion:completion]; - - }]; - } - else - { - // Release properly - [currentCallViewController destroy]; - currentCallViewController = nil; - } - } -} - - (void)promptForStunServerFallback { [_errorNotification dismissViewControllerAnimated:NO completion:nil]; @@ -3170,7 +3009,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni - (void)displayJitsiViewControllerWithWidget:(Widget*)jitsiWidget andVideo:(BOOL)video { #ifdef CALL_STACK_JINGLE - if (!_jitsiViewController && !currentCallViewController) + if (!_jitsiViewController) { MXWeakify(self); [self checkPermissionForNativeWidget:jitsiWidget fromUrl:JitsiService.shared.serverURL completion:^(BOOL granted) { @@ -3238,7 +3077,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni MXRoom *room = [_jitsiViewController.widget.mxSession roomWithRoomId:_jitsiViewController.widget.roomId]; NSString *btnTitle = [NSString stringWithFormat:NSLocalizedStringFromTable(@"active_call_details", @"Vector", nil), room.summary.displayname]; - [self addCallStatusBar:btnTitle]; + [self updateCallStatusBar:btnTitle]; if (completion) { @@ -3381,8 +3220,13 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni return result; } -- (void)addCallStatusBar:(NSString*)buttonTitle +- (void)updateCallStatusBar:(NSString*)title { + if (_callBar) + { + _callBar.title = title; + return; + } // Add a call status bar CGSize topBarSize = CGSizeMake([[UIScreen mainScreen] bounds].size.width, [self calculateCallStatusBarHeight]); @@ -3390,42 +3234,20 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni _callStatusBarWindow.windowLevel = UIWindowLevelStatusBar; // Create statusBarButton - _callStatusBarButton = [UIButton buttonWithType:UIButtonTypeCustom]; - _callStatusBarButton.frame = CGRectMake(0, 0, topBarSize.width, topBarSize.height); - - [_callStatusBarButton setTitle:buttonTitle forState:UIControlStateNormal]; - [_callStatusBarButton setTitle:buttonTitle forState:UIControlStateHighlighted]; - - _callStatusBarButton.titleLabel.textColor = ThemeService.shared.theme.backgroundColor; - - _callStatusBarButton.titleLabel.font = [UIFont systemFontOfSize:17 weight:UIFontWeightMedium]; - - [_callStatusBarButton setBackgroundColor:ThemeService.shared.theme.tintColor]; - [_callStatusBarButton addTarget:self action:@selector(onCallStatusBarButtonPressed) forControlEvents:UIControlEventTouchUpInside]; + _callBar = [CallBar instantiate]; + _callBar.frame = CGRectMake(0, 0, topBarSize.width, topBarSize.height); + _callBar.title = title; + _callBar.backgroundColor = ThemeService.shared.theme.tintColor; + _callBar.delegate = self; // Place button into the new window - [_callStatusBarButton setTranslatesAutoresizingMaskIntoConstraints:NO]; - [_callStatusBarWindow addSubview:_callStatusBarButton]; - - // Force callStatusBarButton to fill the window (to handle auto-layout in case of screen rotation) - NSLayoutConstraint *widthConstraint = [NSLayoutConstraint constraintWithItem:_callStatusBarButton - attribute:NSLayoutAttributeWidth - relatedBy:NSLayoutRelationEqual - toItem:_callStatusBarWindow - attribute:NSLayoutAttributeWidth - multiplier:1.0 - constant:0]; - - NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:_callStatusBarButton - attribute:NSLayoutAttributeHeight - relatedBy:NSLayoutRelationEqual - toItem:_callStatusBarWindow - attribute:NSLayoutAttributeHeight - multiplier:1.0 - constant:0]; - - [NSLayoutConstraint activateConstraints:@[widthConstraint, heightConstraint]]; + [_callBar setTranslatesAutoresizingMaskIntoConstraints:NO]; + [_callStatusBarWindow addSubview:_callBar]; + // Force callBar to fill the window (to handle auto-layout in case of screen rotation) + [_callBar.widthAnchor constraintEqualToAnchor:_callStatusBarWindow.widthAnchor].active = YES; + [_callBar.heightAnchor constraintEqualToAnchor:_callStatusBarWindow.heightAnchor].active = YES; + _callStatusBarWindow.hidden = NO; [self statusBarDidChangeFrame]; @@ -3446,41 +3268,14 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni // Hide & destroy it _callStatusBarWindow.hidden = YES; - [_callStatusBarButton removeFromSuperview]; - _callStatusBarButton = nil; + [_callBar removeFromSuperview]; + _callBar = nil; _callStatusBarWindow = nil; [self statusBarDidChangeFrame]; } } -- (void)onCallStatusBarButtonPressed -{ - if (currentCallViewController) - { - [self presentCallViewController:YES completion:nil]; - } - else if (_jitsiViewController) - { - [self presentJitsiViewController:nil]; - } -} - -- (void)presentCallViewController:(BOOL)animated completion:(void (^)(void))completion -{ - [self removeCallStatusBar]; - - if (currentCallViewController) - { - if (@available(iOS 13.0, *)) - { - currentCallViewController.modalPresentationStyle = UIModalPresentationFullScreen; - } - - [self presentViewController:currentCallViewController animated:animated completion:completion]; - } -} - - (void)statusBarDidChangeFrame { UIApplication *app = [UIApplication sharedApplication]; @@ -3517,20 +3312,6 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni } } - UIEdgeInsets callBarButtonContentEdgeInsets = UIEdgeInsetsZero; - - if (@available(iOS 11.0, *)) - { - callBarButtonContentEdgeInsets = UIApplication.sharedApplication.keyWindow.safeAreaInsets; - // should override top inset - callBarButtonContentEdgeInsets.top = callStatusBarHeight - CALL_STATUS_BAR_HEIGHT; - // should ignore bottom inset - callBarButtonContentEdgeInsets.bottom = 0.0; - // should keep left, and right insets as original - } - - _callStatusBarButton.contentEdgeInsets = callBarButtonContentEdgeInsets; - // Apply the vertical offset due to call status bar rootControllerFrame.origin.y = callStatusBarHeight; rootControllerFrame.size.height -= callStatusBarHeight; @@ -3575,7 +3356,10 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni kMXEventTypeStringCallInvite, kMXEventTypeStringCallCandidates, kMXEventTypeStringCallAnswer, - kMXEventTypeStringCallHangup + kMXEventTypeStringCallSelectAnswer, + kMXEventTypeStringCallHangup, + kMXEventTypeStringCallReject, + kMXEventTypeStringCallNegotiate ] onEvent:^(MXEvent *event, MXTimelineDirection direction, id customObject) { @@ -3631,23 +3415,24 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { - // Reject the call by sending the hangup event - NSDictionary *content = @{ - @"call_id": callInviteEventContent.callId, - @"version": @(0) - }; - - [mxSession.matrixRestClient sendEventToRoom:event.roomId eventType:kMXEventTypeStringCallHangup content:content txnId:nil success:nil failure:^(NSError *error) { - NSLog(@"[AppDelegate] enableNoVoIPOnMatrixSession: ERROR: Cannot send m.call.hangup event."); - }]; - - if (weakSelf) - { - typeof(self) self = weakSelf; - self->noCallSupportAlert = nil; - } - - }]]; + // Reject the call by sending the hangup event + NSDictionary *content = @{ + @"call_id": callInviteEventContent.callId, + @"version": kMXCallVersion, + @"party_id": mxSession.myDeviceId + }; + + [mxSession.matrixRestClient sendEventToRoom:event.roomId eventType:kMXEventTypeStringCallReject content:content txnId:nil success:nil failure:^(NSError *error) { + NSLog(@"[AppDelegate] enableNoVoIPOnMatrixSession: ERROR: Cannot send m.call.reject event."); + }]; + + if (weakSelf) + { + typeof(self) self = weakSelf; + self->noCallSupportAlert = nil; + } + + }]]; [self showNotificationAlert:noCallSupportAlert]; break; @@ -3655,6 +3440,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni case MXEventTypeCallAnswer: case MXEventTypeCallHangup: + case MXEventTypeCallReject: // The call has ended. The alert is no more needed. if (noCallSupportAlert) { @@ -3726,81 +3512,100 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni return; } + MXWeakify(self); [mxSession.crypto pendingKeyRequests:^(MXUsersDevicesMap *> *pendingKeyRequests) { - - NSLog(@"[AppDelegate] checkPendingRoomKeyRequestsInSession: pendingKeyRequests.count: %@. Already displayed: %@", + + MXStrongifyAndReturnIfNil(self); + NSLog(@"[AppDelegate] checkPendingRoomKeyRequestsInSession: cross-signing state: %ld, pendingKeyRequests.count: %@. Already displayed: %@", + mxSession.crypto.crossSigning.state, @(pendingKeyRequests.count), - roomKeyRequestViewController ? @"YES" : @"NO"); + self->roomKeyRequestViewController ? @"YES" : @"NO"); - if (roomKeyRequestViewController) + if (!mxSession.crypto.crossSigning || mxSession.crypto.crossSigning.state == MXCrossSigningStateNotBootstrapped) { - // Check if the current RoomKeyRequestViewController is still valid - MXSession *currentMXSession = roomKeyRequestViewController.mxSession; - NSString *currentUser = roomKeyRequestViewController.device.userId; - NSString *currentDevice = roomKeyRequestViewController.device.deviceId; - - NSArray *currentPendingRequest = [pendingKeyRequests objectForDevice:currentDevice forUser:currentUser]; - - if (currentMXSession == mxSession && currentPendingRequest.count == 0) + if (self->roomKeyRequestViewController) { - NSLog(@"[AppDelegate] checkPendingRoomKeyRequestsInSession: Cancel current dialog"); + // Check if the current RoomKeyRequestViewController is still valid + MXSession *currentMXSession = self->roomKeyRequestViewController.mxSession; + NSString *currentUser = self->roomKeyRequestViewController.device.userId; + NSString *currentDevice = self->roomKeyRequestViewController.device.deviceId; - // The key request has been probably cancelled, remove the popup - [roomKeyRequestViewController hide]; - roomKeyRequestViewController = nil; + NSArray *currentPendingRequest = [pendingKeyRequests objectForDevice:currentDevice forUser:currentUser]; + + if (currentMXSession == mxSession && currentPendingRequest.count == 0) + { + NSLog(@"[AppDelegate] checkPendingRoomKeyRequestsInSession: Cancel current dialog"); + + // The key request has been probably cancelled, remove the popup + [self->roomKeyRequestViewController hide]; + self->roomKeyRequestViewController = nil; + } } } - if (!roomKeyRequestViewController && pendingKeyRequests.count) + if (!self->roomKeyRequestViewController && pendingKeyRequests.count) { // Pick the first coming user/device pair NSString *userId = pendingKeyRequests.userIds.firstObject; NSString *deviceId = [pendingKeyRequests deviceIdsForUser:userId].firstObject; - + // Give the client a chance to refresh the device list + MXWeakify(self); [mxSession.crypto downloadKeys:@[userId] forceDownload:NO success:^(MXUsersDevicesMap *usersDevicesInfoMap, NSDictionary *crossSigningKeysMap) { - + + MXStrongifyAndReturnIfNil(self); MXDeviceInfo *deviceInfo = [usersDevicesInfoMap objectForDevice:deviceId forUser:userId]; if (deviceInfo) { - BOOL wasNewDevice = (deviceInfo.trustLevel.localVerificationStatus == MXDeviceUnknown); - - void (^openDialog)(void) = ^void() + if (!mxSession.crypto.crossSigning || mxSession.crypto.crossSigning.state == MXCrossSigningStateNotBootstrapped) { - NSLog(@"[AppDelegate] checkPendingRoomKeyRequestsInSession: Open dialog for %@", deviceInfo); + BOOL wasNewDevice = (deviceInfo.trustLevel.localVerificationStatus == MXDeviceUnknown); + + void (^openDialog)(void) = ^void() + { + NSLog(@"[AppDelegate] checkPendingRoomKeyRequestsInSession: Open dialog for %@", deviceInfo); - roomKeyRequestViewController = [[RoomKeyRequestViewController alloc] initWithDeviceInfo:deviceInfo wasNewDevice:wasNewDevice andMatrixSession:mxSession onComplete:^{ + self->roomKeyRequestViewController = [[RoomKeyRequestViewController alloc] initWithDeviceInfo:deviceInfo wasNewDevice:wasNewDevice andMatrixSession:mxSession onComplete:^{ - roomKeyRequestViewController = nil; + self->roomKeyRequestViewController = nil; - // Check next pending key request, if any + // Check next pending key request, if any + [self checkPendingRoomKeyRequests]; + }]; + + [self->roomKeyRequestViewController show]; + }; + + // If the device was new before, it's not any more. + if (wasNewDevice) + { + [mxSession.crypto setDeviceVerification:MXDeviceUnverified forDevice:deviceId ofUser:userId success:openDialog failure:nil]; + } + else + { + openDialog(); + } + } + else if (deviceInfo.trustLevel.isVerified) + { + [mxSession.crypto acceptAllPendingKeyRequestsFromUser:userId andDevice:deviceId onComplete:^{ [self checkPendingRoomKeyRequests]; }]; - - [roomKeyRequestViewController show]; - }; - - // If the device was new before, it's not any more. - if (wasNewDevice) - { - [mxSession.crypto setDeviceVerification:MXDeviceUnverified forDevice:deviceId ofUser:userId success:openDialog failure:nil]; } else { - openDialog(); + [mxSession.crypto ignoreAllPendingKeyRequestsFromUser:userId andDevice:deviceId onComplete:^{ + [self checkPendingRoomKeyRequests]; + }]; } } else { NSLog(@"[AppDelegate] checkPendingRoomKeyRequestsInSession: No details found for device %@:%@", userId, deviceId); - - // Ignore this device to avoid to loop on it [mxSession.crypto ignoreAllPendingKeyRequestsFromUser:userId andDevice:deviceId onComplete:^{ - // And check next requests [self checkPendingRoomKeyRequests]; }]; } - } failure:^(NSError *error) { // Retry later NSLog(@"[AppDelegate] checkPendingRoomKeyRequestsInSession: Failed to download device keys. Retry"); @@ -3972,6 +3777,12 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni - (void)keyVerificationCoordinatorBridgePresenterDelegateDidComplete:(KeyVerificationCoordinatorBridgePresenter *)coordinatorBridgePresenter otherUserId:(NSString * _Nonnull)otherUserId otherDeviceId:(NSString * _Nonnull)otherDeviceId { + MXCrypto *crypto = coordinatorBridgePresenter.session.crypto; + if (!crypto.backup.hasPrivateKeyInCryptoStore || !crypto.backup.enabled) + { + NSLog(@"[AppDelegate][MXKeyVerification] requestAllPrivateKeys: Request key backup private keys"); + [crypto setOutgoingKeyRequestsEnabled:YES onComplete:nil]; + } [self dismissKeyVerificationCoordinatorBridgePresenter]; } @@ -4649,6 +4460,145 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni } } +#pragma mark - CallPresenterDelegate + +- (BOOL)callPresenter:(CallPresenter *)presenter shouldHandleNewCall:(MXCall *)call +{ + // Ignore the call if a call is already in progress + return _jitsiViewController == nil; +} + +- (void)callPresenter:(CallPresenter *)presenter presentCallViewController:(CallViewController *)viewController completion:(void (^)(void))completion +{ + if (@available(iOS 13.0, *)) + { + viewController.modalPresentationStyle = UIModalPresentationFullScreen; + } + + [self presentViewController:viewController animated:YES completion:completion]; +} + +- (void)callPresenter:(CallPresenter *)presenter dismissCallViewController:(CallViewController *)viewController completion:(void (^)(void))completion +{ + // Check whether the call view controller is actually presented + if (viewController.presentingViewController) + { + [viewController dismissViewControllerAnimated:YES completion:^{ + + if (viewController.shouldPromptForStunServerFallback) + { + [self promptForStunServerFallback]; + } + + if (completion) + { + completion(); + } + + }]; + } + else + { + if (completion) + { + completion(); + } + } +} + +- (void)callPresenter:(CallPresenter *)presenter presentCallBarFor:(CallViewController *)activeCallViewController numberOfPausedCalls:(NSUInteger)numberOfPausedCalls completion:(void (^)(void))completion +{ + NSString *btnTitle; + + if (activeCallViewController) + { + if (numberOfPausedCalls == 0) + { + // only one active + btnTitle = [NSString stringWithFormat:NSLocalizedStringFromTable(@"callbar_only_single_active", @"Vector", nil), activeCallViewController.callStatusLabel.text]; + } + else if (numberOfPausedCalls == 1) + { + // one active and one paused + btnTitle = [NSString stringWithFormat:NSLocalizedStringFromTable(@"callbar_active_and_single_paused", @"Vector", nil), activeCallViewController.callStatusLabel.text]; + } + else + { + // one active and multiple paused + btnTitle = [NSString stringWithFormat:NSLocalizedStringFromTable(@"callbar_active_and_multiple_paused", @"Vector", nil), activeCallViewController.callStatusLabel.text, @(numberOfPausedCalls)]; + } + } + else + { + // no active calls + if (numberOfPausedCalls == 1) + { + btnTitle = NSLocalizedStringFromTable(@"callbar_only_single_paused", @"Vector", nil); + } + else + { + btnTitle = [NSString stringWithFormat:NSLocalizedStringFromTable(@"callbar_only_multiple_paused", @"Vector", nil), @(numberOfPausedCalls)]; + } + } + + [self updateCallStatusBar:btnTitle]; + + if (completion) + { + completion(); + } +} + +- (void)callPresenter:(CallPresenter *)presenter dismissCallBar:(void (^)(void))completion +{ + [self removeCallStatusBar]; + + if (completion) + { + completion(); + } +} + +- (void)callPresenter:(CallPresenter *)presenter enterPipForCallViewController:(CallViewController *)viewController completion:(void (^)(void))completion +{ + // Check whether the call view controller is actually presented + if (viewController.presentingViewController) + { + [viewController dismissViewControllerAnimated:YES completion:completion]; + } + else + { + if (completion) + { + completion(); + } + } +} + +- (void)callPresenter:(CallPresenter *)presenter exitPipForCallViewController:(CallViewController *)viewController completion:(void (^)(void))completion +{ + if (@available(iOS 13.0, *)) + { + viewController.modalPresentationStyle = UIModalPresentationFullScreen; + } + + [self presentViewController:viewController animated:YES completion:completion]; +} + +#pragma mark - CallBarDelegate + +- (void)callBarDidTapReturnButton:(CallBar *)callBar +{ + if ([_callPresenter callStatusBarButtonTapped]) + { + return; + } + else if (_jitsiViewController) + { + [self presentJitsiViewController:nil]; + } +} + #pragma mark - Authentication - (BOOL)continueSSOLoginWithToken:(NSString*)loginToken txnId:(NSString*)txnId diff --git a/Riot/Modules/AuthenticatedSession/AuthenticatedSessionViewControllerFactory.swift b/Riot/Modules/AuthenticatedSession/AuthenticatedSessionViewControllerFactory.swift deleted file mode 100644 index a62f57cd9..000000000 --- a/Riot/Modules/AuthenticatedSession/AuthenticatedSessionViewControllerFactory.swift +++ /dev/null @@ -1,224 +0,0 @@ -/* - Copyright 2020 New Vector Ltd - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ -import Foundation - -enum AuthenticatedSessionViewControllerFactoryError: Int, Error, CustomNSError { - case flowNotSupported = 0 - - // MARK: - CustomNSError - - static let errorDomain = "AuthenticatedSessionViewControllerFactoryErrorDomain" - - var errorCode: Int { return self.rawValue } - - var errorUserInfo: [String: Any] { - let userInfo: [String: Any] - - switch self { - case .flowNotSupported: - userInfo = [NSLocalizedDescriptionKey: VectorL10n.authenticatedSessionFlowNotSupported] - } - return userInfo - } -} - -/// This class creates view controllers that can handle an authentication flow for given requests. -@objcMembers -final class AuthenticatedSessionViewControllerFactory: NSObject { - - // MARK: - Constants - - // MARK: - Properties - - // MARK: Private - - private let session: MXSession - - - // MARK: Public - - // MARK: - Setup - - init(session: MXSession) { - self.session = session - } - - - // MARK: - Public methods - - /// Create a view controller to handle an authentication flow for a given request. - /// - /// - Parameters: - /// - path: the request path. - /// - httpMethod: the request http method. - /// - title: the title to use in the view controller. - /// - message: the information to display in the view controller. - /// - onViewController: the block called when the view controller is ready. The caller must display it. - /// - onAuthenticated: the block called when the user finished to enter their credentials. - /// - onCancelled: the block called when the user cancelled the authentication. - /// - onFailure: the blocked called on error. - @discardableResult - func viewController(forPath path: String, - httpMethod: String, - title: String?, - message: String?, - onViewController: @escaping (UIViewController) -> Void, - onAuthenticated: @escaping ([String: Any]) -> Void, - onCancelled: @escaping () -> Void, - onFailure: @escaping (Error) -> Void) -> MXHTTPOperation { - - // Get the authentication flow required for this API - return session.matrixRestClient.authSessionForRequest(withMethod: httpMethod, path: path, parameters: [:], success: { [weak self] (authenticationSession) in - guard let self = self else { - return - } - - guard let authenticationSession = authenticationSession, let flows = authenticationSession.flows else { - onFailure(AuthenticatedSessionViewControllerFactoryError.flowNotSupported) - return - } - - // Return the corresponding VC - if self.hasPasswordFlow(inFlows: flows) { - let authViewController = self.createPasswordViewController(title: title, - message: message, - authenticationSession: authenticationSession, - onAuthenticated: onAuthenticated, - onCancelled: onCancelled, - onFailure: onFailure) - onViewController(authViewController) - } else { - // Flow not supported yet - onFailure(AuthenticatedSessionViewControllerFactoryError.flowNotSupported) - } - - }, failure: { (error) in - guard let error = error else { - return - } - - onFailure(error) - }) - } - - /// Check if we support the authentication flow for a given request. - /// - /// - Parameters: - /// - path: the request path. - /// - httpMethod: the request http method. - /// - onCancelled: the block called when the user cancelled the authentication. - /// - onFailure: the blocked called on error. - func hasSupport(forPath path: String, - httpMethod: String, - success: @escaping (Bool) -> Void, - failure: @escaping (Error) -> Void) -> MXHTTPOperation { - - // Get the authentication flow required for this API - return session.matrixRestClient.authSessionForRequest(withMethod: httpMethod, path: path, parameters: [:], success: { [weak self] (authenticationSession) in - guard let self = self else { - return - } - - guard let authenticationSession = authenticationSession, let flows = authenticationSession.flows else { - success(false) - return - } - - // Return the corresponding VC - if self.hasPasswordFlow(inFlows: flows) { - success(true) - } else { - // Flow not supported yet - success(false) - } - - }, failure: { (error) in - guard let error = error else { - return - } - - failure(error) - }) - } - - - // MARK: - Private methods - - // MARK: - Password flow - - private func hasPasswordFlow(inFlows flows: [MXLoginFlow]) -> Bool { - for flow in flows { - if flow.type == kMXLoginFlowTypePassword || flow.stages.contains(kMXLoginFlowTypePassword) { - return true - } - } - - return false - } - - private func createPasswordViewController( - title: String?, - message: String?, - authenticationSession: MXAuthenticationSession, - onAuthenticated: @escaping ([String: Any]) -> Void, - onCancelled: @escaping () -> Void, - onFailure: @escaping (Error) -> Void) -> UIViewController { - - // Use a simple UIAlertController as before - let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert) - - alertController.addTextField { (textField) in - textField.isSecureTextEntry = true - textField.placeholder = VectorL10n.authPasswordPlaceholder - textField.keyboardType = .default - } - - alertController.addAction(UIAlertAction(title: Bundle.mxk_localizedString(forKey: "cancel"), style: .cancel, handler: { _ in - onCancelled() - })) - - alertController.addAction(UIAlertAction(title: Bundle.mxk_localizedString(forKey: "ok"), style: .default, handler: { _ in - - guard let password = alertController.textFields?.first?.text else { - // Should not happen - return - } - - guard let authParams = self.createAuthParams(password: password, authenticationSession: authenticationSession) else { - onFailure(AuthenticatedSessionViewControllerFactoryError.flowNotSupported) - return - } - - onAuthenticated(authParams) - })) - - return alertController - } - - private func createAuthParams(password: String, - authenticationSession: MXAuthenticationSession) -> [String: Any]? { - guard let userId = self.session.myUserId, let session = authenticationSession.session else { - return nil - } - - return [ - "type": kMXLoginFlowTypePassword, - "session": session, - "user": userId, - "password": password - ] - } -} diff --git a/Riot/Modules/Authentication/AuthenticationViewController.m b/Riot/Modules/Authentication/AuthenticationViewController.m index eb47f6090..0a738a370 100644 --- a/Riot/Modules/Authentication/AuthenticationViewController.m +++ b/Riot/Modules/Authentication/AuthenticationViewController.m @@ -79,6 +79,10 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0; // Current SSO transaction id used to identify and validate the SSO authentication callback @property (nonatomic, strong) NSString *ssoCallbackTxnId; +@property (nonatomic, strong) CrossSigningService *crossSigningService; + +@property (nonatomic, getter = isFirstViewAppearing) BOOL firstViewAppearing; + @end @implementation AuthenticationViewController @@ -110,6 +114,10 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0; defaultCountryCode = @"GB"; didCheckFalseAuthScreenDisplay = NO; + + _firstViewAppearing = YES; + + self.crossSigningService = [CrossSigningService new]; } - (void)viewDidLoad @@ -302,6 +310,11 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0; { [super viewDidAppear:animated]; + if (self.isFirstViewAppearing) + { + self.firstViewAppearing = NO; + } + if (self.keyVerificationCoordinatorBridgePresenter) { return; @@ -333,6 +346,16 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0; [super viewDidDisappear:animated]; } +- (void)viewDidLayoutSubviews +{ + [super viewDidLayoutSubviews]; + + if (self.isFirstViewAppearing) + { + [self refreshContentViewHeightConstraint]; + } +} + - (void)destroy { [super destroy]; @@ -1162,6 +1185,8 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0; - (void)refreshContentViewHeightConstraint { + [self.view layoutIfNeeded]; + // Refresh content view height by considering the options container display. CGFloat constant = self.optionsContainer.frame.origin.y + 10; @@ -1175,6 +1200,18 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0; self.authInputContainerViewMinHeightConstraint.constant = 0; self.authInputContainerViewHeightConstraint.constant = 0; } + + // FIX: When authInputsView present recaptcha the height is not taken into account, add it manually here. + AuthInputsView *authInputsview; + if ([self.authInputsView isKindOfClass:AuthInputsView.class]) + { + authInputsview = (AuthInputsView*)self.authInputsView; + + if (!authInputsview.recaptchaContainer.hidden) + { + constant+=authInputsview.frame.size.height; + } + } if (!self.optionsContainer.isHidden) { @@ -1365,18 +1402,23 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0; - (void)sessionStateDidChangeNotification:(NSNotification*)notification { MXSession *session = (MXSession*)notification.object; - - if (session.state == MXSessionStateRunning) + + if (session.state == MXSessionStateStoreDataReady) { - [self unregisterSessionStateChangeNotification]; - if (session.crypto.crossSigning) { // Do not make key share requests while the "Complete security" is not complete. // If the device is self-verified, the SDK will restore the existing key backup. // Then, it will re-enable outgoing key share requests [session.crypto setOutgoingKeyRequestsEnabled:NO onComplete:nil]; - + } + } + else if (session.state == MXSessionStateRunning) + { + [self unregisterSessionStateChangeNotification]; + + if (session.crypto.crossSigning) + { [session.crypto.crossSigning refreshStateWithSuccess:^(BOOL stateUpdated) { NSLog(@"[AuthenticationVC] sessionStateDidChange: crossSigning.state: %@", @(session.crypto.crossSigning.state)); @@ -1407,10 +1449,15 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0; } else { - NSLog(@"[AuthenticationVC] sessionStateDidChange: Do not know how to bootstrap cross-signing. Skip it."); - - [session.crypto setOutgoingKeyRequestsEnabled:YES onComplete:nil]; - [self dismiss]; + // Try to setup cross-signing without authentication parameters in case if a grace period is enabled + [self.crossSigningService setupCrossSigningWithoutAuthenticationFor:session success:^{ + NSLog(@"[AuthenticationVC] sessionStateDidChange: Bootstrap succeeded without credentials"); + [self dismiss]; + } failure:^(NSError * _Nonnull error) { + NSLog(@"[AuthenticationVC] sessionStateDidChange: Do not know how to bootstrap cross-signing. Skip it."); + [session.crypto setOutgoingKeyRequestsEnabled:YES onComplete:nil]; + [self dismiss]; + }]; } } else @@ -1586,14 +1633,17 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0; - (void)keyVerificationCoordinatorBridgePresenterDelegateDidComplete:(KeyVerificationCoordinatorBridgePresenter * _Nonnull)coordinatorBridgePresenter otherUserId:(NSString * _Nonnull)otherUserId otherDeviceId:(NSString * _Nonnull)otherDeviceId { + MXCrypto *crypto = coordinatorBridgePresenter.session.crypto; + if (!crypto.backup.hasPrivateKeyInCryptoStore || !crypto.backup.enabled) + { + NSLog(@"[AuthenticationVC][MXKeyVerification] requestAllPrivateKeys: Request key backup private keys"); + [crypto setOutgoingKeyRequestsEnabled:YES onComplete:nil]; + } [self dismiss]; } - (void)keyVerificationCoordinatorBridgePresenterDelegateDidCancel:(KeyVerificationCoordinatorBridgePresenter * _Nonnull)coordinatorBridgePresenter { - // Set outgoing key requests back - [coordinatorBridgePresenter.session.crypto setOutgoingKeyRequestsEnabled:YES onComplete:nil]; - [self dismiss]; } diff --git a/Riot/Modules/Authentication/AuthenticationViewController.xib b/Riot/Modules/Authentication/AuthenticationViewController.xib index 28b60026d..8312e0a28 100644 --- a/Riot/Modules/Authentication/AuthenticationViewController.xib +++ b/Riot/Modules/Authentication/AuthenticationViewController.xib @@ -135,7 +135,7 @@ - + @@ -410,7 +410,7 @@ Clear it if you're finished using this device, or want to sign in to another acc - + diff --git a/Riot/Modules/Authentication/SSO/SSOAuthenticationPresenter.swift b/Riot/Modules/Authentication/SSO/SSOAuthenticationPresenter.swift index d4baee66b..21084d92a 100644 --- a/Riot/Modules/Authentication/SSO/SSOAuthenticationPresenter.swift +++ b/Riot/Modules/Authentication/SSO/SSOAuthenticationPresenter.swift @@ -68,11 +68,17 @@ final class SSOAuthenticationPresenter: NSObject { self.presentingViewController = presentingViewController - // SFAuthenticationSession and ASWebAuthenticationSession doesn't work with guided access (rdar://48376122) - if UIAccessibility.isGuidedAccessEnabled { - self.presentSafariViewController(with: authenticationURL, animated: animated) + // NOTE: By using SFAuthenticationSession the consent alert show product name instead of display name. Fallback to SFSafariViewController instead in order to not disturb users with "Riot" wording at the moment. + // (https://stackoverflow.com/questions/49860338/why-does-sfauthenticationsession-consent-alert-show-xcode-project-name-instead-o) + if #available(iOS 13.0, *) { + // SFAuthenticationSession and ASWebAuthenticationSession doesn't work with guided access (rdar://48376122) + if UIAccessibility.isGuidedAccessEnabled { + self.presentSafariViewController(with: authenticationURL, animated: animated) + } else { + self.startAuthenticationSession(with: authenticationURL) + } } else { - self.startAuthenticationSession(with: authenticationURL) + self.presentSafariViewController(with: authenticationURL, animated: animated) } } diff --git a/Riot/Modules/Authentication/SocialLogin/SocialLoginButtonFactory.swift b/Riot/Modules/Authentication/SocialLogin/SocialLoginButtonFactory.swift index e01b1622b..49a5f7ccc 100644 --- a/Riot/Modules/Authentication/SocialLogin/SocialLoginButtonFactory.swift +++ b/Riot/Modules/Authentication/SocialLogin/SocialLoginButtonFactory.swift @@ -34,18 +34,7 @@ class SocialLoginButtonFactory { let defaultStyle: SocialLoginButtonStyle var styles: [String: SocialLoginButtonStyle] = [:] - switch identityProvider.identifier { - case "google": - (defaultStyle, styles) = self.buildGoogleButtonStyles() - case "facebook": - (defaultStyle, styles) = self.buildFacebookButtonStyles() - case "github": - (defaultStyle, styles) = self.buildGitHubButtonStyles() - case "apple": - (defaultStyle, styles) = self.buildAppleButtonStyles() - case "twitter": - (defaultStyle, styles) = self.buildTwitterButtonStyles() - default: + let buildDefaultButtonStyles: () -> (SocialLoginButtonStyle, [String: SocialLoginButtonStyle]) = { let image: SourceImage? if let imageStringURL = identityProvider.icon, let imageURL = URL(string: imageStringURL) { @@ -54,7 +43,30 @@ class SocialLoginButtonFactory { image = nil } - (defaultStyle, styles) = self.buildDefaultButtonStyles(with: image) + return self.buildDefaultButtonStyles(with: image) + } + + if let idpBrandIdentifier = identityProvider.brand { + let idpBrand = MXLoginSSOIdentityProviderBrand(rawValue: idpBrandIdentifier) + + switch idpBrand { + case .gitlab: + (defaultStyle, styles) = self.buildGitLabButtonStyles() + case .github: + (defaultStyle, styles) = self.buildGitHubButtonStyles() + case .apple: + (defaultStyle, styles) = self.buildAppleButtonStyles() + case .google: + (defaultStyle, styles) = self.buildGoogleButtonStyles() + case .facebook: + (defaultStyle, styles) = self.buildFacebookButtonStyles() + case .twitter: + (defaultStyle, styles) = self.buildTwitterButtonStyles() + default: + (defaultStyle, styles) = buildDefaultButtonStyles() + } + } else { + (defaultStyle, styles) = buildDefaultButtonStyles() } let title = self.buildButtonTitle(with: identityProvider.name, mode: mode) @@ -211,6 +223,31 @@ class SocialLoginButtonFactory { return (defaultStyle, styles) } + private func buildGitLabButtonStyles() -> (SocialLoginButtonStyle, [String: SocialLoginButtonStyle]) { + + let logo: SourceImage = .local(Asset.Images.socialLoginButtonGitlab.image) + + let lightStyle = SocialLoginButtonStyle(logo: logo, + titleColor: .black, + backgroundColor: .white, + borderColor: .black) + + let darkStyle = SocialLoginButtonStyle(logo: logo, + titleColor: .white, + backgroundColor: .black, + borderColor: .white) + + let defaultStyle: SocialLoginButtonStyle = lightStyle + + let styles: [String: SocialLoginButtonStyle] = [ + ThemeIdentifier.light.rawValue: lightStyle, + ThemeIdentifier.dark.rawValue: darkStyle, + ThemeIdentifier.black.rawValue: darkStyle + ] + + return (defaultStyle, styles) + } + private func buildDefaultButtonStyles(with image: SourceImage?) -> (SocialLoginButtonStyle, [String: SocialLoginButtonStyle]) { let lightStyle = SocialLoginButtonStyle(logo: image, diff --git a/Riot/Modules/Authentication/SocialLogin/SocialLoginListView.swift b/Riot/Modules/Authentication/SocialLogin/SocialLoginListView.swift index 0538b4e58..6a66da782 100644 --- a/Riot/Modules/Authentication/SocialLogin/SocialLoginListView.swift +++ b/Riot/Modules/Authentication/SocialLogin/SocialLoginListView.swift @@ -119,7 +119,11 @@ final class SocialLoginListView: UIView, NibLoadable { // Order alphabeticaly by Identity Provider identifier let sortedIdentityProviders = identityProviders.sorted { (firstIdentityProvider, secondIdentityProvider) -> Bool in - firstIdentityProvider.identifier < secondIdentityProvider.identifier + if let firstIdentityProviderBrand = firstIdentityProvider.brand, let secondIdentityProviderBrand = secondIdentityProvider.brand { + return firstIdentityProviderBrand < secondIdentityProviderBrand + } else { + return firstIdentityProvider.identifier < secondIdentityProvider.identifier + } } for identityProvider in sortedIdentityProviders { diff --git a/Riot/Modules/Authentication/Views/TermsView.swift b/Riot/Modules/Authentication/Views/TermsView.swift index 5371b343e..4936c231a 100644 --- a/Riot/Modules/Authentication/Views/TermsView.swift +++ b/Riot/Modules/Authentication/Views/TermsView.swift @@ -19,8 +19,8 @@ import Reusable final class TermsView: UIView, NibOwnerLoadable, UITableViewDelegate, UITableViewDataSource { - @IBOutlet weak var tableView: UITableView! - @IBOutlet weak var acceptButton: UIButton! + @IBOutlet private weak var tableView: UITableView! + @IBOutlet private weak var acceptButton: UIButton! @objc weak var delegate: MXKAuthInputsViewDelegate? @@ -59,12 +59,6 @@ final class TermsView: UIView, NibOwnerLoadable, UITableViewDelegate, UITableVie commonInit() } - override func layoutSubviews() { - super.layoutSubviews() - - acceptButton.layer.cornerRadius = 5 - } - private func commonInit() { tableView.delegate = self @@ -75,6 +69,9 @@ final class TermsView: UIView, NibOwnerLoadable, UITableViewDelegate, UITableVie acceptButton.clipsToBounds = true acceptButton.setTitle(NSLocalizedString("accept", tableName: "Vector", comment: ""), for: .normal) acceptButton.setTitle(NSLocalizedString("accept", tableName: "Vector", comment: ""), for: .highlighted) + + acceptButton.layer.masksToBounds = true + acceptButton.layer.cornerRadius = 5 customizeViewRendering() } diff --git a/Riot/Modules/Authentication/Views/TermsView.xib b/Riot/Modules/Authentication/Views/TermsView.xib index c947e9bba..622341524 100644 --- a/Riot/Modules/Authentication/Views/TermsView.xib +++ b/Riot/Modules/Authentication/Views/TermsView.xib @@ -1,11 +1,9 @@ - - - - + + - + @@ -20,14 +18,15 @@ - - + + - - + - + + @@ -200,6 +207,7 @@ + @@ -248,6 +256,7 @@ + diff --git a/Riot/Modules/Call/CallViewController.h b/Riot/Modules/Call/CallViewController.h index 97033feb6..54ef33aa6 100644 --- a/Riot/Modules/Call/CallViewController.h +++ b/Riot/Modules/Call/CallViewController.h @@ -27,6 +27,10 @@ @property (weak, nonatomic) IBOutlet UIView *callControlsBackgroundView; @property (unsafe_unretained, nonatomic) IBOutlet NSLayoutConstraint *callerImageViewWidthConstraint; +@property (weak, nonatomic) IBOutlet NSLayoutConstraint *moreButtonLeadingConstraint; + +// Effect views +@property (weak, nonatomic) IBOutlet MXKImageView *blurredCallerImageView; // At the end of call, this flag indicates if the prompt to use the fallback should be displayed @property (nonatomic) BOOL shouldPromptForStunServerFallback; diff --git a/Riot/Modules/Call/CallViewController.m b/Riot/Modules/Call/CallViewController.m index faa1a3bd5..92dc8438d 100644 --- a/Riot/Modules/Call/CallViewController.m +++ b/Riot/Modules/Call/CallViewController.m @@ -28,21 +28,20 @@ #import "IncomingCallView.h" -@interface CallViewController () +@interface CallViewController () { - // Display a gradient view above the screen - CAGradientLayer* gradientMaskLayer; - // Current alert (if any). UIAlertController *currentAlert; - // Observe kThemeServiceDidChangeThemeNotification to handle user interface theme change. - id kThemeServiceDidChangeThemeNotificationObserver; - // Flag to compute self.shouldPromptForStunServerFallback BOOL promptForStunServerFallback; } +@property (nonatomic, strong) id overriddenTheme; +@property (nonatomic, assign) BOOL inPiP; + +@property (nonatomic, strong) CustomSizedPresentationController *customSizedPresentationController; + @end @implementation CallViewController @@ -63,26 +62,22 @@ { [super viewDidLoad]; - UIColor *unselectedColor = ThemeService.shared.theme.tabBarUnselectedItemTintColor; - UIColor *selectedColor = ThemeService.shared.theme.tintColor; - // Back button - UIImage *backButtonImage = [[UIImage imageNamed:@"back_icon"] vc_tintedImageUsingColor:selectedColor]; + UIImage *backButtonImage = [UIImage imageNamed:@"back_icon"]; [self.backToAppButton setImage:backButtonImage forState:UIControlStateNormal]; [self.backToAppButton setImage:backButtonImage forState:UIControlStateHighlighted]; // Camera switch - UIImage *cameraSwitchButtonImage = [[UIImage imageNamed:@"camera_switch"] vc_tintedImageUsingColor:selectedColor]; + UIImage *cameraSwitchButtonImage = [UIImage imageNamed:@"camera_switch"]; [self.cameraSwitchButton setImage:cameraSwitchButtonImage forState:UIControlStateNormal]; [self.cameraSwitchButton setImage:cameraSwitchButtonImage forState:UIControlStateHighlighted]; // Audio mute - UIImage *audioMuteOffButtonImage = [[UIImage imageNamed:@"call_audio_mute_off_icon"] vc_tintedImageUsingColor:unselectedColor]; - - UIImage *audioMuteOnButtonImage = [[UIImage imageNamed:@"call_audio_mute_on_icon"] vc_tintedImageUsingColor:unselectedColor]; + UIImage *audioMuteOffButtonImage = [UIImage imageNamed:@"call_audio_mute_off_icon"]; + UIImage *audioMuteOnButtonImage = [UIImage imageNamed:@"call_audio_mute_on_icon"]; [self.audioMuteButton setImage:audioMuteOffButtonImage forState:UIControlStateNormal]; [self.audioMuteButton setImage:audioMuteOffButtonImage forState:UIControlStateHighlighted]; @@ -90,123 +85,60 @@ // Video mute - UIImage *videoOffButtonImage = [[UIImage imageNamed:@"call_video_mute_off_icon"] vc_tintedImageUsingColor:unselectedColor]; - UIImage *videoOnButtonImage = [[UIImage imageNamed:@"call_video_mute_on_icon"] vc_tintedImageUsingColor:unselectedColor]; + UIImage *videoOffButtonImage = [UIImage imageNamed:@"call_video_mute_off_icon"]; + UIImage *videoOnButtonImage = [UIImage imageNamed:@"call_video_mute_on_icon"]; [self.videoMuteButton setImage:videoOffButtonImage forState:UIControlStateNormal]; [self.videoMuteButton setImage:videoOffButtonImage forState:UIControlStateHighlighted]; [self.videoMuteButton setImage:videoOnButtonImage forState:UIControlStateSelected]; - // Speaker + // More - UIImage *speakerOffButtonImage = [[UIImage imageNamed:@"call_speaker_off_icon"] vc_tintedImageUsingColor:unselectedColor]; - UIImage *speakerOnButtonImage = [[UIImage imageNamed:@"call_speaker_on_icon"] vc_tintedImageUsingColor:unselectedColor]; - [self.speakerButton setImage:speakerOffButtonImage forState:UIControlStateNormal]; - [self.speakerButton setImage:speakerOnButtonImage forState:UIControlStateSelected]; + UIImage *moreButtonImage = [UIImage imageNamed:@"call_more_icon"]; - // Chat - - UIImage *chatButtonImage = [[UIImage imageNamed:@"call_chat_icon"] vc_tintedImageUsingColor:unselectedColor]; - [self.chatButton setImage:chatButtonImage forState:UIControlStateNormal]; - [self.chatButton setImage:chatButtonImage forState:UIControlStateHighlighted]; + [self.moreButton setImage:moreButtonImage forState:UIControlStateNormal]; // Hang up - UIImage *hangUpButtonImage = [[UIImage imageNamed:@"call_hangup_large"] vc_tintedImageUsingColor:ThemeService.shared.theme.noticeColor]; + UIImage *hangUpButtonImage = [UIImage imageNamed:@"call_hangup_large"]; [self.endCallButton setTitle:nil forState:UIControlStateNormal]; [self.endCallButton setTitle:nil forState:UIControlStateHighlighted]; [self.endCallButton setImage:hangUpButtonImage forState:UIControlStateNormal]; [self.endCallButton setImage:hangUpButtonImage forState:UIControlStateHighlighted]; - // Define caller image view size - CGSize size = [[UIScreen mainScreen] bounds].size; - CGFloat minSize = MIN(size.width, size.height); - self.callerImageViewWidthConstraint.constant = minSize / 2; - [self updateLocalPreviewLayout]; - // Observe user interface theme change. - kThemeServiceDidChangeThemeNotificationObserver = [[NSNotificationCenter defaultCenter] addObserverForName:kThemeServiceDidChangeThemeNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notif) { - - [self userInterfaceThemeDidChange]; - - }]; - [self userInterfaceThemeDidChange]; + [self configureUserInterface]; } -- (void)userInterfaceThemeDidChange +- (UIStatusBarStyle)preferredStatusBarStyle { - [ThemeService.shared.theme applyStyleOnNavigationBar:self.navigationController.navigationBar]; + return self.overriddenTheme.statusBarStyle; +} - self.barTitleColor = ThemeService.shared.theme.textPrimaryColor; - self.activityIndicator.backgroundColor = ThemeService.shared.theme.overlayBackgroundColor; +- (void)configureUserInterface +{ + if (@available(iOS 13.0, *)) { + self.overrideUserInterfaceStyle = self.overriddenTheme.userInterfaceStyle; + } - self.callerNameLabel.textColor = ThemeService.shared.theme.textPrimaryColor; - self.callStatusLabel.textColor = ThemeService.shared.theme.baseTextSecondaryColor; + [self.overriddenTheme applyStyleOnNavigationBar:self.navigationController.navigationBar]; + + self.barTitleColor = self.overriddenTheme.textPrimaryColor; + self.activityIndicator.backgroundColor = self.overriddenTheme.overlayBackgroundColor; - self.localPreviewContainerView.layer.borderColor = ThemeService.shared.theme.tintColor.CGColor; + self.backToAppButton.tintColor = self.overriddenTheme.callScreenButtonTintColor; + self.cameraSwitchButton.tintColor = self.overriddenTheme.callScreenButtonTintColor; + self.callerNameLabel.textColor = self.overriddenTheme.baseTextPrimaryColor; + self.callStatusLabel.textColor = self.overriddenTheme.baseTextPrimaryColor; + [self.resumeButton setTitleColor:self.overriddenTheme.tintColor + forState:UIControlStateNormal]; + + self.localPreviewContainerView.layer.borderColor = self.overriddenTheme.tintColor.CGColor; self.localPreviewContainerView.layer.borderWidth = 2; self.localPreviewContainerView.layer.cornerRadius = 5; self.localPreviewContainerView.clipsToBounds = YES; - - self.remotePreviewContainerView.backgroundColor = ThemeService.shared.theme.backgroundColor; - - if (gradientMaskLayer) - { - [gradientMaskLayer removeFromSuperlayer]; - } - - // Add a gradient mask programatically at the top of the screen (background of the call information (name, status)) - gradientMaskLayer = [CAGradientLayer layer]; - - // Consider the grayscale components of the ThemeService.shared.theme.backgroundColor. - CGFloat white = 1.0; - [ThemeService.shared.theme.backgroundColor getWhite:&white alpha:nil]; - - CGColorRef opaqueWhiteColor = [UIColor colorWithWhite:white alpha:1.0].CGColor; - CGColorRef transparentWhiteColor = [UIColor colorWithWhite:white alpha:0].CGColor; - - gradientMaskLayer.colors = @[(__bridge id) opaqueWhiteColor, (__bridge id) transparentWhiteColor]; - - gradientMaskLayer.bounds = CGRectMake(0, 0, self.callContainerView.frame.size.width, self.callContainerView.frame.size.height + 20); - gradientMaskLayer.anchorPoint = CGPointZero; - - // CAConstraint is not supported on IOS. - // it seems only being supported on Mac OS. - // so viewDidLayoutSubviews will refresh the layout bounds. - [self.gradientMaskContainerView.layer addSublayer:gradientMaskLayer]; - - self.callControlsBackgroundView.backgroundColor = ThemeService.shared.theme.baseColor; -} - -- (BOOL)prefersStatusBarHidden -{ - // Hide the status bar on the call view controller. - return YES; -} - -- (void)viewDidLayoutSubviews -{ - [super viewDidLayoutSubviews]; - - // sanity check - if (gradientMaskLayer) - { - CGRect currentBounds = gradientMaskLayer.bounds; - CGRect newBounds = CGRectMake(0, 0, self.callContainerView.frame.size.width, self.callContainerView.frame.size.height + 20); - - // check if there is an update - if (!CGSizeEqualToSize(currentBounds.size, newBounds.size)) - { - newBounds.origin = CGPointZero; - gradientMaskLayer.bounds = newBounds; - } - } - - // The caller image view is circular - self.callerImageView.layer.cornerRadius = self.callerImageViewWidthConstraint.constant / 2; - self.callerImageView.clipsToBounds = YES; } - (void)viewWillDisappear:(BOOL)animated @@ -222,23 +154,37 @@ #pragma mark - override MXKViewController -- (void)destroy -{ - [super destroy]; - - if (kThemeServiceDidChangeThemeNotificationObserver) - { - [[NSNotificationCenter defaultCenter] removeObserver:kThemeServiceDidChangeThemeNotificationObserver]; - kThemeServiceDidChangeThemeNotificationObserver = nil; - } - - [gradientMaskLayer removeFromSuperlayer]; - gradientMaskLayer = nil; -} - - (UIView *)createIncomingCallView { - return nil; + if ([MXCallKitAdapter callKitAvailable]) + { + return nil; + } + + NSString *callInfo; + if (self.mxCall.isVideoCall) + callInfo = NSLocalizedStringFromTable(@"call_incoming_video", @"Vector", nil); + else + callInfo = NSLocalizedStringFromTable(@"call_incoming_voice", @"Vector", nil); + + IncomingCallView *incomingCallView = [[IncomingCallView alloc] initWithCallerAvatar:self.peer.avatarUrl + mediaManager:self.mainSession.mediaManager + placeholderImage:self.picturePlaceholder + callerName:self.peer.displayname + callInfo:callInfo]; + + // Incoming call is retained by call vc so use weak to avoid retain cycle + __weak typeof(self) weakSelf = self; + + incomingCallView.onAnswer = ^{ + [weakSelf onButtonPressed:weakSelf.answerCallButton]; + }; + + incomingCallView.onReject = ^{ + [weakSelf onButtonPressed:weakSelf.rejectCallButton]; + }; + + return incomingCallView; } #pragma mark - MXCallDelegate @@ -250,7 +196,7 @@ [self checkStunServerFallbackWithCallState:state]; } -- (void)call:(MXCall *)call didEncounterError:(NSError *)error +- (void)call:(MXCall *)call didEncounterError:(NSError *)error reason:(MXCallHangupReason)reason { if ([error.domain isEqualToString:MXEncryptingErrorDomain] && error.code == MXEncryptingErrorUnknownDeviceCode) @@ -296,7 +242,7 @@ else { // Ignore the call - [call hangup]; + [call hangupWithReason:reason]; } }]; @@ -350,7 +296,7 @@ } else { - [super call:call didEncounterError:error]; + [super call:call didEncounterError:error reason:reason]; } } @@ -392,6 +338,27 @@ #pragma mark - Properties +- (id)overriddenTheme +{ + if (_overriddenTheme == nil) + { + _overriddenTheme = [DarkTheme new]; + } + return _overriddenTheme; +} + +- (void)setMxCall:(MXCall *)mxCall +{ + [super setMxCall:mxCall]; + + if (self.videoMuteButton.isHidden) + { + // shift more button to left + self.moreButtonLeadingConstraint.constant = 8.0; + [self.view layoutIfNeeded]; + } +} + - (UIImage*)picturePlaceholder { CGFloat fontSize = floor(self.callerImageViewWidthConstraint.constant * 0.7); @@ -399,22 +366,21 @@ if (self.peer) { // Use the vector style placeholder - return [AvatarGenerator generateAvatarForMatrixItem:self.peer.userId withDisplayName:self.peer.displayname size:self.callerImageViewWidthConstraint.constant andFontSize:fontSize]; + return [AvatarGenerator generateAvatarForMatrixItem:self.peer.userId + withDisplayName:self.peer.displayname + size:self.callerImageViewWidthConstraint.constant + andFontSize:fontSize]; } else if (self.mxCall.room) { - return [AvatarGenerator generateAvatarForMatrixItem:self.mxCall.room.roomId withDisplayName:self.mxCall.room.summary.displayname size:self.callerImageViewWidthConstraint.constant andFontSize:fontSize]; + return [AvatarGenerator generateAvatarForMatrixItem:self.mxCall.room.roomId + withDisplayName:self.mxCall.room.summary.displayname + size:self.callerImageViewWidthConstraint.constant + andFontSize:fontSize]; } return [MXKTools paintImage:[UIImage imageNamed:@"placeholder"] - withColor:ThemeService.shared.theme.tintColor]; -} - -- (void)setMxCall:(MXCall *)call -{ - [super setMxCall:call]; - - self.callerImageView.hidden = self.mxCall.isVideoCall; + withColor:self.overriddenTheme.tintColor]; } - (void)updatePeerInfoDisplay @@ -439,9 +405,17 @@ self.callerNameLabel.text = peerDisplayName; + self.blurredCallerImageView.contentMode = UIViewContentModeScaleAspectFill; self.callerImageView.contentMode = UIViewContentModeScaleAspectFill; if (peerAvatarURL) { + // Retrieve the avatar in full resolution + [self.blurredCallerImageView setImageURI:peerAvatarURL + withType:nil + andImageOrientation:UIImageOrientationUp + previewImage:self.picturePlaceholder + mediaManager:self.mainSession.mediaManager]; + // Retrieve the avatar in full resolution [self.callerImageView setImageURI:peerAvatarURL withType:nil @@ -451,17 +425,11 @@ } else { + self.blurredCallerImageView.image = self.picturePlaceholder; self.callerImageView.image = self.picturePlaceholder; } } -- (void)showOverlayContainer:(BOOL)isShown -{ - [super showOverlayContainer:isShown]; - - self.gradientMaskContainerView.hidden = self.overlayContainerView.isHidden; -} - #pragma mark - Sounds - (NSURL*)audioURLWithName:(NSString*)soundName @@ -509,4 +477,169 @@ } } +- (void)setInPiP:(BOOL)inPiP +{ + _inPiP = inPiP; + + if (_inPiP) + { + self.overlayContainerView.hidden = YES; + self.callerImageView.hidden = YES; + self.callerNameLabel.hidden = YES; + self.callStatusLabel.hidden = YES; + self.localPreviewContainerView.hidden = YES; + self.localPreviewActivityView.hidden = YES; + } + else + { + self.localPreviewContainerView.hidden = NO; + self.callerImageView.hidden = NO; + self.callerNameLabel.hidden = NO; + self.callStatusLabel.hidden = NO; + + // show controls when coming back from PiP mode + [self showOverlayContainer:YES]; + } +} + +- (void)showOverlayContainer:(BOOL)isShown +{ + if (self.inPiP) + { + return; + } + + [super showOverlayContainer:isShown]; +} + +#pragma mark - DTMF + +- (void)openDialpad +{ + DialpadConfiguration *config = [[DialpadConfiguration alloc] initWithShowsTitle:YES + showsCloseButton:YES + showsBackspaceButton:NO + showsCallButton:NO + formattingEnabled:NO + editingEnabled:NO]; + DialpadViewController *controller = [DialpadViewController instantiateWithConfiguration:config]; + controller.delegate = self; + self.customSizedPresentationController = [[CustomSizedPresentationController alloc] initWithPresentedViewController:controller presentingViewController:self]; + self.customSizedPresentationController.dismissOnBackgroundTap = NO; + self.customSizedPresentationController.cornerRadius = 16; + + controller.transitioningDelegate = self.customSizedPresentationController; + [self presentViewController:controller animated:YES completion:nil]; +} + +#pragma mark - Call Transfer + +- (void)openCallTransfer +{ + CallTransferMainViewController *controller = [CallTransferMainViewController instantiateWithSession:self.mainSession ignoredUserIds:@[self.peer.userId]]; + controller.delegate = self; + + UINavigationController *navController = [[RiotNavigationController alloc] initWithRootViewController:controller]; + [self presentViewController:navController animated:YES completion:nil]; +} + +#pragma mark - DialpadViewControllerDelegate + +- (void)dialpadViewControllerDidTapClose:(DialpadViewController *)viewController +{ + [viewController dismissViewControllerAnimated:YES completion:nil]; + self.customSizedPresentationController = nil; +} + +- (void)dialpadViewControllerDidTapDigit:(DialpadViewController *)viewController digit:(NSString *)digit +{ + if (digit.length == 0) + { + return; + } + BOOL result = [self.mxCall sendDTMF:digit + duration:0 + interToneGap:0]; + + NSLog(@"[CallViewController] Sending DTMF tones %@", result ? @"succeeded": @"failed"); +} + +#pragma mark - CallTransferMainViewControllerDelegate + +- (void)callTransferMainViewControllerDidComplete:(CallTransferMainViewController *)viewController consult:(BOOL)consult contact:(MXKContact *)contact phoneNumber:(NSString *)phoneNumber +{ + [viewController dismissViewControllerAnimated:YES completion:nil]; + + void(^failureBlock)(NSError *_Nullable) = ^(NSError *error) { + [self->currentAlert dismissViewControllerAnimated:NO completion:nil]; + + MXWeakify(self); + + self->currentAlert = [UIAlertController alertControllerWithTitle:[NSBundle mxk_localizedStringForKey:@"call_transfer_error_title"] + message:[NSBundle mxk_localizedStringForKey:@"call_transfer_error_message"] + preferredStyle:UIAlertControllerStyleAlert]; + + [self->currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"] + style:UIAlertActionStyleDefault + handler:^(UIAlertAction * action) { + + MXStrongifyAndReturnIfNil(self); + self->currentAlert = nil; + }]]; + + [self presentViewController:self->currentAlert animated:YES completion:nil]; + }; + + void(^continueBlock)(NSString *_Nonnull) = ^(NSString *targetUserId) { + MXUserModel *targetUser = [[MXUserModel alloc] initWithUserId:targetUserId + displayname:contact.displayName + avatarUrl:contact.matrixAvatarURL]; + MXUserModel *transfereeUser = [[MXUserModel alloc] initWithUser:self.peer]; + + [self.mainSession.callManager transferCall:self.mxCall + to:targetUser + withTransferee:transfereeUser + consultFirst:consult + success:^(NSString * _Nonnull newCallId){ + NSLog(@"Call transfer succeeded with new call ID: %@", newCallId); + } failure:^(NSError * _Nullable error) { + NSLog(@"Call transfer failed with error: %@", error); + failureBlock(error); + }]; + }; + + if (contact) + { + continueBlock(contact.matrixIdentifiers.firstObject); + } + else if (phoneNumber) + { + MXWeakify(self); + [self.mainSession.callManager getThirdPartyUserFrom:phoneNumber success:^(MXThirdPartyUserInstance * _Nonnull user) { + MXStrongifyAndReturnIfNil(self); + + continueBlock(user.userId); + } failure:^(NSError * _Nullable error) { + failureBlock(error); + }]; + } +} + +- (void)callTransferMainViewControllerDidCancel:(CallTransferMainViewController *)viewController +{ + [viewController dismissViewControllerAnimated:YES completion:nil]; +} + +#pragma mark - PictureInPicturable + +- (void)enterPiP +{ + self.inPiP = YES; +} + +- (void)exitPiP +{ + self.inPiP = NO; +} + @end diff --git a/Riot/Modules/Call/CallViewController.xib b/Riot/Modules/Call/CallViewController.xib index 50da8494a..821dfd614 100644 --- a/Riot/Modules/Call/CallViewController.xib +++ b/Riot/Modules/Call/CallViewController.xib @@ -1,39 +1,43 @@ - + - + + - + - + - - - + + - - + + + + - + + + - + @@ -43,36 +47,37 @@ - - - - - - + + + + + + + + + + + + + + + + + + - - + + + + - + + - - + + - - + + - - + - + + + - - + - - + + + + + + + + + + + + diff --git a/Riot/Modules/Call/Dialpad/DialpadConfiguration.swift b/Riot/Modules/Call/Dialpad/DialpadConfiguration.swift new file mode 100644 index 000000000..a1d91f3d2 --- /dev/null +++ b/Riot/Modules/Call/Dialpad/DialpadConfiguration.swift @@ -0,0 +1,59 @@ +// +// Copyright 2020 New Vector Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation + +/// Dial pad configuration object, to be passed when initializing a `DialpadViewController`. +@objcMembers +class DialpadConfiguration: NSObject { + + /// Option for a dial pad to show the title or not. + var showsTitle: Bool + + /// Option for a dial pad to show the close button or not. + var showsCloseButton: Bool + + /// Option for a dial pad to show the backspace button or not. + var showsBackspaceButton: Bool + + /// Option for a dial pad to show the call button or not. + var showsCallButton: Bool + + /// Option for a dial pad to enable number formatting when typing or not. + var formattingEnabled: Bool + + /// Option for a dial pad to enable editing on typed text or not. + var editingEnabled: Bool + + /// Default configuration object. All options are enabled by default. + static let `default`: DialpadConfiguration = DialpadConfiguration() + + init(showsTitle: Bool = true, + showsCloseButton: Bool = true, + showsBackspaceButton: Bool = true, + showsCallButton: Bool = true, + formattingEnabled: Bool = true, + editingEnabled: Bool = true) { + self.showsTitle = showsTitle + self.showsCloseButton = showsCloseButton + self.showsBackspaceButton = showsBackspaceButton + self.showsCallButton = showsCallButton + self.formattingEnabled = formattingEnabled + self.editingEnabled = editingEnabled + super.init() + } + +} diff --git a/Riot/Modules/Call/Dialpad/DialpadViewController.storyboard b/Riot/Modules/Call/Dialpad/DialpadViewController.storyboard new file mode 100644 index 000000000..8f81e6b7f --- /dev/null +++ b/Riot/Modules/Call/Dialpad/DialpadViewController.storyboard @@ -0,0 +1,312 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Riot/Modules/Call/Dialpad/DialpadViewController.swift b/Riot/Modules/Call/Dialpad/DialpadViewController.swift new file mode 100644 index 000000000..743b39471 --- /dev/null +++ b/Riot/Modules/Call/Dialpad/DialpadViewController.swift @@ -0,0 +1,370 @@ +// File created from simpleScreenTemplate +// $ createSimpleScreen.sh Dialpad Dialpad +/* + Copyright 2020 New Vector Ltd + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import UIKit +import libPhoneNumber_iOS + +@objc protocol DialpadViewControllerDelegate: class { + @objc optional func dialpadViewControllerDidTapCall(_ viewController: DialpadViewController, + withPhoneNumber phoneNumber: String) + @objc optional func dialpadViewControllerDidTapClose(_ viewController: DialpadViewController) + + @objc optional func dialpadViewControllerDidTapDigit(_ viewController: DialpadViewController, digit: String) +} + +@objcMembers +class DialpadViewController: UIViewController { + + // MARK: Outlets + + @IBOutlet private weak var phoneNumberTextFieldTopConstraint: NSLayoutConstraint! { + didSet { + if !configuration.showsTitle && !configuration.showsCloseButton { + phoneNumberTextFieldTopConstraint.constant = 0 + } + } + } + @IBOutlet private weak var closeButton: UIButton! { + didSet { + closeButton.isHidden = !configuration.showsCloseButton + } + } + @IBOutlet private weak var titleLabel: UILabel! { + didSet { + titleLabel.isHidden = !configuration.showsTitle + } + } + @IBOutlet private weak var phoneNumberTextField: UITextField! { + didSet { + phoneNumberTextField.text = nil + // avoid showing keyboard on text field + phoneNumberTextField.inputView = UIView() + phoneNumberTextField.inputAccessoryView = UIView() + phoneNumberTextField.isUserInteractionEnabled = configuration.editingEnabled + } + } + @IBOutlet private weak var lineView: UIView! + @IBOutlet private weak var digitsStackView: UIStackView! + @IBOutlet private weak var backspaceButton: DialpadActionButton! { + didSet { + backspaceButton.type = .backspace + backspaceButton.isHidden = !configuration.showsBackspaceButton + } + } + @IBOutlet private weak var callButton: DialpadActionButton! { + didSet { + callButton.type = .call + callButton.isHidden = !configuration.showsCallButton + } + } + @IBOutlet private weak var spaceButton: UIButton! { + didSet { + spaceButton.isHidden = !configuration.showsBackspaceButton || !configuration.showsCallButton + } + } + + // MARK: Private + + private enum Constants { + static let sizeOniPad: CGSize = CGSize(width: 375, height: 667) + static let additionalTopInset: CGFloat = 20 + } + + private var wasCursorAtTheEnd: Bool = true + + /// Phone number as formatted + private var phoneNumber: String = "" { + willSet { + if configuration.editingEnabled { + wasCursorAtTheEnd = isCursorAtTheEnd() + } + } didSet { + phoneNumberTextField.text = phoneNumber + if configuration.editingEnabled && wasCursorAtTheEnd { + moveCursorToTheEnd() + } + } + } + /// Phone number as non-formatted + var rawPhoneNumber: String { + return phoneNumber.vc_removingAllWhitespaces() + } + private var theme: Theme! + private var configuration: DialpadConfiguration! + + // MARK: Public + + weak var delegate: DialpadViewControllerDelegate? + + // MARK: - Setup + + class func instantiate(withConfiguration configuration: DialpadConfiguration = .default) -> DialpadViewController { + let viewController = StoryboardScene.DialpadViewController.initialScene.instantiate() + viewController.theme = ThemeService.shared().theme + viewController.configuration = configuration + return viewController + } + + // MARK: - Life cycle + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + + titleLabel.text = VectorL10n.dialpadTitle + self.registerThemeServiceDidChangeThemeNotification() + self.update(theme: self.theme) + + // force orientation to portrait if phone + if UIDevice.current.isPhone { + UIDevice.current.setValue(UIInterfaceOrientation.portrait.rawValue, forKey: "orientation") + } + } + + override var preferredStatusBarStyle: UIStatusBarStyle { + return self.theme.statusBarStyle + } + + override var supportedInterfaceOrientations: UIInterfaceOrientationMask { + // limit orientation to portrait only for phone + if UIDevice.current.isPhone { + return .portrait + } + return super.supportedInterfaceOrientations + } + + override var shouldAutorotate: Bool { + return false + } + + override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation { + if UIDevice.current.isPhone { + return .portrait + } + return super.preferredInterfaceOrientationForPresentation + } + + // MARK: - Private + + private func isCursorAtTheEnd() -> Bool { + guard let selectedRange = phoneNumberTextField.selectedTextRange else { + return true + } + + if !selectedRange.isEmpty { + return false + } + + let cursorEndPos = phoneNumberTextField.offset(from: phoneNumberTextField.beginningOfDocument, to: selectedRange.end) + + return cursorEndPos == phoneNumber.count + } + + private func moveCursorToTheEnd() { + guard let cursorPos = phoneNumberTextField.position(from: phoneNumberTextField.beginningOfDocument, + offset: phoneNumber.count) else { return } + + phoneNumberTextField.selectedTextRange = phoneNumberTextField.textRange(from: cursorPos, + to: cursorPos) + } + + private func reformatPhoneNumber() { + guard configuration.formattingEnabled, let phoneNumberUtil = NBPhoneNumberUtil.sharedInstance() else { + // no formatter + return + } + + do { + // try formatting the number + if phoneNumber.hasPrefix("00") { + let range = phoneNumber.startIndex.. CGFloat { + guard let window = UIApplication.shared.keyWindow else { + return Constants.additionalTopInset + } + + return window.safeAreaInsets.top + Constants.additionalTopInset + } + + // MARK: - Actions + + @objc private func themeDidChange() { + self.update(theme: ThemeService.shared().theme) + } + + @IBAction private func closeButtonAction(_ sender: UIButton) { + delegate?.dialpadViewControllerDidTapClose?(self) + } + + @IBAction private func digitButtonAction(_ sender: DialpadButton) { + let digit = sender.title(for: .normal) ?? "" + + defer { + delegate?.dialpadViewControllerDidTapDigit?(self, digit: digit) + } + + if !configuration.editingEnabled { + phoneNumber += digit + return + } + + if let selectedRange = phoneNumberTextField.selectedTextRange { + if isCursorAtTheEnd() { + phoneNumber += digit + reformatPhoneNumber() + return + } + let cursorStartPos = phoneNumberTextField.offset(from: phoneNumberTextField.beginningOfDocument, to: selectedRange.start) + let cursorEndPos = phoneNumberTextField.offset(from: phoneNumberTextField.beginningOfDocument, to: selectedRange.end) + + phoneNumber.replaceSubrange((phoneNumber.index(phoneNumber.startIndex, offsetBy: cursorStartPos))..<(phoneNumber.index(phoneNumber.startIndex, offsetBy: cursorEndPos)), with: digit) + + guard let cursorPos = phoneNumberTextField.position(from: phoneNumberTextField.beginningOfDocument, + offset: cursorEndPos + digit.count) else { return } + + reformatPhoneNumber() + + phoneNumberTextField.selectedTextRange = phoneNumberTextField.textRange(from: cursorPos, + to: cursorPos) + } else { + phoneNumber += digit + reformatPhoneNumber() + } + } + + @IBAction private func backspaceButtonAction(_ sender: DialpadActionButton) { + defer { + delegate?.dialpadViewControllerDidTapDigit?(self, digit: "") + } + + if phoneNumber.isEmpty { + return + } + + if !configuration.editingEnabled { + phoneNumber.removeLast() + return + } + + if let selectedRange = phoneNumberTextField.selectedTextRange { + let cursorStartPos = phoneNumberTextField.offset(from: phoneNumberTextField.beginningOfDocument, to: selectedRange.start) + let cursorEndPos = phoneNumberTextField.offset(from: phoneNumberTextField.beginningOfDocument, to: selectedRange.end) + + let rangePos: UITextPosition! + + if selectedRange.isEmpty { + // just caret, remove one char from the cursor position + if cursorStartPos == 0 { + // already at the beginning of the text, no more text to remove here + return + } + phoneNumber.replaceSubrange((phoneNumber.index(phoneNumber.startIndex, offsetBy: cursorStartPos-1))..<(phoneNumber.index(phoneNumber.startIndex, offsetBy: cursorEndPos)), with: "") + + rangePos = phoneNumberTextField.position(from: phoneNumberTextField.beginningOfDocument, + offset: cursorStartPos-1) + } else { + // really some text selected, remove selected range of text + + phoneNumber.replaceSubrange((phoneNumber.index(phoneNumber.startIndex, offsetBy: cursorStartPos))..<(phoneNumber.index(phoneNumber.startIndex, offsetBy: cursorEndPos)), with: "") + + rangePos = phoneNumberTextField.position(from: phoneNumberTextField.beginningOfDocument, + offset: cursorStartPos) + } + + reformatPhoneNumber() + + guard let cursorPos = rangePos else { return } + phoneNumberTextField.selectedTextRange = phoneNumberTextField.textRange(from: cursorPos, + to: cursorPos) + } else { + phoneNumber.removeLast() + reformatPhoneNumber() + } + } + + @IBAction private func callButtonAction(_ sender: DialpadActionButton) { + phoneNumber = phoneNumberTextField.text ?? "" + delegate?.dialpadViewControllerDidTapCall?(self, withPhoneNumber: rawPhoneNumber) + } + +} + +// MARK: - CustomSizedPresentable + +extension DialpadViewController: CustomSizedPresentable { + + func customSize(withParentContainerSize containerSize: CGSize) -> CGSize { + if UIDevice.current.isPhone { + return CGSize(width: containerSize.width, height: containerSize.height - topSafeAreaInset()) + } + return Constants.sizeOniPad + } + + func position(withParentContainerSize containerSize: CGSize) -> CGPoint { + let mySize = customSize(withParentContainerSize: containerSize) + + if UIDevice.current.isPhone { + return CGPoint(x: 0, y: topSafeAreaInset()) + } + + return CGPoint(x: (containerSize.width - mySize.width)/2, + y: (containerSize.height - mySize.height)/2) + } + +} diff --git a/Riot/Modules/Call/Dialpad/Views/DialpadActionButton.swift b/Riot/Modules/Call/Dialpad/Views/DialpadActionButton.swift new file mode 100644 index 000000000..3426269d5 --- /dev/null +++ b/Riot/Modules/Call/Dialpad/Views/DialpadActionButton.swift @@ -0,0 +1,39 @@ +// +// Copyright 2020 New Vector Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import UIKit + +/// Dialpad action button type +@objc enum DialpadActionButtonType: Int { + case backspace + case call +} + +/// Action button class for Dialpad screen +class DialpadActionButton: DialpadButton { + + var type: DialpadActionButtonType = .backspace + + override func update(theme: Theme) { + switch type { + case .backspace: + backgroundColor = theme.warningColor + case .call: + backgroundColor = theme.tintColor + } + } + +} diff --git a/Riot/Modules/Call/Dialpad/Views/DialpadButton.swift b/Riot/Modules/Call/Dialpad/Views/DialpadButton.swift new file mode 100644 index 000000000..c8e55b5ea --- /dev/null +++ b/Riot/Modules/Call/Dialpad/Views/DialpadButton.swift @@ -0,0 +1,56 @@ +// +// Copyright 2020 New Vector Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import UIKit + +/// Digit button class for Dialpad screen +class DialpadButton: UIButton { + + private enum Constants { + static let size: CGSize = CGSize(width: 68, height: 68) + } + + init() { + super.init(frame: CGRect(origin: .zero, size: Constants.size)) + } + + override init(frame: CGRect) { + super.init(frame: frame) + setup() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + setup() + } + + private func setup() { + clipsToBounds = true + layer.cornerRadius = Constants.size.width/2 + } + +} + +// MARK: - Themable + +extension DialpadButton: Themable { + + func update(theme: Theme) { + setTitleColor(theme.textPrimaryColor, for: .normal) + backgroundColor = theme.headerBackgroundColor + } + +} diff --git a/Riot/Modules/Call/Views/CallBar/CallBar.swift b/Riot/Modules/Call/Views/CallBar/CallBar.swift new file mode 100644 index 000000000..d79531e32 --- /dev/null +++ b/Riot/Modules/Call/Views/CallBar/CallBar.swift @@ -0,0 +1,57 @@ +// +// Copyright 2020 New Vector Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation +import Reusable + +@objc protocol CallBarDelegate: class { + func callBarDidTapReturnButton(_ callBar: CallBar) +} + +@objcMembers +class CallBar: UIView, NibLoadable { + + @IBOutlet private weak var callIcon: UIImageView! { + didSet { + callIcon.image = Asset.Images.voiceCallHangonIcon.image.vc_tintedImage(usingColor: .white) + } + } + @IBOutlet private weak var titleLabel: UILabel! + @IBOutlet private weak var returnLabel: UILabel! { + didSet { + returnLabel.text = VectorL10n.callbarReturn + } + } + @IBOutlet private weak var returnButton: UIButton! + + weak var delegate: CallBarDelegate? + + static func instantiate() -> CallBar { + return CallBar.loadFromNib() + } + + var title: String? { + get { + return titleLabel.text + } set { + titleLabel.text = newValue + } + } + + @IBAction private func returnButtonTapped(_ sender: UIButton) { + delegate?.callBarDidTapReturnButton(self) + } +} diff --git a/Riot/Modules/Call/Views/CallBar/CallBar.xib b/Riot/Modules/Call/Views/CallBar/CallBar.xib new file mode 100644 index 000000000..93de09976 --- /dev/null +++ b/Riot/Modules/Call/Views/CallBar/CallBar.xib @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Riot/Modules/CallTransfer/CallTransferMainViewController.storyboard b/Riot/Modules/CallTransfer/CallTransferMainViewController.storyboard new file mode 100644 index 000000000..3e4c7389a --- /dev/null +++ b/Riot/Modules/CallTransfer/CallTransferMainViewController.storyboard @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Riot/Modules/CallTransfer/CallTransferMainViewController.swift b/Riot/Modules/CallTransfer/CallTransferMainViewController.swift new file mode 100644 index 000000000..af4b093d1 --- /dev/null +++ b/Riot/Modules/CallTransfer/CallTransferMainViewController.swift @@ -0,0 +1,223 @@ +// File created from simpleScreenTemplate +// $ createSimpleScreen.sh CallTransfer2 CallTransferMain +/* + Copyright 2020 New Vector Ltd + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import UIKit + +@objc protocol CallTransferMainViewControllerDelegate: class { + func callTransferMainViewControllerDidComplete(_ viewController: CallTransferMainViewController, + consult: Bool, + contact: MXKContact?, + phoneNumber: String?) + func callTransferMainViewControllerDidCancel(_ viewController: CallTransferMainViewController) +} + +@objcMembers +final class CallTransferMainViewController: UIViewController { + + // MARK: - Properties + + // MARK: Outlets + + @IBOutlet private weak var segmentedControl: UISegmentedControl! { + didSet { + segmentedControl.setTitle(VectorL10n.callTransferUsers, forSegmentAt: 0) + segmentedControl.setTitle(VectorL10n.callTransferDialpad, forSegmentAt: 1) + } + } + @IBOutlet private weak var containerView: UIView! + @IBOutlet private weak var bottomBgView: UIView! + @IBOutlet private weak var consultButton: UIButton! + @IBOutlet private weak var connectButton: RoundedButton! { + didSet { + connectButton.isEnabled = false + } + } + + // MARK: Private + + private var selectedContact: MXKContact? { + didSet { + updateConnectButton() + } + } + private var phoneNumber: String? { + didSet { + updateConnectButton() + } + } + private var session: MXSession! + private var ignoredUserIds: [String] = [] + private var theme: Theme! + + private lazy var contactsVC: CallTransferSelectContactViewController = { + let controller = CallTransferSelectContactViewController.instantiate(withSession: session, ignoredUserIds: ignoredUserIds) + controller.delegate = self + return controller + }() + + private lazy var dialpadVC: DialpadViewController = { + let configuration = DialpadConfiguration(showsTitle: false, + showsCloseButton: false, + showsCallButton: false) + let controller = DialpadViewController.instantiate(withConfiguration: configuration) + controller.delegate = self + return controller + }() + + // MARK: Public + + weak var delegate: CallTransferMainViewControllerDelegate? + + // MARK: - Setup + + class func instantiate(withSession session: MXSession, ignoredUserIds: [String] = []) -> CallTransferMainViewController { + let viewController = StoryboardScene.CallTransferMainViewController.initialScene.instantiate() + viewController.session = session + viewController.ignoredUserIds = ignoredUserIds + viewController.theme = ThemeService.shared().theme + return viewController + } + + // MARK: - Life cycle + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + + self.title = VectorL10n.callTransferTitle + self.vc_removeBackTitle() + + self.setupViews() + self.registerThemeServiceDidChangeThemeNotification() + self.update(theme: self.theme) + } + + override var preferredStatusBarStyle: UIStatusBarStyle { + return self.theme.statusBarStyle + } + + // MARK: - Private + + private func updateConnectButton() { + if selectedContact != nil { + connectButton.isEnabled = true + connectButton.alpha = 1 + } else if let phoneNumber = phoneNumber, !phoneNumber.isEmpty { + connectButton.isEnabled = true + connectButton.alpha = 1 + } else { + connectButton.isEnabled = false + connectButton.alpha = 0.4 + } + } + + private func setupViews() { + let cancelBarButtonItem = MXKBarButtonItem(title: VectorL10n.cancel, style: .plain) { [weak self] in + self?.cancelButtonAction() + } + self.navigationItem.leftBarButtonItem = cancelBarButtonItem + + updateConnectButton() + + addChild(contactsVC) + addChild(dialpadVC) + + if let view = contentView(at: segmentedControl.selectedSegmentIndex) { + containerView.vc_addSubViewMatchingParent(view) + } + } + + private func update(theme: Theme) { + self.theme = theme + + self.view.backgroundColor = theme.headerBackgroundColor + + if let navigationBar = self.navigationController?.navigationBar { + theme.applyStyle(onNavigationBar: navigationBar) + } + + self.bottomBgView.backgroundColor = theme.baseColor + self.consultButton.tintColor = theme.tintColor + self.consultButton.setTitleColor(theme.textPrimaryColor, for: .normal) + self.connectButton.update(theme: theme) + } + + private func registerThemeServiceDidChangeThemeNotification() { + NotificationCenter.default.addObserver(self, selector: #selector(themeDidChange), name: .themeServiceDidChangeTheme, object: nil) + } + + private func contentView(at index: Int) -> UIView? { + switch index { + case 0: + return contactsVC.view + case 1: + return dialpadVC.view + default: + return nil + } + } + + // MARK: - Actions + + @objc private func themeDidChange() { + self.update(theme: ThemeService.shared().theme) + } + + @IBAction private func segmentedControlValueChanged(_ sender: UISegmentedControl) { + containerView.vc_removeAllSubviews() + if let view = contentView(at: sender.selectedSegmentIndex) { + containerView.vc_addSubViewMatchingParent(view) + } + } + + @IBAction private func consultButtonAction(_ sender: UIButton) { + sender.isSelected = !sender.isSelected + } + + @IBAction private func connectButtonAction(_ sender: UIButton) { + delegate?.callTransferMainViewControllerDidComplete(self, + consult: consultButton.isSelected, + contact: selectedContact, + phoneNumber: phoneNumber) + } + + private func cancelButtonAction() { + self.delegate?.callTransferMainViewControllerDidCancel(self) + } +} + +// MARK: - CallTransferSelectContactViewControllerDelegate + +extension CallTransferMainViewController: CallTransferSelectContactViewControllerDelegate { + + func callTransferSelectContactViewControllerDidSelectContact(_ viewController: CallTransferSelectContactViewController, contact: MXKContact?) { + selectedContact = contact + } + +} + +// MARK: - DialpadViewControllerDelegate + +extension CallTransferMainViewController: DialpadViewControllerDelegate { + + func dialpadViewControllerDidTapDigit(_ viewController: DialpadViewController, digit: String) { + phoneNumber = viewController.rawPhoneNumber + } + +} diff --git a/Riot/Modules/CallTransfer/SelectContact/CallTransferSelectContactViewController.storyboard b/Riot/Modules/CallTransfer/SelectContact/CallTransferSelectContactViewController.storyboard new file mode 100644 index 000000000..0b8ad7951 --- /dev/null +++ b/Riot/Modules/CallTransfer/SelectContact/CallTransferSelectContactViewController.storyboard @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Riot/Modules/CallTransfer/SelectContact/CallTransferSelectContactViewController.swift b/Riot/Modules/CallTransfer/SelectContact/CallTransferSelectContactViewController.swift new file mode 100644 index 000000000..786cc4f71 --- /dev/null +++ b/Riot/Modules/CallTransfer/SelectContact/CallTransferSelectContactViewController.swift @@ -0,0 +1,333 @@ +// File created from simpleScreenTemplate +// $ createSimpleScreen.sh CallTransfer CallTransferSelectContact +/* + Copyright 2020 New Vector Ltd + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import UIKit +import Reusable + +protocol CallTransferSelectContactViewControllerDelegate: class { + func callTransferSelectContactViewControllerDidSelectContact(_ viewController: CallTransferSelectContactViewController, + contact: MXKContact?) +} + +final class CallTransferSelectContactViewController: UIViewController { + + // MARK: - Properties + + // MARK: Outlets + + @IBOutlet private weak var mainTableView: UITableView! + + // MARK: Private + + private enum Constants { + static let maxNumberOfRecentContacts: UInt = 10 + static let sectionHeaderHeightDefault: CGFloat = 30.0 + static let sectionHeaderHeightHidden: CGFloat = 0.01 + } + + private var session: MXSession! + private var theme: Theme! + private var contactsDataSource: ContactsDataSource! { + didSet { + for userId in ignoredUserIds { + contactsDataSource.ignoredContactsByMatrixId[userId] = MXKContact() + } + contactsDataSource.delegate = self + } + } + private var ignoredUserIds: [String] = [] + private var selectedIndexPath: IndexPath? + + private lazy var mainSearchBar: UISearchBar = { + let searchBar = UISearchBar(frame: CGRect(origin: .zero, size: CGSize(width: mainTableView.frame.width, height: 44))) + searchBar.delegate = self + searchBar.placeholder = VectorL10n.searchDefaultPlaceholder + searchBar.returnKeyType = .done + return searchBar + }() + + private struct Row { + var contact: MXKContact + var accessoryType: UITableViewCell.AccessoryType = .none + } + + private struct Section { + var header: String? + var rows: [Row] + } + + private var sections: [Section] = [] { + didSet { + mainTableView.reloadData() + } + } + + // MARK: Public + + weak var delegate: CallTransferSelectContactViewControllerDelegate? + + // MARK: - Setup + + class func instantiate(withSession session: MXSession, ignoredUserIds: [String] = []) -> CallTransferSelectContactViewController { + let viewController = StoryboardScene.CallTransferSelectContactViewController.initialScene.instantiate() + viewController.session = session + viewController.ignoredUserIds = ignoredUserIds + viewController.contactsDataSource = MatrixContactsDataSource(matrixSession: session) + viewController.theme = ThemeService.shared().theme + return viewController + } + + // MARK: - Life cycle + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + + self.vc_removeBackTitle() + + self.setupViews() + self.registerThemeServiceDidChangeThemeNotification() + self.update(theme: self.theme) + + updateSections() + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + + MXKContactManager.shared().refreshLocalContacts() + } + + override var preferredStatusBarStyle: UIStatusBarStyle { + return self.theme.statusBarStyle + } + + // MARK: - Private + + private func updateSections() { + var tmpSections: [Section] = [] + + let users = session.callManager.getRecentCalledUsers(Constants.maxNumberOfRecentContacts, + ignoredUserIds: ignoredUserIds) + var recentRows: [Row] = [] + for (index, user) in users.enumerated() { + let indexPath = IndexPath(row: index, section: 0) + let accessoryType: UITableViewCell.AccessoryType = indexPath == selectedIndexPath ? .checkmark : .none + let row = Row(contact: MXKContact(matrixContactWithDisplayName: user.displayname, + matrixID: user.userId, + andMatrixAvatarURL: user.avatarUrl), + accessoryType: accessoryType) + + recentRows.append(row) + } + let recentsSection = Section(header: VectorL10n.callTransferContactsRecent, rows: recentRows) + tmpSections.append(recentsSection) + + let sectionOffset = tmpSections.count + + for section in 0.. Int { + return sections.count + } + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return sections[section].rows.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let row = sections[indexPath.section].rows[indexPath.row] + + let cell: ContactTableViewCell = tableView.dequeueReusableCell(for: indexPath) + + cell.render(row.contact) + // replace presence with user id + cell.contactInformationLabel.text = row.contact.matrixIdentifiers.first as? String + + if row.accessoryType == .checkmark { + cell.accessoryView = UIImageView(image: Asset.Images.checkmark.image) + } else { + cell.accessoryView = nil + cell.accessoryType = row.accessoryType + } + + return cell + } + +} + +// MARK: - UITableViewDelegate + +extension CallTransferSelectContactViewController: UITableViewDelegate { + + func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { + cell.backgroundColor = theme.backgroundColor + cell.selectedBackgroundView = UIView() + cell.selectedBackgroundView?.backgroundColor = theme.selectedBackgroundColor + } + + func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { + return sections[section].header + } + + func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { + if sections[section].header != nil { + return Constants.sectionHeaderHeightDefault + } + return Constants.sectionHeaderHeightHidden + } + + func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { + if sections[section].header != nil { + return Constants.sectionHeaderHeightDefault + } + return Constants.sectionHeaderHeightHidden + } + + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + tableView.deselectRow(at: indexPath, animated: true) + + if selectedIndexPath == indexPath { + selectedIndexPath = nil + delegate?.callTransferSelectContactViewControllerDidSelectContact(self, contact: nil) + } else { + selectedIndexPath = indexPath + let contact = sections[indexPath.section].rows[indexPath.row].contact + delegate?.callTransferSelectContactViewControllerDidSelectContact(self, contact: contact) + } + + updateSections() + } + +} + +// MARK: - UISearchBarDelegate + +extension CallTransferSelectContactViewController { + + override func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { + contactsDataSource.search(withPattern: searchText, forceReset: false) + } + + override func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { + if let contact = contactsDataSource.searchInputContact { + delegate?.callTransferSelectContactViewControllerDidSelectContact(self, contact: contact) + } + + searchBar.resignFirstResponder() + } + + override func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { + searchBar.text = nil + + contactsDataSource.search(withPattern: nil, forceReset: false) + + searchBar.resignFirstResponder() + } + + override func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) { + DispatchQueue.main.async { + searchBar.setShowsCancelButton(true, animated: true) + } + } + + override func searchBarTextDidEndEditing(_ searchBar: UISearchBar) { + DispatchQueue.main.async { + searchBar.setShowsCancelButton(false, animated: false) + } + } + +} + +// MARK: - MXKDataSourceDelegate + +extension CallTransferSelectContactViewController: MXKDataSourceDelegate { + + func cellViewClass(for cellData: MXKCellData!) -> MXKCellRendering.Type! { + return nil + } + + func cellReuseIdentifier(for cellData: MXKCellData!) -> String! { + return nil + } + + func dataSource(_ dataSource: MXKDataSource!, didCellChange changes: Any!) { + updateSections() + } + + func dataSource(_ dataSource: MXKDataSource!, didStateChange state: MXKDataSourceState) { + updateSections() + } + +} + +extension ContactTableViewCell: Reusable {} diff --git a/Riot/Modules/CallTransfer/SelectContact/MatrixContactsDataSource.h b/Riot/Modules/CallTransfer/SelectContact/MatrixContactsDataSource.h new file mode 100644 index 000000000..81b37d7be --- /dev/null +++ b/Riot/Modules/CallTransfer/SelectContact/MatrixContactsDataSource.h @@ -0,0 +1,26 @@ +// +// Copyright 2020 New Vector Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#import "ContactsDataSource.h" + +NS_ASSUME_NONNULL_BEGIN + +/// ContactsDataSource with `hideNonMatrixEnabledContacts`as true by default. +@interface MatrixContactsDataSource : ContactsDataSource + +@end + +NS_ASSUME_NONNULL_END diff --git a/Riot/Modules/CallTransfer/SelectContact/MatrixContactsDataSource.m b/Riot/Modules/CallTransfer/SelectContact/MatrixContactsDataSource.m new file mode 100644 index 000000000..1bc9eea35 --- /dev/null +++ b/Riot/Modules/CallTransfer/SelectContact/MatrixContactsDataSource.m @@ -0,0 +1,42 @@ +// +// Copyright 2020 New Vector Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#import "MatrixContactsDataSource.h" + +@implementation MatrixContactsDataSource + +- (instancetype)init +{ + self = [super init]; + if (self) { + hideNonMatrixEnabledContacts = YES; + } + return self; +} + +- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section +{ + if (section == filteredLocalContactsSection) + { + return NSLocalizedStringFromTable(@"contacts_address_book_section", @"Vector", nil); + } + else + { + return NSLocalizedStringFromTable(@"call_transfer_contacts_all", @"Vector", nil); + } +} + +@end diff --git a/Riot/Modules/Common/Buttons/CustomRoundedButton.swift b/Riot/Modules/Common/Buttons/CustomRoundedButton.swift new file mode 100644 index 000000000..15c307092 --- /dev/null +++ b/Riot/Modules/Common/Buttons/CustomRoundedButton.swift @@ -0,0 +1,45 @@ +// +// Copyright 2020 New Vector Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import UIKit + +class CustomRoundedButton: UIButton { + + // MARK: - Constants + + private enum Constants { + static let cornerRadius: CGFloat = 6.0 + static let fontSize: CGFloat = 17.0 + } + + // MARK: Setup + + override init(frame: CGRect) { + super.init(frame: frame) + self.commonInit() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + self.commonInit() + } + + private func commonInit() { + self.layer.masksToBounds = true + self.titleLabel?.font = UIFont.systemFont(ofSize: Constants.fontSize) + self.layer.cornerRadius = Constants.cornerRadius + } +} diff --git a/Riot/Modules/Common/Buttons/Close/RoundedButton.swift b/Riot/Modules/Common/Buttons/RoundedButton.swift similarity index 81% rename from Riot/Modules/Common/Buttons/Close/RoundedButton.swift rename to Riot/Modules/Common/Buttons/RoundedButton.swift index 61f2ac293..e8cb694e6 100644 --- a/Riot/Modules/Common/Buttons/Close/RoundedButton.swift +++ b/Riot/Modules/Common/Buttons/RoundedButton.swift @@ -16,14 +16,12 @@ import UIKit -final class RoundedButton: UIButton, Themable { +final class RoundedButton: CustomRoundedButton, Themable { // MARK: - Constants private enum Constants { static let backgroundColorAlpha: CGFloat = 0.2 - static let cornerRadius: CGFloat = 6.0 - static let fontSize: CGFloat = 17.0 } // MARK: - Properties @@ -45,17 +43,9 @@ final class RoundedButton: UIButton, Themable { override func awakeFromNib() { super.awakeFromNib() - self.layer.masksToBounds = true - self.titleLabel?.font = UIFont.systemFont(ofSize: Constants.fontSize) self.update(theme: ThemeService.shared().theme) } - override func layoutSubviews() { - super.layoutSubviews() - - self.layer.cornerRadius = Constants.cornerRadius - } - // MARK: - Private private func updateButtonStyle() { diff --git a/Riot/Modules/Common/NavigationController/RiotNavigationController.m b/Riot/Modules/Common/NavigationController/RiotNavigationController.m index 5507b8763..44d34c921 100644 --- a/Riot/Modules/Common/NavigationController/RiotNavigationController.m +++ b/Riot/Modules/Common/NavigationController/RiotNavigationController.m @@ -55,4 +55,14 @@ return [super preferredInterfaceOrientationForPresentation]; } +- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated +{ + if ([self.viewControllers indexOfObject:viewController] != NSNotFound) + { + NSLog(@"[RiotNavigationController] pushViewController: is pushing same view controller %@\n%@", viewController, [NSThread callStackSymbols]); + return; + } + [super pushViewController:viewController animated:animated]; +} + @end diff --git a/Riot/Modules/Common/Presentation/CustomSizedPresentable.swift b/Riot/Modules/Common/Presentation/CustomSizedPresentable.swift new file mode 100644 index 000000000..50c2045cf --- /dev/null +++ b/Riot/Modules/Common/Presentation/CustomSizedPresentable.swift @@ -0,0 +1,30 @@ +// +// Copyright 2020 New Vector Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation + +/// Protocol to be used with a `CustomSizedPresentationController` +@objc protocol CustomSizedPresentable { + + /// Custom size for presentable. If not implemented, the presentable will have the both half width and height of the container view. + /// - Parameter containerSize: Container view's size. + @objc optional func customSize(withParentContainerSize containerSize: CGSize) -> CGSize + + /// Position (origin) of presentable in container. If not implemented, the presentable will be centered to the container view. + /// - Parameter containerSize: Container view's size. + @objc optional func position(withParentContainerSize containerSize: CGSize) -> CGPoint + +} diff --git a/Riot/Modules/Common/Presentation/CustomSizedPresentationController.swift b/Riot/Modules/Common/Presentation/CustomSizedPresentationController.swift new file mode 100644 index 000000000..ce161ecec --- /dev/null +++ b/Riot/Modules/Common/Presentation/CustomSizedPresentationController.swift @@ -0,0 +1,240 @@ +// +// Copyright 2020 New Vector Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import UIKit + +/// Controller for custom sized presentations. +/// By default, presented view controller will be sized as both half of the screen in width and height, and will be centered to the screen. +/// Implement `CustomSizedPresentable` in presented view controller to change that if needed. +/// This class can also be set as `transitioningDelegate` as presented view controller, as it's conforming `UIViewControllerTransitioningDelegate`. +@objcMembers +class CustomSizedPresentationController: UIPresentationController { + + // MARK: - Public Properties + + /// Corner radius for presented view controller's view. Default value is `8.0`. + var cornerRadius: CGFloat = 8.0 + + /// Background color of dimming view, which is located behind the presented view controller's view. Default value is `white with 0.5 alpha`. + var dimColor: UIColor = UIColor(white: 0.0, alpha: 0.5) + + /// Dismiss view controller when background tapped. Default value is `true`. + var dismissOnBackgroundTap: Bool = true + + // MARK: - Private Properties + + /// Dim view + private var dimmingView: UIView! + + /// Wrapper view for presentation. It's introduced to handle corner radius on presented view controller's view and it's superview of all other views. + private var presentationWrappingView: UIView! + + // MARK: - Initializer + + override init(presentedViewController: UIViewController, presenting presentingViewController: UIViewController?) { + super.init(presentedViewController: presentedViewController, presenting: presentingViewController) + + presentedViewController.modalPresentationStyle = .custom + } + + // MARK: - Actions + + @objc private func dimmingViewTapped(_ sender: UITapGestureRecognizer) { + if dismissOnBackgroundTap { + presentedViewController.dismiss(animated: true, completion: nil) + } + } + + // MARK: - Presentation + + override func presentationTransitionWillBegin() { + guard let presentedViewControllerView = super.presentedView else { return } + + // Wrap the presented view controller's view in an intermediate hierarchy + // that applies a shadow and rounded corners to the top-left and top-right + // edges. The final effect is built using three intermediate views. + // + // presentationWrapperView <- shadow + // |- presentationRoundedCornerView <- rounded corners (masksToBounds) + // |- presentedViewControllerWrapperView + // |- presentedViewControllerView (presentedViewController.view) + // + // SEE ALSO: The note in AAPLCustomPresentationSecondViewController.m. + do { + let presentationWrapperView = UIView(frame: frameOfPresentedViewInContainerView) + presentationWrapperView.layer.shadowOffset = CGSize(width: 0, height: -2) + presentationWrapperView.layer.shadowRadius = 10 + presentationWrapperView.layer.shadowColor = UIColor(white: 0, alpha: 0.5).cgColor + presentationWrappingView = presentationWrapperView + + // presentationRoundedCornerView is CORNER_RADIUS points taller than the + // height of the presented view controller's view. This is because + // the cornerRadius is applied to all corners of the view. Since the + // effect calls for only the top two corners to be rounded we size + // the view such that the bottom CORNER_RADIUS points lie below + // the bottom edge of the screen. + let cornerViewRect = presentationWrapperView.bounds//.inset(by: UIEdgeInsets(top: 0, left: 0, bottom: -cornerRadius, right: 0)) + + let presentationRoundedCornerView = UIView(frame: cornerViewRect) + presentationRoundedCornerView.autoresizingMask = [.flexibleWidth, .flexibleHeight] + presentationRoundedCornerView.layer.cornerRadius = cornerRadius + presentationRoundedCornerView.layer.masksToBounds = true + + // To undo the extra height added to presentationRoundedCornerView, + // presentedViewControllerWrapperView is inset by CORNER_RADIUS points. + // This also matches the size of presentedViewControllerWrapperView's + // bounds to the size of -frameOfPresentedViewInContainerView. + let wrapperRect = presentationRoundedCornerView.bounds + + let presentedViewControllerWrapperView = UIView(frame: wrapperRect) + presentedViewControllerWrapperView.autoresizingMask = [.flexibleWidth, .flexibleHeight] + + // Add presentedViewControllerView -> presentedViewControllerWrapperView. + presentedViewControllerView.autoresizingMask = [.flexibleWidth, .flexibleHeight] + presentedViewControllerView.frame = presentedViewControllerWrapperView.bounds + presentedViewControllerWrapperView.addSubview(presentedViewControllerView) + + // Add presentedViewControllerWrapperView -> presentationRoundedCornerView. + presentationRoundedCornerView.addSubview(presentedViewControllerWrapperView) + + // Add presentationRoundedCornerView -> presentationWrapperView. + presentationWrapperView.addSubview(presentationRoundedCornerView) + } + + // Add a dimming view behind presentationWrapperView. self.presentedView + // is added later (by the animator) so any views added here will be + // appear behind the -presentedView. + do { + let dimmingView = UIView(frame: containerView?.bounds ?? .zero) + dimmingView.backgroundColor = dimColor + dimmingView.isOpaque = false + dimmingView.autoresizingMask = [.flexibleWidth, .flexibleHeight] + + let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dimmingViewTapped(_:))) + dimmingView.addGestureRecognizer(tapGestureRecognizer) + + self.dimmingView = dimmingView + containerView?.addSubview(dimmingView) + + // Get the transition coordinator for the presentation so we can + // fade in the dimmingView alongside the presentation animation. + let transitionCoordinator = self.presentingViewController.transitionCoordinator + + dimmingView.alpha = 0.0 + transitionCoordinator?.animate(alongsideTransition: { _ in + self.dimmingView?.alpha = 1.0 + }, completion: nil) + } + } + + override func presentationTransitionDidEnd(_ completed: Bool) { + if !completed { + presentationWrappingView = nil + dimmingView = nil + } + } + + // MARK: - Dismissal + + override func dismissalTransitionWillBegin() { + guard let coordinator = presentingViewController.transitionCoordinator else { + dimmingView.alpha = 0.0 + return + } + + coordinator.animate(alongsideTransition: { _ in + self.dimmingView.alpha = 0.0 + }) + } + + override func dismissalTransitionDidEnd(_ completed: Bool) { + if completed { + presentationWrappingView = nil + dimmingView = nil + } + } + + // MARK: - Overrides + + override var presentedView: UIView? { + return presentationWrappingView + } + + override func size(forChildContentContainer container: UIContentContainer, + withParentContainerSize parentSize: CGSize) -> CGSize { + guard container === presentedViewController else { + return super.size(forChildContentContainer: container, withParentContainerSize: parentSize) + } + + // return value from presentable if implemented + if let presentable = presentedViewController as? CustomSizedPresentable, let customSize = presentable.customSize?(withParentContainerSize: parentSize) { + return customSize + } + + // half of the width/height by default + return CGSize(width: parentSize.width/2.0, height: parentSize.height/2.0) + } + + override var frameOfPresentedViewInContainerView: CGRect { + guard let containerView = containerView else { + return super.frameOfPresentedViewInContainerView + } + + let size = self.size(forChildContentContainer: presentedViewController, + withParentContainerSize: containerView.bounds.size) + + // use origin value from presentable if implemented + if let presentable = presentedViewController as? CustomSizedPresentable, let origin = presentable.position?(withParentContainerSize: containerView.bounds.size) { + return CGRect(origin: origin, size: size) + } + + // center presented view by default + let origin = CGPoint(x: (containerView.bounds.width - size.width)/2, + y: (containerView.bounds.height - size.height)/2) + + return CGRect(origin: origin, size: size) + } + + override func containerViewWillLayoutSubviews() { + super.containerViewWillLayoutSubviews() + + self.dimmingView?.frame = containerView?.bounds ?? .zero + self.presentationWrappingView?.frame = frameOfPresentedViewInContainerView + } + + override func preferredContentSizeDidChange(forChildContentContainer container: UIContentContainer) { + super.preferredContentSizeDidChange(forChildContentContainer: container) + + if container === presentedViewController { + self.containerView?.setNeedsLayout() + } + } + +} + +// MARK: - UIViewControllerTransitioningDelegate + +extension CustomSizedPresentationController: UIViewControllerTransitioningDelegate { + + func presentationController(forPresented presented: UIViewController, presenting: UIViewController?, source: UIViewController) -> UIPresentationController? { + let controller = CustomSizedPresentationController(presentedViewController: presented, presenting: presenting) + controller.cornerRadius = cornerRadius + controller.dimColor = dimColor + controller.dismissOnBackgroundTap = dismissOnBackgroundTap + return controller + } + +} diff --git a/Riot/Modules/Common/Recents/RecentsViewController+RoomInvite.swift b/Riot/Modules/Common/Recents/RecentsViewController+RoomInvite.swift index 4c9eb0288..32bf4dada 100644 --- a/Riot/Modules/Common/Recents/RecentsViewController+RoomInvite.swift +++ b/Riot/Modules/Common/Recents/RecentsViewController+RoomInvite.swift @@ -19,11 +19,6 @@ import Foundation extension RecentsViewController { @objc func canShowRoomPreview(for room: MXRoom) -> Bool { - // Do not show room preview if room is not direct - guard room.isDirect else { - return false - } - let membershipTransitionState = room.summary.membershipTransitionState // NOTE: For the moment do not offer the possibility to show room preview when invitation action is in progress diff --git a/Riot/Modules/CrossSigning/CrossSigningService.swift b/Riot/Modules/CrossSigning/CrossSigningService.swift index 1168a8243..ab40e6369 100644 --- a/Riot/Modules/CrossSigning/CrossSigningService.swift +++ b/Riot/Modules/CrossSigning/CrossSigningService.swift @@ -16,11 +16,32 @@ import Foundation +enum CrossSigningServiceError: Int, Error { + case authenticationRequired + case unknown +} + +extension CrossSigningServiceError: CustomNSError { + public static let errorDomain = "CrossSigningService" + + public var errorCode: Int { + return Int(rawValue) + } + + public var errorUserInfo: [String: Any] { + return [:] + } +} + @objcMembers final class CrossSigningService: NSObject { - private var authenticatedSessionFactory: AuthenticatedSessionViewControllerFactory? + // MARK - Properties + private var supportSetupKeyVerificationByUser: [String: Bool] = [:] // Cached server response + private var userInteractiveAuthenticationService: UserInteractiveAuthenticationService? + + // MARK - Public @discardableResult func canSetupCrossSigning(for session: MXSession, success: @escaping ((Bool) -> Void), failure: @escaping ((Error) -> Void)) -> MXHTTPOperation? { @@ -39,25 +60,57 @@ final class CrossSigningService: NSObject { return nil } - let authenticatedSessionFactory = AuthenticatedSessionViewControllerFactory(session: session) + let userInteractiveAuthenticationService = UserInteractiveAuthenticationService(session: session) - self.authenticatedSessionFactory = authenticatedSessionFactory + self.userInteractiveAuthenticationService = userInteractiveAuthenticationService + + let request = self.setupCrossSigningRequest() - let path = "\(kMXAPIPrefixPathUnstable)/keys/device_signing/upload" - - return authenticatedSessionFactory.hasSupport(forPath: path, httpMethod: "POST", success: { [weak self] succeeded in - guard let self = self else { - return - } - self.authenticatedSessionFactory = nil - self.supportSetupKeyVerificationByUser[userId] = succeeded - success(succeeded) - }, failure: { [weak self] error in - guard let self = self else { - return - } - self.authenticatedSessionFactory = nil + return userInteractiveAuthenticationService.canAuthenticate(with: request) { (result) in + switch result { + case .success(let succeeded): + success(succeeded) + case .failure(let error): failure(error) - }) + } + } + } + + func setupCrossSigningRequest() -> AuthenticatedEndpointRequest { + let path = "\(kMXAPIPrefixPathUnstable)/keys/device_signing/upload" + return AuthenticatedEndpointRequest(path: path, httpMethod: "POST") + } + + /// Setup cross-signing without authentication. Useful when a grace period is enabled. + @discardableResult + func setupCrossSigningWithoutAuthentication(for session: MXSession, success: @escaping (() -> Void), failure: @escaping ((Error) -> Void)) -> MXHTTPOperation? { + + guard let crossSigning = session.crypto.crossSigning else { + failure(CrossSigningServiceError.unknown) + return nil + } + + let userInteractiveAuthenticationService = UserInteractiveAuthenticationService(session: session) + self.userInteractiveAuthenticationService = userInteractiveAuthenticationService + + let request = self.setupCrossSigningRequest() + + return userInteractiveAuthenticationService.authenticatedEndpointStatus(for: request) { result in + switch result { + case .success(let authenticatedEnpointStatus): + switch authenticatedEnpointStatus { + case .authenticationNeeded: + failure(CrossSigningServiceError.authenticationRequired) + case .authenticationNotNeeded: + crossSigning.setup(withAuthParams: [:]) { + success() + } failure: { error in + failure(error) + } + } + case .failure(let error): + failure(error) + } + } } } diff --git a/Riot/Modules/CrossSigning/Setup/CrossSigningSetupCoordinator.swift b/Riot/Modules/CrossSigning/Setup/CrossSigningSetupCoordinator.swift new file mode 100644 index 000000000..f545b2e44 --- /dev/null +++ b/Riot/Modules/CrossSigning/Setup/CrossSigningSetupCoordinator.swift @@ -0,0 +1,107 @@ +// File created from FlowTemplate +// $ createRootCoordinator.sh CrossSigning CrossSigningSetup +/* + Copyright 2021 New Vector Ltd + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import UIKit + +@objcMembers +final class CrossSigningSetupCoordinator: CrossSigningSetupCoordinatorType { + + // MARK: - Properties + + // MARK: Private + + private let parameters: CrossSigningSetupCoordinatorParameters + private let crossSigningService: CrossSigningService + + // MARK: Public + + // Must be used only internally + var childCoordinators: [Coordinator] = [] + + weak var delegate: CrossSigningSetupCoordinatorDelegate? + + // MARK: - Setup + + init(parameters: CrossSigningSetupCoordinatorParameters) { + self.parameters = parameters + self.crossSigningService = CrossSigningService() + } + + // MARK: - Public methods + + func start() { + self.showReauthentication() + } + + func toPresentable() -> UIViewController { + return self.parameters.presenter.toPresentable() + } + + // MARK: - Private methods + + private func showReauthentication() { + + let setupCrossSigningRequest = self.crossSigningService.setupCrossSigningRequest() + + let reauthenticationParameters = ReauthenticationCoordinatorParameters(session: parameters.session, + presenter: parameters.presenter, + title: parameters.title, + message: parameters.message, + authenticatedEndpointRequest: setupCrossSigningRequest) + + let coordinator = ReauthenticationCoordinator(parameters: reauthenticationParameters) + coordinator.delegate = self + self.add(childCoordinator: coordinator) + + coordinator.start() + } + + private func setupCrossSigning(with authenticationParameters: [String: Any]) { + guard let crossSigning = self.parameters.session.crypto.crossSigning else { + return + } + + crossSigning.setup(withAuthParams: authenticationParameters) { [weak self] in + guard let self = self else { + return + } + self.delegate?.crossSigningSetupCoordinatorDidComplete(self) + } failure: { [weak self] error in + guard let self = self else { + return + } + self.delegate?.crossSigningSetupCoordinator(self, didFailWithError: error) + } + } +} + +// MARK: - ReauthenticationCoordinatorDelegate +extension CrossSigningSetupCoordinator: ReauthenticationCoordinatorDelegate { + + func reauthenticationCoordinatorDidComplete(_ coordinator: ReauthenticationCoordinatorType, withAuthenticationParameters authenticationParameters: [String: Any]?) { + self.setupCrossSigning(with: authenticationParameters ?? [:]) + } + + func reauthenticationCoordinatorDidCancel(_ coordinator: ReauthenticationCoordinatorType) { + self.delegate?.crossSigningSetupCoordinatorDidCancel(self) + } + + func reauthenticationCoordinator(_ coordinator: ReauthenticationCoordinatorType, didFailWithError error: Error) { + self.delegate?.crossSigningSetupCoordinator(self, didFailWithError: error) + } +} diff --git a/Riot/Modules/CrossSigning/Setup/CrossSigningSetupCoordinatorBridgePresenter.swift b/Riot/Modules/CrossSigning/Setup/CrossSigningSetupCoordinatorBridgePresenter.swift new file mode 100644 index 000000000..b334c9c40 --- /dev/null +++ b/Riot/Modules/CrossSigning/Setup/CrossSigningSetupCoordinatorBridgePresenter.swift @@ -0,0 +1,105 @@ +// File created from FlowTemplate +// $ createRootCoordinator.sh CrossSigning CrossSigningSetup +/* + Copyright 2021 New Vector Ltd + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import Foundation + +/// CrossSigningSetupCoordinatorBridgePresenter enables to start CrossSigningSetupCoordinator from a view controller. +/// This bridge is used while waiting for global usage of coordinator pattern. +/// It breaks the Coordinator abstraction and it has been introduced for Objective-C compatibility (mainly for integration in legacy view controllers). +/// Each bridge should be removed once the underlying Coordinator has been integrated by another Coordinator. +@objcMembers +final class CrossSigningSetupCoordinatorBridgePresenter: NSObject { + + // MARK: - Properties + + // MARK: Private + + private let session: MXSession + private var coordinator: CrossSigningSetupCoordinator? + + private var didComplete: (() -> Void)? + private var didCancel: (() -> Void)? + private var didFail: ((Error) -> Void)? + + // MARK: - Setup + + init(session: MXSession) { + self.session = session + super.init() + } + + // MARK: - Public + + func present(with title: String, + message: String, + from viewController: UIViewController, + animated: Bool, + success: @escaping () -> Void, + cancel: @escaping () -> Void, + failure: @escaping (Error) -> Void) { + + self.didComplete = success + self.didCancel = cancel + self.didFail = failure + + let parameters = CrossSigningSetupCoordinatorParameters(session: self.session, presenter: viewController, title: title, message: message) + + let crossSigningSetupCoordinator = CrossSigningSetupCoordinator(parameters: parameters) + crossSigningSetupCoordinator.delegate = self + crossSigningSetupCoordinator.start() + + self.coordinator = crossSigningSetupCoordinator + } + + func dismiss(animated: Bool, completion: (() -> Void)?) { + + self.resetCompletions() + + guard let coordinator = self.coordinator else { + return + } + coordinator.toPresentable().dismiss(animated: animated) { + self.coordinator = nil + + if let completion = completion { + completion() + } + } + } + + private func resetCompletions() { + self.didComplete = nil + self.didCancel = nil + self.didFail = nil + } +} + +// MARK: - CrossSigningSetupCoordinatorDelegate +extension CrossSigningSetupCoordinatorBridgePresenter: CrossSigningSetupCoordinatorDelegate { + func crossSigningSetupCoordinatorDidComplete(_ coordinator: CrossSigningSetupCoordinatorType) { + self.didComplete?() + } + + func crossSigningSetupCoordinatorDidCancel(_ coordinator: CrossSigningSetupCoordinatorType) { + self.didCancel?() + } + + func crossSigningSetupCoordinator(_ coordinator: CrossSigningSetupCoordinatorType, didFailWithError error: Error) { + self.didFail?(error) + } +} diff --git a/Riot/Modules/CrossSigning/Setup/CrossSigningSetupCoordinatorParameters.swift b/Riot/Modules/CrossSigning/Setup/CrossSigningSetupCoordinatorParameters.swift new file mode 100644 index 000000000..a2918dee4 --- /dev/null +++ b/Riot/Modules/CrossSigning/Setup/CrossSigningSetupCoordinatorParameters.swift @@ -0,0 +1,47 @@ +// +// Copyright 2020 New Vector Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation + +/// CrossSigningSetupCoordinator input parameters +@objcMembers +class CrossSigningSetupCoordinatorParameters: NSObject { + + /// The Matrix session + let session: MXSession + + /// The presenter used to show authentication screen(s). + /// Note: Use UIViewController instead of Presentable for ObjC compatibility. + let presenter: UIViewController + + /// The title to use in the authentication screen if present. + let title: String? + + /// The message to use in the authentication screen if present. + let message: String? + + init(session: MXSession, + presenter: UIViewController, + title: String?, + message: String?) { + self.session = session + self.presenter = presenter + self.title = title + self.message = message + + super.init() + } +} diff --git a/Riot/Modules/CrossSigning/Setup/CrossSigningSetupCoordinatorType.swift b/Riot/Modules/CrossSigning/Setup/CrossSigningSetupCoordinatorType.swift new file mode 100644 index 000000000..1dc620d3f --- /dev/null +++ b/Riot/Modules/CrossSigning/Setup/CrossSigningSetupCoordinatorType.swift @@ -0,0 +1,30 @@ +// File created from FlowTemplate +// $ createRootCoordinator.sh CrossSigning CrossSigningSetup +/* + Copyright 2020 New Vector Ltd + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import Foundation + +protocol CrossSigningSetupCoordinatorDelegate: class { + func crossSigningSetupCoordinatorDidComplete(_ coordinator: CrossSigningSetupCoordinatorType) + func crossSigningSetupCoordinatorDidCancel(_ coordinator: CrossSigningSetupCoordinatorType) + func crossSigningSetupCoordinator(_ coordinator: CrossSigningSetupCoordinatorType, didFailWithError error: Error) +} + +/// `CrossSigningSetupCoordinatorType` is a protocol describing a Coordinator that handles cross signing setup navigation flow. +protocol CrossSigningSetupCoordinatorType: Coordinator, Presentable { + var delegate: CrossSigningSetupCoordinatorDelegate? { get } +} diff --git a/Riot/Modules/Home/HomeViewController.m b/Riot/Modules/Home/HomeViewController.m index 95bc66b7a..8a5633156 100644 --- a/Riot/Modules/Home/HomeViewController.m +++ b/Riot/Modules/Home/HomeViewController.m @@ -44,7 +44,7 @@ @property (nonatomic, strong) SecureBackupBannerCell *secureBackupBannerPrototypeCell; @property (nonatomic, strong) CrossSigningSetupBannerCell *keyVerificationSetupBannerPrototypeCell; -@property (nonatomic, strong) AuthenticatedSessionViewControllerFactory *authenticatedSessionViewControllerFactory; +@property (nonatomic, strong) CrossSigningSetupCoordinatorBridgePresenter *crossSigningSetupCoordinatorBridgePresenter; @end @@ -736,68 +736,47 @@ message:(NSString*)message success:(void (^)(void))success failure:(void (^)(NSError *error))failure + { - __block UIViewController *viewController; [self startActivityIndicator]; self.view.userInteractionEnabled = NO; + MXWeakify(self); + void (^animationCompletion)(void) = ^void () { + MXStrongifyAndReturnIfNil(self); + [self stopActivityIndicator]; self.view.userInteractionEnabled = YES; + [self.crossSigningSetupCoordinatorBridgePresenter dismissWithAnimated:YES completion:^{}]; + self.crossSigningSetupCoordinatorBridgePresenter = nil; }; - // Get credentials to set up cross-signing - NSString *path = [NSString stringWithFormat:@"%@/keys/device_signing/upload", kMXAPIPrefixPathUnstable]; - self.authenticatedSessionViewControllerFactory = [[AuthenticatedSessionViewControllerFactory alloc] initWithSession:self.mainSession]; - [self.authenticatedSessionViewControllerFactory viewControllerForPath:path - httpMethod:@"POST" - title:title - message:message - onViewController:^(UIViewController * _Nonnull theViewController) - { - viewController = theViewController; - [self presentViewController:viewController animated:YES completion:nil]; - - } onAuthenticated:^(NSDictionary * _Nonnull authParams) { - - [viewController dismissViewControllerAnimated:NO completion:nil]; - viewController = nil; - - MXCrossSigning *crossSigning = self.mainSession.crypto.crossSigning; - if (crossSigning) - { - [crossSigning setupWithAuthParams:authParams success:^{ - animationCompletion(); - - // TODO: Remove this line and refresh key verification setup banner by listening to a local notification cross-signing state change (Add this behavior into the SDK). - [self->recentsDataSource setDelegate:self andRecentsDataSourceMode:RecentsDataSourceModeHome]; - - [self refreshRecentsTable]; - success(); - } failure:^(NSError * _Nonnull error) { - animationCompletion(); - [self refreshRecentsTable]; - - [[AppDelegate theDelegate] showErrorAsAlert:error]; - failure(error); - }]; - } - - } onCancelled:^{ - animationCompletion(); - - [viewController dismissViewControllerAnimated:NO completion:nil]; - viewController = nil; - failure(nil); - } onFailure:^(NSError * _Nonnull error) { - - animationCompletion(); - [[AppDelegate theDelegate] showErrorAsAlert:error]; - - [viewController dismissViewControllerAnimated:NO completion:nil]; - viewController = nil; - failure(error); - }]; + CrossSigningSetupCoordinatorBridgePresenter *crossSigningSetupCoordinatorBridgePresenter = [[CrossSigningSetupCoordinatorBridgePresenter alloc] initWithSession:self.mainSession]; + + [crossSigningSetupCoordinatorBridgePresenter presentWith:title + message:message + from:self + animated:YES + success:^{ + animationCompletion(); + + // TODO: Remove this line and refresh key verification setup banner by listening to a local notification cross-signing state change (Add this behavior into the SDK). + [self->recentsDataSource setDelegate:self andRecentsDataSourceMode:RecentsDataSourceModeHome]; + [self refreshRecentsTable]; + + success(); + } cancel:^{ + animationCompletion(); + failure(nil); + } failure:^(NSError * _Nonnull error) { + animationCompletion(); + [self refreshRecentsTable]; + [[AppDelegate theDelegate] showErrorAsAlert:error]; + failure(error); + }]; + + self.crossSigningSetupCoordinatorBridgePresenter = crossSigningSetupCoordinatorBridgePresenter; } #pragma mark - Empty view management diff --git a/Riot/Modules/Integrations/Widgets/Jitsi/JitsiService.swift b/Riot/Modules/Integrations/Widgets/Jitsi/JitsiService.swift index e7b9b43d5..aeade5370 100644 --- a/Riot/Modules/Integrations/Widgets/Jitsi/JitsiService.swift +++ b/Riot/Modules/Integrations/Widgets/Jitsi/JitsiService.swift @@ -16,8 +16,8 @@ import Foundation -#if canImport(JitsiMeet) -import JitsiMeet +#if canImport(JitsiMeetSDK) +import JitsiMeetSDK enum JitsiServiceError: Error { case widgetContentCreationFailed diff --git a/Riot/Modules/Integrations/Widgets/Jitsi/JitsiViewController.m b/Riot/Modules/Integrations/Widgets/Jitsi/JitsiViewController.m index 234b1bf8b..f93bcea75 100644 --- a/Riot/Modules/Integrations/Widgets/Jitsi/JitsiViewController.m +++ b/Riot/Modules/Integrations/Widgets/Jitsi/JitsiViewController.m @@ -19,7 +19,7 @@ #import "Riot-Swift.h" #if __has_include() -@import JitsiMeet; +@import JitsiMeetSDK; static const NSString *kJitsiDataErrorKey = @"error"; diff --git a/Riot/Modules/KeyBackup/Recover/Loading/KeyBackupRecoverDataLoadingViewModelType.swift b/Riot/Modules/KeyBackup/Recover/Loading/KeyBackupRecoverDataLoadingViewModelType.swift deleted file mode 100644 index 1ef8aab16..000000000 --- a/Riot/Modules/KeyBackup/Recover/Loading/KeyBackupRecoverDataLoadingViewModelType.swift +++ /dev/null @@ -1,37 +0,0 @@ -// File created from ScreenTemplate -// $ createScreen.sh KeyBackup/Recover/Loading KeyBackupRecoverDataLoading -/* - Copyright 2020 New Vector Ltd - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ - -import Foundation - -protocol KeyBackupRecoverDataLoadingViewModelViewDelegate: class { - func keyBackupRecoverDataLoadingViewModel(_ viewModel: KeyBackupRecoverDataLoadingViewModelType, didUpdateViewState viewSate: KeyBackupRecoverDataLoadingViewState) -} - -protocol KeyBackupRecoverDataLoadingViewModelCoordinatorDelegate: class { - func keyBackupRecoverDataLoadingViewModelDidRecover(_ viewModel: KeyBackupRecoverDataLoadingViewModelType) - func keyBackupRecoverDataLoadingViewModelDidCancel(_ viewModel: KeyBackupRecoverDataLoadingViewModelType) -} - -/// Protocol describing the view model used by `KeyBackupRecoverDataLoadingViewController` -protocol KeyBackupRecoverDataLoadingViewModelType { - - var viewDelegate: KeyBackupRecoverDataLoadingViewModelViewDelegate? { get set } - var coordinatorDelegate: KeyBackupRecoverDataLoadingViewModelCoordinatorDelegate? { get set } - - func process(viewAction: KeyBackupRecoverDataLoadingViewAction) -} diff --git a/Riot/Modules/KeyBackup/Setup/RecoveryKey/KeyBackupSetupRecoveryKeyViewController.swift b/Riot/Modules/KeyBackup/Setup/RecoveryKey/KeyBackupSetupRecoveryKeyViewController.swift deleted file mode 100644 index 751747364..000000000 --- a/Riot/Modules/KeyBackup/Setup/RecoveryKey/KeyBackupSetupRecoveryKeyViewController.swift +++ /dev/null @@ -1,234 +0,0 @@ -/* - Copyright 2019 New Vector Ltd - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ - -import UIKit - -final class KeyBackupSetupRecoveryKeyViewController: UIViewController { - - // MARK: - Constants - - private enum Constants { - static let animationDuration: TimeInterval = 0.3 - } - - // MARK: - Properties - - // MARK: Outlets - - @IBOutlet private weak var informationLabel: UILabel! - - @IBOutlet private weak var recoveryKeyBackgroundView: UIView! - - @IBOutlet private weak var recoveryKeyTitleLabel: UILabel! - @IBOutlet private weak var recoveryKeyLabel: UILabel! - - @IBOutlet private weak var separatorView: UIView! - - @IBOutlet private weak var makeCopyButton: UIButton! - - @IBOutlet private weak var madeCopyButtonBackgroundView: UIView! - @IBOutlet private weak var madeCopyButton: UIButton! - - // MARK: Private - - private var theme: Theme! - private var hasMadeACopy: Bool = false - private var viewModel: KeyBackupSetupRecoveryKeyViewModelType! - private var errorPresenter: MXKErrorPresentation! - private var activityPresenter: ActivityIndicatorPresenter! - private weak var skipAlertController: UIAlertController? - - // MARK: - Setup - - class func instantiate(with viewModel: KeyBackupSetupRecoveryKeyViewModelType) -> KeyBackupSetupRecoveryKeyViewController { - let viewController = StoryboardScene.KeyBackupSetupRecoveryKeyViewController.initialScene.instantiate() - viewController.viewModel = viewModel - viewController.theme = ThemeService.shared().theme - return viewController - } - - // MARK: - Life cycle - - override func viewDidLoad() { - super.viewDidLoad() - - // Do any additional setup after loading the view. - - self.title = VectorL10n.keyBackupSetupTitle - - self.activityPresenter = ActivityIndicatorPresenter() - self.errorPresenter = MXKErrorAlertPresentation() - - self.setupViews() - self.registerThemeServiceDidChangeThemeNotification() - self.update(theme: self.theme) - - self.viewModel.viewDelegate = self - } - - override var preferredStatusBarStyle: UIStatusBarStyle { - return self.theme.statusBarStyle - } - - // MARK: - Private - - private func update(theme: Theme) { - self.theme = theme - - self.view.backgroundColor = theme.headerBackgroundColor - - if let navigationBar = self.navigationController?.navigationBar { - theme.applyStyle(onNavigationBar: navigationBar) - } - - self.informationLabel.textColor = theme.textPrimaryColor - - self.recoveryKeyBackgroundView.backgroundColor = theme.backgroundColor - - self.recoveryKeyTitleLabel.textColor = theme.textPrimaryColor - self.recoveryKeyLabel.textColor = theme.textPrimaryColor - - self.separatorView.backgroundColor = theme.lineBreakColor - - theme.applyStyle(onButton: self.makeCopyButton) - - self.madeCopyButtonBackgroundView.backgroundColor = theme.backgroundColor - theme.applyStyle(onButton: self.madeCopyButton) - } - - private func registerThemeServiceDidChangeThemeNotification() { - NotificationCenter.default.addObserver(self, selector: #selector(themeDidChange), name: .themeServiceDidChangeTheme, object: nil) - } - - @objc private func themeDidChange() { - self.update(theme: ThemeService.shared().theme) - } - - private func setupViews() { - let skipBarButtonItem = MXKBarButtonItem(title: VectorL10n.keyBackupSetupSkipAction, style: .plain) { [weak self] in - self?.skipButtonAction() - } - self.navigationItem.rightBarButtonItem = skipBarButtonItem - - self.informationLabel.text = VectorL10n.keyBackupSetupRecoveryKeyInfo - self.recoveryKeyTitleLabel.text = VectorL10n.keyBackupSetupRecoveryKeyRecoveryKeyTitle - self.recoveryKeyLabel.text = self.viewModel.recoveryKey - - self.makeCopyButton.setTitle(VectorL10n.keyBackupSetupRecoveryKeyMakeCopyAction, for: .normal) - self.madeCopyButton.setTitle(VectorL10n.keyBackupSetupRecoveryKeyMadeCopyAction, for: .normal) - - self.updateMadeCopyButton() - } - - private func shareRecoveryKey() { - - // Set up activity view controller - let activityItems: [Any] = [ self.viewModel.recoveryKey ] - let activityViewController = UIActivityViewController(activityItems: activityItems, applicationActivities: nil) - - activityViewController.completionWithItemsHandler = { (activityType, completed, returnedItems, error) in - - // Enable made copy button only if user has selected an activity item - if completed { - self.hasMadeACopy = true - self.updateMadeCopyButton() - } - } - - // Configure source view when activity view controller is presented with a popover - if let popoverPresentationController = activityViewController.popoverPresentationController { - popoverPresentationController.sourceView = self.makeCopyButton - popoverPresentationController.sourceRect = self.makeCopyButton.bounds - popoverPresentationController.permittedArrowDirections = [.down, .up] - } - - self.present(activityViewController, animated: true) - } - - private func updateMadeCopyButton() { - self.madeCopyButton.isEnabled = self.hasMadeACopy - } - - private func render(viewState: KeyBackupSetupRecoveryKeyViewState) { - switch viewState { - case .loading: - self.renderLoading() - case .loaded: - self.renderLoaded() - case .error(let error): - self.render(error: error) - } - } - - private func renderLoading() { - self.view.endEditing(true) - self.activityPresenter.presentActivityIndicator(on: self.view, animated: true) - } - - private func renderLoaded() { - self.activityPresenter.removeCurrentActivityIndicator(animated: true) - } - - private func render(error: Error) { - self.errorPresenter.presentError(from: self, forError: error, animated: true, handler: nil) - } - - private func showSkipAlert() { - guard self.skipAlertController == nil else { - return - } - - let alertController = UIAlertController(title: VectorL10n.keyBackupSetupSkipAlertTitle, - message: VectorL10n.keyBackupSetupSkipAlertMessage, - preferredStyle: .alert) - - alertController.addAction(UIAlertAction(title: VectorL10n.continue, style: .cancel, handler: { action in - self.viewModel.process(viewAction: .skipAlertContinue) - })) - - alertController.addAction(UIAlertAction(title: VectorL10n.keyBackupSetupSkipAlertSkipAction, style: .default, handler: { action in - self.viewModel.process(viewAction: .skipAlertSkip) - })) - - self.present(alertController, animated: true, completion: nil) - self.skipAlertController = alertController - } - - // MARK: - Actions - - @IBAction private func makeCopyButtonAction(_ sender: Any) { - self.shareRecoveryKey() - } - - @IBAction private func madeCopyButtonAction(_ sender: Any) { - self.viewModel.process(viewAction: .madeCopy) - } - - private func skipButtonAction() { - self.viewModel.process(viewAction: .skip) - } -} - -// MARK: - KeyBackupSetupRecoveryKeyViewModelViewDelegate -extension KeyBackupSetupRecoveryKeyViewController: KeyBackupSetupRecoveryKeyViewModelViewDelegate { - func keyBackupSetupRecoveryKeyViewModel(_ viewModel: KeyBackupSetupRecoveryKeyViewModelType, didUpdateViewState viewSate: KeyBackupSetupRecoveryKeyViewState) { - self.render(viewState: viewSate) - } - - func keyBackupSetupPassphraseViewModelShowSkipAlert(_ viewModel: KeyBackupSetupRecoveryKeyViewModelType) { - self.showSkipAlert() - } -} diff --git a/Riot/Modules/KeyVerification/Common/KeyVerificationService.swift b/Riot/Modules/KeyVerification/Common/KeyVerificationService.swift index aeca8a37d..29368c83f 100644 --- a/Riot/Modules/KeyVerification/Common/KeyVerificationService.swift +++ b/Riot/Modules/KeyVerification/Common/KeyVerificationService.swift @@ -19,8 +19,7 @@ import Foundation final class KeyVerificationService { private let cameraAccessManager: CameraAccessManager - - private var authenticatedSessionFactory: AuthenticatedSessionViewControllerFactory? + private var supportSetupKeyVerificationByUser: [String: Bool] = [:] // Cached server response init() { diff --git a/Riot/Modules/KeyVerification/Device/SelfVerifyWait/KeyVerificationSelfVerifyWaitViewController.storyboard b/Riot/Modules/KeyVerification/Device/SelfVerifyWait/KeyVerificationSelfVerifyWaitViewController.storyboard index a75a46a5e..09e47bd40 100644 --- a/Riot/Modules/KeyVerification/Device/SelfVerifyWait/KeyVerificationSelfVerifyWaitViewController.storyboard +++ b/Riot/Modules/KeyVerification/Device/SelfVerifyWait/KeyVerificationSelfVerifyWaitViewController.storyboard @@ -66,7 +66,7 @@ Use the latest Riot on your other devices: -